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 | 535.147.05 |
Docker | 24.0.7 |
Compose | v2.21.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.3.1 |
JetPack | 5.1.1 |
Docker | 24.0.7 |
Compose | v2.21.0 |
Supported Jetson Devices
- Jetson Orin AGX 64GB
- Jetson Orin AGX 32GB
- Jetson Orin NX 16GB
- Jetson Xavier AGX
Setup
The following commands set up all dependencies for Isarsoft Perception.
# OS Updates
sudo apt update && sudo apt upgrade
# GPU Driver
sudo apt install nvidia-headless-535 nvidia-utils-535 libnvidia-decode-535 libnvidia-encode-535
# 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
There are two options for deploying Isarsoft Perception: via Deploy Token or Release Archive.
The Release Archive is a full copy of the software and is suitable for environments with restricted access to the internet. It contains everything to install and run the software in a single file archive. Updating the software involves copying another full sized archive of the most recent version.
Deployment via Deploy Token will fetch from a container and package registry automatically. This makes deployments more convenient and enables incremental updates, where only the most recent changes between releases are downloaded. It requires internet access or respective firewall exceptions and proxies for the registries.
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.
Option 1: Deploy Token (Recommended)
# Create a project directory.
mkdir perception && cd perception
# Add valid user and token here
export USER=<username>
export TOKEN=<token>
export VERSION=3.11.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=3.11.3
export PLATFORM=edge
# 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
Option 2: Release Archive
# Create a project directory
mkdir perception && cd perception
# Move software archive to this location and unpack
mv /path/to/perception-3.11.3-server.tar.gz .
tar -xzvf perception-3.11.3-server.tar.gz
# Import all docker images
docker load -i images.tar.gz
# Verify images were loaded
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 systemadmin
with password systemadmin
.