mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-11-01 11:20:32 +03:00
Adds a `-tensorrt-jp7` Frigate image for JetPack 7.2 / L4T R39.2 Jetson hosts, built on nvcr.io/nvidia/tensorrt:26.02-py3-igpu (TensorRT 10.11, CUDA 13, py3.12), keeping the existing JP6 path unchanged. ONNX Runtime GPU is built from source (no public aarch64 onnxruntime-gpu wheel), TensorRT-Python branch is selected by the base image, and TensorRT runtime library checks are major-version aware. VALIDATED on a real AGX Orin (L4T R39.2 / nv_tegra_release R39 rev 2.0): - image frigate:test-tensorrt-jp7 builds (rc=0, 16.3GB, sha256:c9e4d382f1603ee130ee4a7315b4f71f9461405e3785707251505e2d6d088df3) - ONNX Runtime 1.25.1 exposes CUDAExecutionProvider, and a real Add-model inference RAN on the iGPU CUDA EP (functional, not just listed) - frigate.util.model.get_ort_providers(False,"AUTO") = [CUDA, CPU] (CUDA first, CPU last, TensorRT EP excluded) -> the ONNX detector GPU-accelerates on JP7 - /etc/TENSORRT_VER = 10.11.0 Native `type: tensorrt` (.trt gen) + the ORT TensorRT EP stay DRAFT-GATED: the L4T R39 host ships NO libnvdla_compiler.so (absent from host AND base image), so `import tensorrt` and libonnxruntime_providers_tensorrt.so fail to load. ONNX detector GPU acceleration is the supported JP7 path; native trt is deferred. Build fixes the new noble/CUDA-13 base surfaced (beyond the plan): - build_nginx.sh: enable deb-src for the deb822 ubuntu.sources (Ubuntu 24.04) - tensorrt_libyolo.sh: strip -lnvToolsExt (removed in CUDA 13) + -lnvparsers (dropped in TensorRT 10) when those libs are absent - docker/main: noble/py3.12 build adjustments (Dockerfile, build_sqlite_vec.sh) Reproducible: `make -C docker/tensorrt ... local-trt-jp7` (JETPACK7_ARGS) on any arm64 builder; built on-device only because the GPU smoke test needs the iGPU.
37 lines
1.4 KiB
Bash
Executable File
37 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euxo pipefail
|
|
|
|
SCRIPT_DIR="/usr/local/src/tensorrt_demos"
|
|
|
|
# Clone tensorrt_demos repo
|
|
git clone --depth 1 https://github.com/NateMeyer/tensorrt_demos.git -b conditional_download
|
|
|
|
# CUDA 13 removed libnvToolsExt.so (NVTX is now header-only nvtx3). The plugin Makefile links
|
|
# -lnvToolsExt only for optional NVTX profiling annotations, so strip it when the lib is absent —
|
|
# the link then succeeds on JP7 / CUDA 13. No-op on CUDA 12 (JP6), where the lib still exists.
|
|
if ! ldconfig -p | grep -q 'libnvToolsExt\.so'; then
|
|
sed -i 's/-lnvToolsExt//g' ./tensorrt_demos/plugins/Makefile
|
|
fi
|
|
|
|
# TensorRT 10 (JP7 base) dropped libnvparsers.so (the legacy UFF/Caffe parsers). The plugin
|
|
# Makefile links -lnvparsers from an over-broad LIBS list, but the YOLO custom layer never uses
|
|
# it, so strip it when the lib is absent — the link then succeeds on TRT 10. No-op on TRT 8
|
|
# (JP5/JP6), where libnvparsers still ships.
|
|
if ! ldconfig -p | grep -q 'libnvparsers\.so'; then
|
|
sed -i 's/-lnvparsers//g' ./tensorrt_demos/plugins/Makefile
|
|
fi
|
|
|
|
# Build libyolo
|
|
if [ ! -e /usr/local/cuda ]; then
|
|
ln -s /usr/local/cuda-* /usr/local/cuda
|
|
fi
|
|
cd ./tensorrt_demos/plugins && make all -j$(nproc) computes="${COMPUTE_LEVEL:-}"
|
|
cp libyolo_layer.so /usr/local/lib/libyolo_layer.so
|
|
|
|
# Store yolo scripts for later conversion
|
|
cd ../
|
|
mkdir -p ${SCRIPT_DIR}/plugins
|
|
cp plugins/libyolo_layer.so ${SCRIPT_DIR}/plugins/libyolo_layer.so
|
|
cp -a yolo ${SCRIPT_DIR}/
|