Installation
Isarsoft Perception is compatible with two distinct platforms, the server
and edge
variants.
The server
platform refers to workstations and servers with dedicated NVIDIA GPUs, while the edge
platform is compatible with NVIDIA Jetson devices. The initial setup for the two platforms differs slightly.
The deployment is fully containerised and orchestrated via Docker and Docker Compose. The full dependency and compatibility matrix can be found below.
Dependency | Version |
---|---|
Operating System | Ubuntu Server 22.04 LTS |
GPU Driver | 550.54.14+ |
Docker | 25.0.5+ |
Compose | 2.25.0+ |
Info
Newer software versions for GPU Driver and Docker may be backwards compatible. Check the respective documentation to learn more.
Dependency | Version |
---|---|
Operating System | L4T 35.2+ |
JetPack | 5.1+ |
Docker | 25.0.5+ |
Compose | 2.25.0+ |
Supported Jetson Devices
- Jetson Orin AGX 64GB
- Jetson Orin AGX 32GB
- Jetson Orin NX 16GB
- Jetson Xavier AGX
Dependency | Version |
---|---|
Operating System | L4T 36.3.0 |
JetPack | 6.0 |
Docker | 25.0.5+ |
Compose | 2.25.0+ |
Supported Jetson Devices
- Jetson Orin AGX 64GB
- Jetson Orin AGX 32GB
- Jetson Orin NX 16GB
Setup
The following commands set up all dependencies for Isarsoft Perception.
Important Information on Secure Boot
If Secure Boot is enabled on your system you will be prompted with a dialog to enroll your MOK (Machine Owner Key) during the installation of the NVIDIA GPU driver. This is a safety feature of the operating system and hardware to avoid the execution of unauthorized or malicious code during the boot process. You can turn this feature off in your UEFI or follow the next steps to enroll the key.
The following dialogs will show up during the installation instructions below.
Enter a secure password. It will be entered again on next boot to verify the new drivers. The next dialog will show up once the system is rebooted (before the OS will boot):
Select "Enroll MOK" and enter the password again when prompted. Continue the boot process.
To verify the drivers are loaded properly, run nvidia-smi
in a terminal and verify the GPU(s) show up.
# OS Updates
sudo apt update && sudo apt upgrade
# GPU Driver
sudo apt install nvidia-headless-550 nvidia-utils-550 libnvidia-decode-550 libnvidia-encode-550
# Docker + GPU runtime
curl https://get.docker.com | sh && sudo systemctl --now enable docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install nvidia-docker2
# Reboot
sudo reboot
Docker Configuration
Add the properties default-runtime
, log-opts
and exec-opts
to the docker deamon configuration:
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"exec-opts": ["native.cgroupdriver=cgroupfs"]
}
Warning
Disabling systemd cgroup management in Docker via the exec-opts
property is the workaround for a known issue with nvidia-container-runtime resulting in loss of GPU access in containers.
Restart the docker deamon to apply new configuration:
Tip
To be able to run docker commands without sudo, add the user to the docker group:
Log out and log back in so that your group membership is re-evaluated. Running groups
should contain the docker group.
Tip
Changes can be verified by running docker info
.
Deployment
Isarsoft Perception is installed via Deploy Token. This will fetch from a container and package registry automatically, makes deployments more convenient and enables incremental updates. Only the most recent changes between releases are pulled from the registry. It requires internet access or respective firewall exceptions / http proxies.
Note
Many instructions in the documentation of Isarsoft Perception assume the top level project folder to be named perception
. Docker Compose will use this name as the project prefix and e.g. containers and volumes will be named accordingly. It is recommended to use the same naming schema as in the following instructions.
# Create a project directory
mkdir perception && cd perception
# Add valid user and token here
export USER=<username>
export TOKEN=<token>
export VERSION=4.1.3
export PLATFORM=server
# Fetch orchestration
curl --user "$USER:$TOKEN" "https://gitlab.com/api/v4/projects/13396821/packages/generic/perception/$VERSION-$PLATFORM/perception-$VERSION-$PLATFORM.tar.gz" | tar -xzvf -
# Fetch images
docker login -u $USER -p $TOKEN registry.gitlab.com
docker compose pull
# Verify images were downloaded
docker images
# Create a project directory
mkdir perception && cd perception
# Add valid user and token here
export USER=<username>
export TOKEN=<token>
export VERSION=4.1.3
export PLATFORM=edge5
# Fetch orchestration
curl --user "$USER:$TOKEN" "https://gitlab.com/api/v4/projects/13396821/packages/generic/perception/$VERSION-$PLATFORM/perception-$VERSION-$PLATFORM.tar.gz" | tar -xzvf -
# Fetch images
docker login -u $USER -p $TOKEN registry.gitlab.com
docker compose pull
# Verify images were downloaded
docker images
# Create a project directory
mkdir perception && cd perception
# Add valid user and token here
export USER=<username>
export TOKEN=<token>
export VERSION=4.1.3
export PLATFORM=edge6
# Fetch orchestration
curl --user "$USER:$TOKEN" "https://gitlab.com/api/v4/projects/13396821/packages/generic/perception/$VERSION-$PLATFORM/perception-$VERSION-$PLATFORM.tar.gz" | tar -xzvf -
# Fetch images
docker login -u $USER -p $TOKEN registry.gitlab.com
docker compose pull
# Verify images were downloaded
docker images
Launch Software
Consider changing settings in the .env
file. Launch the software:
Warning
Important: The first start will take up to 30 minutes while the device is running hardware specific optimizations. Frontend and API will be available right away, but none of the applications will run.
The frontend dashboard can now be accessed via https://[HOSTNAME/IP]:8443
. Default login information is user perception
with password perception
.