3.NVIDIA Deepstream开发指南中文版--Deepstream 环境配置

Deepstream 环境配置

NVIDIA® DeepStream 软件开发套件 (SDK) 是一个加速 AI 框架,用于构建智能视频分析 (IVA) 管道。 DeepStream 可在 NVIDIA® T4、NVIDIA® Ampere 和 NVIDIA® Jetson AGX Xavier™、NVIDIA® Jetson Xavier NX™、NVIDIA® Jetson AGX Orin™ 等平台上运行。

Jetson 平台配置

本节介绍如何在安装 DeepStream SDK 之前准备 Jetson 设备。

安装 Jetson SDK 组件

从 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

安装 librdkafka(为消息代理启用 Kafka 协议适配器)

  1. 从 GitHub 克隆 librdkafka 存储库:
$ git clone https://github.com/edenhill/librdkafka.git
  1. 配置和构建库:
$ cd librdkafka
$ git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
$ make
$ sudo make install
  1. 将生成的库复制到 deepstream 目录:
$ sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.1/lib
$ sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.1/lib

安装 DeepStream SDK

  • 方法一: 使用SDK Manager
    Additional SDKs 部分中选择 DeepStreamSDK 以及 JP 5.0.1 DP 软件组件进行安装。

  • 方法二:使用DeepStream tar包
    https://developer.nvidia.com/deepstream_sdk_v6.1.0_jetsontbz2

    1. 将 DeepStream 6.1 Jetson tar 包 deepstream_sdk_v6.1.0_jetson.tbz2 下载到 Jetson 设备。
    2. 输入以下命令以提取并安装 DeepStream SDK:
    $  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(参考应用程序)

  1. 导航到开发工具包上的示例目录。

  2. 输入以下命令以运行参考应用程序:

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>
  1. 要在 2D 平铺显示视图中显示标签,请在源上单击鼠标左键展开感兴趣的源。 要返回平铺显示,请右键单击窗口中的任意位置。

  2. 还支持源的键盘选择。 在运行应用程序的控制台上,按 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。

运行预编译的示例应用程序

  1. 进入到sources/apps/sample_apps 中选择的应用程序目录。

  2. 按照目录的 README 文件运行应用程序。

注意

如果应用程序遇到错误并且无法创建 Gst 元素,请删除 GStreamer 缓存,然后重试。 要删除 GStreamer 缓存,请输入以下命令: $ rm ${HOME}/.cache/gstreamer-1.0/registry.aarch64.bin

当针对没有现有引擎文件的模型运行应用程序时,文件生成和应用程序启动可能需要几分钟(取决于平台和模型)。 对于以后的运行,这些生成的引擎文件可以重复使用以加快加载速度。

Ubuntu上独立GPU的配置

本节介绍如何在安装 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 安装

输入以下命令以删除所有以前的 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 或更高版本的安装:

  1. 打开/opt/nvidia/deepstream/deepstream/中的uninstall.sh文件

  2. PREV_DS_VER 设置为 4.0

  3. 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 驱动程序 510.47.03

从 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

从以下网址下载并安装 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

以下是安装 TensorRT 8.2.5.1 的步骤:

  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
  1. 下载:

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

  1. 运行以下命令安装 TensorRT 8.2.5.1:
$ 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
      

安装 librdkafka(为消息代理启用 Kafka 协议适配器)

  1. 从 GitHub 克隆 librdkafka 存储库:
$ git clone https://github.com/edenhill/librdkafka.git
  1. 配置和构建库:
$ cd librdkafka
$ git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
$ make
$ sudo make install
  1. 将生成的库复制到 deepstream 目录:
$ sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.1/lib
$ sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.1/lib

安装DeepStream SDK

  • 方法一:使用 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(参考应用程序)

  • 转到示例目录并输入以下命令:
    $ 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。

运行预编译的示例应用程序

  1. 导航到sources/apps/sample_apps 中选择的应用程序目录。

  2. 按照该目录的 README 文件运行应用程序。

注意:

如果应用程序遇到错误并且无法创建 Gst 元素,请删除 GStreamer 缓存,然后重试。 要删除 GStreamer 缓存,请输入以下命令:

$ rm ${HOME}/.cache/gstreamer-1.0/registry.x86_64.bin

当为没有现有引擎文件的模型运行应用程序时,文件生成和应用程序启动可能需要几分钟(取决于平台和模型)。 对于以后的运行,这些生成的引擎文件可以重复使用以加快加载速度。

在没有 X server的情况下运行

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 当前和早期版本中的平台和操作系统兼容性的信息。

Jetson model Platform and OS Compatibility

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

Vision­Works

Vision­Works 1.6

Vision­Works 1.6

Vision­Works 1.6.502

Vision­Works 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

dGPU model Platform and OS Compatibility

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 Triton 推理服务器使用指南

要将 DeepStream 6.1 部署 (Triton 22.03) 中的 Triton 版本迁移到更新版本(例如 Triton 22.04 或更高版本),请按照 DeepStream Triton 迁移指南中的说明进行操作。

dGPU

  1. 拉取 DeepStream Triton 推理服务器 docker
docker pull nvcr.io/nvidia/deepstream:6.1-triton
  1. 启动docker
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 时,可能需要几分钟才能启动,因为它必须生成计算缓存。

Jetson

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推理

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=0use-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>

你可能感兴趣的:(Deepstream开发指南,NVIDIA,GPU,DeepStream,python,人工智能)