NVIDIA® DeepStream 软件开发套件 (SDK) 是一个加速 AI 框架,用于构建智能视频分析 (IVA) 管道。 DeepStream 可在 NVIDIA® T4、NVIDIA® Ampere 和 NVIDIA® Jetson AGX Xavier™、NVIDIA® Jetson Xavier NX™、NVIDIA® Jetson AGX Orin™ 等平台上运行。
本节介绍如何在安装 DeepStream SDK 之前准备 Jetson 设备。
从 https://developer.nvidia.com/embedded/jetpack 下载 NVIDIA SDK Manager。 您将使用它来安装 JetPack 5.0.1 DP(对应于 L4T 34.1.1 版本)
NVIDIA SDK Manager 是一个图形应用程序,它刷新并安装 JetPack 包。
刷新过程大约需要 10-30 分钟,具体取决于主机系统。
如果您使用的是 Jetson Xavier NX 开发者套件,您可以从 https://developer.nvidia.com/embedded/jetpack 下载 SD 卡镜像。 它与 CUDA、TensorRT 和 cuDNN 一起打包。
输入以下命令以安装必备软件包:
$ sudo apt install \
libssl1.1 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev
$ git clone https://github.com/edenhill/librdkafka.git
$ cd librdkafka
$ git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
$ make
$ sudo make install
$ sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.1/lib
$ sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.1/lib
方法一: 使用SDK Manager
从 Additional SDKs
部分中选择 DeepStreamSDK
以及 JP 5.0.1 DP 软件组件进行安装。
方法二:使用DeepStream tar包
https://developer.nvidia.com/deepstream_sdk_v6.1.0_jetsontbz2
deepstream_sdk_v6.1.0_jetson.tbz2
下载到 Jetson 设备。$ sudo tar -xvf deepstream_sdk_v6.1.0_jetson.tbz2 -C /
$ cd /opt/nvidia/deepstream/deepstream-6.1
$ sudo ./install.sh
$ sudo ldconfig
方法三:使用DeepStream Debian包:
https://developer.nvidia.com/deepstream-6.1_6.1.0-1_arm64deb
将 DeepStream 6.1 Jetson Debian 软件包 deepstream-6.1_6.1.0-1_arm64.deb 下载到 Jetson 设备。 输入以下命令:
sudo apt-get install ./deepstream-6.1_6.1.0-1_arm64.deb
方法四:使用 Docker 容器 DeepStream docker 容器在 NGC 上可用。 请参阅 Docker 容器部分以了解有关使用 docker 容器开发和部署 DeepStream 的信息。
导航到开发工具包上的示例目录。
输入以下命令以运行参考应用程序:
deepstream-app -c <path_to_config_file>
其中
是参考应用程序配置文件之一的路径名,位于 configs/deepstream-app/
中。 有关可用文件的列表,请参阅包内容。
可以使用 deepstream-app 运行的配置文件:
a. source30_1080p_dec_infer-resnet_tiled_display_int8.txt
b. source30_1080p_dec_preprocess_infer-resnet_tiled_display_int8.txt
c. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
d. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_gpu1.txt (dGPU only)
e. source1_usb_dec_infer_resnet_int8.txt
f. source1_csi_dec_infer_resnet_int8.txt (Jetson only)
g. source2_csi_usb_dec_infer_resnet_int8.txt (Jetson only)
h. source6_csi_dec_infer_resnet_int8.txt (Jetson only)
i. source2_1080p_dec_infer-resnet_demux_int8.txt
j. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.yml
k. source30_1080p_dec_infer-resnet_tiled_display_int8.yml
注意:
您可以在 /opt/nvidia/deepstream/deepstream-6.1/samples
目录下找到示例配置文件。 输入此命令以查看应用程序使用情况:
$ deepstream-app --help
要保存 TensorRT 引擎/计划文件,请运行以下命令:
$ sudo deepstream-app -c <path_to_config_file>
要在 2D 平铺显示视图中显示标签,请在源上单击鼠标左键展开感兴趣的源。 要返回平铺显示,请右键单击窗口中的任意位置。
还支持源的键盘选择。 在运行应用程序的控制台上,按 z 键,然后按所需的行索引(0 到 9),然后按列索引(0 到 9)以展开源。 要恢复 2D 平铺显示视图,请再次按 z。
安装 DeepStream SDK 后,在 Jetson 设备上运行以下命令以提升时钟频率:
$ sudo nvpmodel -m 0
$ sudo jetson_clocks
注意
对于 Jetson Xavier NX,运行 sudo nvpmodel -m 8 而不是 0。
进入到sources/apps/sample_apps 中选择的应用程序目录。
按照目录的 README 文件运行应用程序。
注意
如果应用程序遇到错误并且无法创建 Gst 元素,请删除 GStreamer 缓存,然后重试。 要删除 GStreamer 缓存,请输入以下命令: $ rm ${HOME}/.cache/gstreamer-1.0/registry.aarch64.bin
当针对没有现有引擎文件的模型运行应用程序时,文件生成和应用程序启动可能需要几分钟(取决于平台和模型)。 对于以后的运行,这些生成的引擎文件可以重复使用以加快加载速度。
本节介绍如何在安装 DeepStream SDK 之前准备带有 NVIDIA dGPU(独立GPU) 设备的 Ubuntu x86_64 系统。
注意
本文档使用术语 dGPU(discrete GPU)来指代 NVIDIA GPU 扩展卡产品,例如 NVIDIA Tesla® T4、NVIDIA GeForce® GTX 1080 和 NVIDIA GeForce® RTX 2080。此版本的 DeepStream SDK 在特定的 dGPU 产品上运行 在 NVIDIA 驱动程序 510.47.03 和 NVIDIA TensorRT™ 8.2.5.1 及更高版本支持的 x86_64 平台上。
您必须安装以下组件:
Ubuntu 20.04
GStreamer 1.16.2
NVIDIA driver 510.47.03
CUDA 11.6 Update 1
TensorRT 8.2.5.1
输入以下命令以删除所有以前的 DeepStream 3.0 或以前的安装:
$ sudo rm -rf /usr/local/deepstream /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnv* /usr/bin/deepstream* /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libnvdsgst*
/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream*
/opt/nvidia/deepstream/deepstream*
$ sudo rm -rf /usr/lib/x86_64-linux-gnu/libv41/plugins/libcuvidv4l2_plugin.so
要删除 DeepStream 4.0 或更高版本的安装:
打开/opt/nvidia/deepstream/deepstream/中的uninstall.sh
文件
将 PREV_DS_VER
设置为 4.0
以 sudo ./uninstall.sh
身份运行以下脚本
在安装 DeepStream SDK 之前,输入以下命令来安装必要的软件包:
$ sudo apt install \
libssl1.1 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev \
gcc \
make \
git \
python3
从 NVIDIA Unix 驱动程序页面下载并安装 NVIDIA 驱动程序 510.47.03:https://www.nvidia.com/Download/driverResults.aspx/186156/en-us
运行以下命令:
$chmod 755 NVIDIA-Linux-x86_64-510.47.03.run
$sudo ./NVIDIA-Linux-x86_64-510.47.03.run
从以下网址下载并安装 CUDA Toolkit 11.6.1:https://developer.nvidia.com/cuda-11-6-1-download-archive
在此页面中,提到了 NVIDIA Linux GPU 驱动程序 510.47.03
注意:
如果您在安装 cuda 时发现以下错误,请参阅 https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/
W: GPG error: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC E: The repository ‘https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 InRelease’ is no longer signed.。
以下是安装 TensorRT 8.2.5.1 的步骤:
$ sudo rm /etc/apt/sources.list.d/*cuda*
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
$ sudo apt-get update
TensorRT 8.2 GA Update 4 for Ubuntu 20.04 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4 and 11.5 DEB
下载地址:
https://developer.nvidia.com/compute/machine-learning/tensorrt/secure/8.2.5.1/local_repos/nv-tensorrt-repo-ubuntu2004-cuda11.4-trt8.2.5.1-ga-20220505_1-1_amd64.deb
$ sudo dpkg -i nv-tensorrt-repo-ubuntu2004-cuda11.4-trt8.2.5.1-ga-20220505_1-1_amd64.deb
$ sudo apt-key add /var/nv-tensorrt-repo-ubuntu2004-cuda11.4-trt8.2.5.1-ga-20220505/82307095.pub
$ sudo apt-get update
$ sudo apt install tensorrt
注意:
在安装 tensorRT 包时,使用终端上显示的命令安装密钥。
安装特定的 cudnn 版本,例如 cudnn-8.4.0.27,请在安装 TensorRT 之前按照以下步骤操作:
从以下网址下载适用于 Ubuntu 20.04 和 CUDA 11.x 本地 repo 包的 cuDNN 8.4.0:
https://developer.nvidia.com/compute/cudnn/secure/8.4.0/local_installers/11.6/cudnn-local-repo-ubuntu2004-8.4.0.27_1.0-1_amd64.deb
运行以下命令进行安装:
$sudo dpkg -i cudnn-local-repo-ubuntu2004-8.4.0.27_1.0-1_amd64.deb
$sudo apt-get update
$sudo apt install libcudnn8=8.4.0.27-1+cuda11.6 libcudnn8-dev=8.4.0.27-1+cuda11.6
$ git clone https://github.com/edenhill/librdkafka.git
$ cd librdkafka
$ git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
$ make
$ sudo make install
$ sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.1/lib
$ sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.1/lib
方法一:使用 DeepStream Debian 软件包
下载 DeepStream 6.1 dGPU Debian 软件包 deepstream-6.1_6.1.0-1_amd64.deb
:
https://developer.nvidia.com/deepstream-6.1_6.1.0-1_amd64deb
输入命令:
$ sudo apt-get install ./deepstream-6.1_6.1.0-1_amd64.deb
方法二:下载DeepStream tar包:
https://developer.nvidia.com/deepstream_sdk_v6.1.0_x86_64.tbz2
导航到下载的 DeepStream 包的位置以提取并安装 DeepStream SDK:
$ sudo tar -xvf deepstream_sdk_v6.1.0_x86_64.tbz2 -C /
$ cd /opt/nvidia/deepstream/deepstream-6.1/
$ sudo ./install.sh
$ sudo ldconfig
方法 3:使用 Docker 容器 DeepStream docker 容器在 NGC 上可用。 请参阅 Docker 容器部分以了解有关使用 docker 容器开发和部署 DeepStream 的信息。
$ deepstream-app -c <path_to_config_file>
其中
是参考应用程序的配置文件之一的路径名,可在 configs/deepstream-app
中找到。 有关可用文件的列表,请参阅包内容。注意:
要转储引擎文件,请运行以下命令:
$ sudo deepstream-app -c <path_to_config_file>
您可以在 /opt/nvidia/deepstream/deepstream-6.1/samples
目录下找到示例配置文件。 输入此命令以查看应用程序使用情况:
$ deepstream-app --help
要在 2D 平铺显示视图中显示标签,请在源上单击鼠标左键展开感兴趣的源。 要返回平铺显示,请右键单击窗口中的任意位置。
还支持源的键盘选择。 在运行应用程序的控制台上,按 z 键,然后按所需的行索引(0 到 9),然后按列索引(0 到 9)以展开源。 要恢复 2D 平铺显示视图,请再次按 z。
导航到sources/apps/sample_apps 中选择的应用程序目录。
按照该目录的 README 文件运行应用程序。
注意:
如果应用程序遇到错误并且无法创建 Gst 元素,请删除 GStreamer 缓存,然后重试。 要删除 GStreamer 缓存,请输入以下命令:
$ rm ${HOME}/.cache/gstreamer-1.0/registry.x86_64.bin
当为没有现有引擎文件的模型运行应用程序时,文件生成和应用程序启动可能需要几分钟(取决于平台和模型)。 对于以后的运行,这些生成的引擎文件可以重复使用以加快加载速度。
SDK 提供的默认配置文件将基于 EGL 的 nveglglessink
作为默认渲染器(在 [sink]
组中由 type=2
表示)。 渲染器需要一个正在运行的 X server,如果没有它就会失败。 在没有 X server的情况下,DeepStream 参考应用程序提供了通过 RTSP 流式传输输出的替代功能。 这可以通过在配置文件中添加一个 RTSP 输出接收器组来启用。 有关示例,请参阅 source30_1080p_dec_infer-resnet_tiled_display_int8.txt
文件中的 [sink2]
组。 不要忘记通过为相应的接收器组设置 enable=0
来禁用 nveglglessink
渲染器。
下表提供了有关 DeepStream 当前和早期版本中的平台和操作系统兼容性的信息。
DS release |
DS 4.0.2 (Unified) |
DS 5.0 GA, 5.0.1, 5.1 (Unified) |
DS 6.0 |
DS 6.0.1 |
DS 6.1 |
---|---|---|---|---|---|
Jetson platforms |
Nano, AGX Xavier, TX2, TX1 |
Nano, AGX Xavier, TX2, TX1, Jetson NX |
Nano, AGX Xavier, TX2, TX1, Jetson NX |
Nano, AGX Xavier, TX2, TX1, Jetson NX |
AGX Xavier, Jetson NX, Jetson Orin |
OS |
L4T Ubuntu 18.04 |
L4T Ubuntu 18.04 |
L4T Ubuntu 18.04 |
L4T Ubuntu 18.04 |
L4T Ubuntu 20.04 |
JetPack release |
4.3 |
4.4 GA (4.5.1 GA for DS 5.1) |
4.6 GA |
4.6.1 GA |
5.0.1 DP |
L4T release |
32.3.1 |
32.4.3 (32.5.1 for DS 5.1) |
32.6.1 |
32.7.1 |
34.1.1 |
CUDA release |
CUDA 10.0 |
CUDA 10.2 |
CUDA 10.2 |
CUDA 10.2 |
CUDA 11.4 |
cuDNN release |
cuDNN 7.6.3 |
cuDNN 8.0.0.x |
cuDNN 8.2.1.32 |
cuDNN 8.2.1.32 |
cuDNN 8.3.2.49 |
TensorRT release |
TRT 6.0.1 |
TRT 7.1.3 |
TRT 8.0.1 |
TRT 8.2.1 |
TRT 8.4.0.11 |
OpenCV release |
OpenCV 4.1 |
OpenCV 4.1.1 |
OpenCV 4.1.1 |
OpenCV 4.1.1 |
OpenCV 4.2.0 |
VisionWorks |
VisionWorks 1.6 |
VisionWorks 1.6 |
VisionWorks 1.6.502 |
VisionWorks 1.6.502 |
NA |
GStreamer |
GStreamer 1.14.1 |
GStreamer 1.14.1 |
GStreamer 1.14.5 |
GStreamer 1.14.5 |
GStreamer 1.16.2 |
Docker image |
deepstream-l4t:4.0.2 |
deepstream-l4t:5.0, deepstream-l4t:5.0.1, deepstream-l4t:5.1 |
deepstream-l4t:6.0-ga |
deepstream-l4t:6.0.1 |
deepstream-l4t:6.1 |
DS release |
DS 4.0.2 (Unified) |
DS 5.0 GA, 5.0.1 (Unified), 5.1 |
DS 6.0 |
DS 6.0.1 |
DS 6.1 |
---|---|---|---|---|---|
GPU platforms |
P4, T4, V100 |
P4, T4, V100, A100 (DS 5.1) |
P4, T4, V100, A100 |
P4, T4, V100, A100 |
T4, V100, A2, A10, A30, A100, RTX Ampere (Ax000/RTX30x0) |
OS |
Ubuntu 18.04 |
Ubuntu 18.04 RHEL 8.x |
Ubuntu 18.04 RHEL 8.x |
Ubuntu 18.04 RHEL 8.x |
Ubuntu 20.04 |
GCC |
GCC 7.3.0 |
GCC 7.3.0 |
GCC 7.3.0 |
GCC 7.3.0 |
GCC 9.4.0 |
CUDA release |
CUDA 10.1 |
CUDA 10.2 ( Cuda 11.1 for DS 5.1) |
CUDA 11.4.1 |
CUDA 11.4.1 |
CUDA 11.6.1 |
cuDNN release |
cuDNN 7.6.5+ |
cuDNN 7.6.5+ (CuDNN 8.0+ for DS 5.1) |
cuDNN 8.2+ |
cuDNN 8.2+ |
cuDNN 8.4.0.27 |
TRT release |
TRT 6.0.1 |
TRT 7.0.0 (TRT 7.2.2 for DS 5.1) |
TRT 8.0.1 |
TRT 8.0.1 |
TRT 8.2.5.1 |
Display Driver |
R418+ |
R450.51 (R460.32 for DS 5.1) |
R470.63.01 |
R470.63.01 |
R510.47.03 |
VideoSDK release |
SDK 9.0 |
SDK 9.1 |
SDK 9.1 |
SDK 9.1 |
SDK 9.1 |
OFSDK release |
1.0.10 |
1.0.10 |
2.0.23 |
2.0.23 |
2.0.23 |
GStreamer release |
GStreamer 1.14.1 |
GStreamer 1.14.1 |
GStreamer 1.14.5 |
GStreamer 1.14.5 |
GStreamer 1.16.2 |
OpenCV release |
OpenCV 3.3.1 |
OpenCV 3.4.0 |
OpenCV 3.4.0 |
OpenCV 3.4.0 |
OpenCV 4.2.0 |
Docker image |
deepstream:4.0.2 |
deepstream:5.0, deepstream:5.0.1, deepstream:5.1 |
deepstream:6.0-ga |
deepstream:6.0.1 |
deepstream:6.1 |
注意:
默认情况下,OpenCV 已被弃用。 但是,通过在这些组件的 Makefile 中设置 WITH_OPENCV=1,可以在 nvinfer (nvdsinfer)
和 dsexample (gst-dsexample)
等插件中启用 OpenCV。 请参阅组件自述文件以获取更多说明。
要将 DeepStream 6.1 部署 (Triton 22.03) 中的 Triton 版本迁移到更新版本(例如 Triton 22.04 或更高版本),请按照 DeepStream Triton 迁移指南中的说明进行操作。
docker pull nvcr.io/nvidia/deepstream:6.1-triton
docker run --gpus "device=0" -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -e CUDA_CACHE_DISABLE=0 nvcr.io/nvidia/deepstream:6.1-triton
注意:
x86 和 Jetson 的 triton docker 基于 tritonserver 22.03 docker,并具有 Ubuntu 20.04。
首次启动 triton docker 时,可能需要几分钟才能启动,因为它必须生成计算缓存。
DeepStream Triton 容器映像 (nvcr.io/nvidia/deepstream-l4t:6.1-triton
) 预装了 Triton 推理服务器和支持的后端库。
为了直接在设备上运行 Triton 推理服务器,即没有 docker,需要设置 Triton 服务器。
转到示例目录并运行以下命令来设置 Triton 服务器和后端。
$ cd /opt/nvidia/deepstream/deepstream/samples/
$ sudo ./triton_backend_setup.sh
注意:
默认情况下,脚本将下载 Triton Server 2.20 版。 要设置任何其他版本,请相应地更改包路径。
脚本默认将 Triton 后端安装到 /opt/nvidia/deepstream/deepstream/lib/triton_backends
中。 用户可以更新特定文件夹的 infer_config 设置,如下所示:
model_repo {
backend_dir: /opt/nvidia/tritonserver/backends/
}
DLA 是 Jetson AGX Xavier 和 Jetson NX 平台上的深度学习加速器。 这两个平台都有两个 DLA 引擎。 DeepStream 可以配置为通过 Gst-nvinfer 插件在任一 DLA 引擎上运行推理。 可以将 Gst-nvinfer 插件的一个实例以及模型的单个实例配置为在单个 DLA 引擎或 GPU 上执行。 但是,可以将多个 Gst-nvinfer 插件实例配置为使用相同的 DLA。 要配置 Gst-nvinfer 使用 DLA 引擎进行推理,请修改 nvinfer 组件配置文件中的相应属性(例如:samples/configs/deepstream-app/config_infer_primary.txt
):在 [property]
组中设置 enable-dla=1
。 根据要使用的 DLA 引擎设置 use-dla-core=0
或 use-dla-core=1
。
DeepStream 确实支持并行使用 GPU 和 DLA 进行推理。 您可以在单独的进程或单个进程中运行它。 您将需要配置为在 GPU、DLA0 和 DLA1 上运行的三组独立配置:
当 GPU 和 DLA 在不同的进程中运行时,从运行 DLA 配置的终端将环境变量 CUDA_DEVICE_MAX_CONNECTIONS
设置为 1。
DeepStream 参考应用程序支持在同一进程中进行多个配置。 要在同一进程中运行 DLA 和 GPU,请将环境变量 CUDA_DEVICE_MAX_CONNECTIONS
设置为 32
:
$ deepstream-app -c <gpuconfig> -c <dla0config> -c <dla1config>