Skip to content

Container Images

Pre-built EdgeFirst Profiler images are published to ghcr.io/edgefirstai/profiler-cli on the GitHub Container Registry with every release. Each variant bundles the profiler binary plus a matching inference runtime, so no Python environment, installer script, or runtime library install is needed on the host — pull the image and run.

Tag matrix

Tag Architectures Contents When to use
core amd64 + arm64 Binary only, no inference runtime Base image (FROM) for bringing your own runtime
onnx amd64 + arm64 CPU ONNX Runtime CPU ONNX inference, CI, development
tflite amd64 + arm64 TFLite C++ runtime (libtensorflow-lite.so) CPU TFLite inference
imx95 arm64 only tflite plus the Neutron delegate and driver (eIQ SDK 3.0.1) NXP i.MX 95 Neutron NPU
imx8mp arm64 only tflite plus the VX delegate and Vivante OpenVX stack NXP i.MX 8M Plus VSI NPU
cuda amd64 + arm64 GPU ONNX Runtime with CUDA 12.6 / cuDNN 9 NVIDIA discrete GPU (amd64) or Jetson (arm64)
latest amd64 + arm64 Alias for onnx CPU only

These are moving aliases that track the newest release. To pin a release, use the immutable VERSION-VARIANT form (for example 1.16.1-onnx); the bare VERSION tag pins that release's CPU onnx image.

onnx / latest is CPU-only

The default image runs inference on the CPU ONNX Runtime execution provider. Throughput measured on the onnx or latest tag does not reflect GPU performance — GPU measurement requires the cuda tag.

Persistent state and file ownership

The container keeps its persistent state — the download cache and the EdgeFirst Studio auth token — under /config. Mount a volume there so logins and cached datasets survive across runs; the examples below use a named volume called edgefirst.

The images run as root by default, so NPU/GPU device access and real-time scheduling work without extra flags. Results written to a bind-mounted working directory are reassigned to that directory's owner automatically, so they come out owned by your user; override the target owner with --output-owner <uid:gid|username> or the EDGEFIRST_OUTPUT_OWNER environment variable. To run unprivileged instead, pass --user "$(id -u):$(id -g)".

Running the dashboard

The default invocation launches the interactive terminal dashboard. The -it flags are required for the TUI:

docker run -it --rm -v edgefirst:/config ghcr.io/edgefirstai/profiler-cli:onnx

Press F2 to connect to EdgeFirst Studio and pull models and validation sessions — the login token is stored in the named volume and reused across runs.

Running a validation from the command line

To profile local files non-interactively, bind-mount a working directory as /workdir and pass paths relative to it:

docker run --rm \
  -v edgefirst:/config -v "$PWD":/workdir \
  ghcr.io/edgefirstai/profiler-cli:onnx \
  validate --model /workdir/model.onnx --images /workdir/val --output /workdir/results

The same form works with every variant — add the device or GPU flags for your target from the table below.

Per-target device flags

Target Tag Extra docker run flags
NVIDIA discrete GPU (amd64) cuda --gpus all (requires nvidia-container-toolkit on the host)
NVIDIA Jetson / Orin (arm64) cuda --runtime nvidia (the L4T container stack does not support --gpus)
NXP i.MX 95 Neutron NPU imx95 --device /dev/neutron0 plus the board's DMA-heap node (ls /dev/dma_heap/), or --privileged
NXP i.MX 8M Plus VSI NPU imx8mp --device /dev/galcore plus the board's DMA-heap node, or --privileged

On the NXP targets, --privileged is the simplest and currently recommended way to grant the NPU device, the DMA heaps, and the GPU used for decode and preprocessing in one flag. The i.MX 95 image bundles the Neutron delegate and driver, but the matching Neutron firmware must be installed on the host — the kernel loads it from the host filesystem, not from inside the container.

Real-time inference scheduling needs CAP_SYS_NICE: it is included in --privileged, or grant it alone with --cap-add SYS_NICE. Without it the run still works at normal scheduling priority.

See the per-target pages for the runtime details behind each variant: Linux, NVIDIA Jetson Orin, NXP i.MX 95, and NXP i.MX 8M Plus.