Configure The Runtime Environment

The section discusses how to configure the host system for Savant modules execution. Savant modules and adapters are run in the docker environment. This document describes how to configure the dockerized runtime.

General Requirements

Savant runs on top of DeepStream ecosystem, therefore, it requires DeepStream to be supported by the host system. The section observes the supported configurations. The recommended spare space in a filesystem where docker images are stored is 15 GB.

Data Center, Professional And Desktop Hardware

Docker with Compose, Nvidia GPU drivers R525 (data center hardware), 530+ professional and desktop hardware;

Edge Hardware

Docker with Compose, Jetpack 6.0 DP on Jetson AGX Orin, Orin NX, Orin Nano.

Previous Savant Versions

Device

Support Notes

JetPack Requirements

Jetson Nano 1st gen, TX1, TX2

Not supported

Not supported

Jetson Xavier Family

Savant 0.2.x

Jetpack 5.1.2, 5.1.3

Jetson Orin Family

Savant 0.2.x

Jetpack 5.1.2, 5.1.3

Nvidia Jetson Setup

An Nvidia Jetson device is almost ready to run Savant after setup. You only need to install Compose plugin for Docker. Follow the official guide to install it.

After the installation disable the default Nvidia runtime for all images to properly use Savant sample compose files. This is necessary because particular containers can work in GPU-accelerated modes and others in CPU-only modes. To disable the runtime for all images, remove the following line from the /etc/docker/daemon.json file like demonstrated:

{
  "default-runtime": "nvidia",  /* remove this line */
  "runtimes": {
     "nvidia": {
         "path": "nvidia-container-runtime",
         "runtimeArgs": []
     }
  }
}

Restart the Docker service to apply the changes:

sudo systemctl restart docker

Note

This step is crucial for the Jetson Orin Nano device because it has particular limitations because of NVENC absence and, thus, requires AO-RTSP to work on CPU.

Ubuntu 22.04 Setup

At the current moment, we provide the instruction on how to configure Ubuntu 22.04 runtime. If you use another operation system, adapt the instructions to your OS.

Update Packages and Install Basic Tools

sudo apt-get update
sudo apt-get install -y git git-lfs curl -y

Install Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Install Nvidia Drivers

sudo apt install --no-install-recommends nvidia-driver-535
sudo reboot

Install Nvidia Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

Test The Nvidia Container Runtime Works Properly (X86 only)

sudo docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi

Test Docker Ecosystem Works Properly

If you are on X86 + Nvidia dGPU:

sudo docker compose -f samples/opencv_cuda_bg_remover_mog2/docker-compose.x86.yml up
# press Ctrl+C to stop the container

If you are on Jetson:

sudo docker compose -f samples/opencv_cuda_bg_remover_mog2/docker-compose.l4t.yml up
# press Ctrl+C to stop the container

Check that streaming works properly:

ffplay rtsp://127.0.0.1:554/stream/road-traffic-processed

You must see the video stream as demonstrated in the following Youtube video:

Disable SUDO for Docker

We often assume that Docker is available without sudo, for simplicity you can add your user into the docker group to avoid using sudo.

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker