快速入门指南#

Jetson [不适用于 NVAIE 客户]#

本节介绍如何在 Jetson 设备上使用 DeepStream SDK。

提升时钟频率#

安装 DeepStream SDK 后,在 Jetson 设备上运行以下命令以提升时钟频率

$ sudo nvpmodel -m 0
$ sudo jetson_clocks

您应该在运行 DeepStream 应用程序之前运行这些命令。

运行 deepstream-app(参考应用程序)#

  1. 导航到开发套件上的 configs/deepstream-app 目录。

    $ cd /opt/nvidia/deepstream/deepstream-7.1/samples/configs/deepstream-app

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

    # deepstream-app -c <path_to_config_file>
    
    e.g. $deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display_int8.txt
    

    其中 <path_to_config_file> 是参考应用程序的配置文件之一的路径名,位于 configs/deepstream-app/ 中。有关可用文件的列表,请参阅 configs/deepstream-app/ 中的软件包内容。

    可以与 deepstream-app 一起运行的配置文件

    1. source30_1080p_dec_infer-resnet_tiled_display_int8.txt

    2. source30_1080p_dec_preprocess_infer-resnet_tiled_display_int8.txt

    3. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

    4. source1_usb_dec_infer_resnet_int8.txt

    5. source1_csi_dec_infer_resnet_int8.txt

    6. source2_csi_usb_dec_infer_resnet_int8.txt

    7. source6_csi_dec_infer_resnet_int8.txt

    8. source2_1080p_dec_infer-resnet_demux_int8.txt

    9. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.yml

    10. source30_1080p_dec_infer-resnet_tiled_display_int8.yml

    11. source4_1080p_dec_preprocess_infer-resnet_preprocess_sgie_tiled_display_int8.txt

    12. source2_dewarper_test.txt

注意

注意

  • 您可以在 /opt/nvidia/deepstream/deepstream-7.1/samples 目录下找到示例配置文件。输入此命令以查看应用程序用法

    $ deepstream-app --help
    
  • 要保存 TensorRT Engine/Plan 文件,请运行以下命令

    $ sudo deepstream-app -c <path_to_config_file>
    
  1. 要在 2D 平铺显示视图中显示标签,请使用鼠标左键单击源来展开感兴趣的源。要返回到平铺显示,请在窗口中的任意位置右键单击

  2. 也支持键盘选择源。在运行应用程序的控制台上,按 z 键,后跟所需的行索引(0 到 9),然后是列索引(0 到 9)以展开源。要恢复 2D 平铺显示视图,请再次按 z

预期输出 (deepstream-app)#

下图显示了使用 source30_1080p_dec_infer-resnet_tiled_display_int8.txt 配置的 deepstream-app 的预期输出

DeepStream Reference Application Architecture

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

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

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

    注意

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

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

适用于 Ubuntu 的 dGPU#

本节介绍如何在 x86 机器上使用 DeepStream SDK。

运行 deepstream-app(参考应用程序)#

  • 导航到开发套件上的 configs/deepstream-app 目录。

    $ cd /opt/nvidia/deepstream/deepstream-7.1/samples/configs/deepstream-app

  • 输入以下命令以运行参考应用程序

    # deepstream-app -c <path_to_config_file>
    
    e.g. $deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display_int8.txt
    

    其中 <path_to_config_file> 是参考应用程序的配置文件之一的路径名,位于 configs/deepstream-app 中。有关可用文件的列表,请参阅 configs/deepstream-app/ 中的软件包内容。

    可以与 deepstream-app 一起运行的配置文件

    1. source30_1080p_dec_infer-resnet_tiled_display_int8.txt

    2. source30_1080p_dec_preprocess_infer-resnet_tiled_display_int8.txt

    3. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

    4. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_gpu1.txt

    5. source1_usb_dec_infer_resnet_int8.txt

    6. source2_1080p_dec_infer-resnet_demux_int8.txt

    7. source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.yml

    8. source30_1080p_dec_infer-resnet_tiled_display_int8.yml

    9. source4_1080p_dec_preprocess_infer-resnet_preprocess_sgie_tiled_display_int8.txt

    10. source2_dewarper_test.txt

注意

注意

  • 要转储引擎文件,请运行以下命令

    $ sudo deepstream-app -c <path_to_config_file>
    
  • 您可以在 /opt/nvidia/deepstream/deepstream-7.1/samples 目录下找到示例配置文件。输入此命令以查看应用程序用法

    $ deepstream-app --help
    
  • 要在 2D 平铺显示视图中显示标签,请使用鼠标左键单击源来展开感兴趣的源。要返回到平铺显示,请在窗口中的任意位置右键单击

  • 也支持键盘选择源。在运行应用程序的控制台上,按 z 键,后跟所需的行索引(0 到 9),然后是列索引(0 到 9)以展开源。要恢复 2D 平铺显示视图,请再次按 z

预期输出 (deepstream-app)#

下图显示了使用 source30_1080p_dec_infer-resnet_tiled_display_int8.txt 配置的 deepstream-app 的预期输出

DeepStream Reference Application Architecture

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

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

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

    注意

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

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

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

如果显示器未连接到系统,如何可视化输出#

1. 通过创建虚拟显示器与 X 服务器一起运行#

有关详细信息,请参阅 https://docs.nvda.net.cn/grid/latest/grid-vgpu-user-guide/index.html#configuring-xorg-server-on-linux-server

2. 在没有 X 服务器的情况下运行(适用于支持 RTSP 流输出的应用程序)#

SDK 提供的默认配置文件将基于 EGL 的 nveglglessink 作为默认渲染器(由 [sink] 组中的 type=2 指示)。渲染器需要正在运行的 X 服务器,如果没有则会失败。如果缺少 X 服务器,DeepStream 参考应用程序提供通过 RTSP 流式传输输出的替代功能。可以通过在配置文件中添加 RTSP 输出 sink 组来启用此功能。有关示例,请参阅 source30_1080p_dec_infer-resnet_tiled_display_int8.txt 文件中的 [sink2] 组。不要忘记通过为相应的 sink 组设置 enable=0 来禁用 nveglglessink 渲染器。

DeepStream Triton 推理服务器使用指南#

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

注意

  • 在运行 prepare_classification_test_video.sh 之前,请参阅 Docker 容器部分中的注释。

dGPU#

  1. 拉取 DeepStream Triton 推理服务器 docker

    docker pull nvcr.io/nvidia/deepstream:7.1-triton-multiarch
    
  2. 启动 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:7.1-triton-multiarch
    

注意

  • 适用于 x86 和 jetson 的 triton docker 基于 Tritonserver 24.08 docker,并具有 Ubuntu 22.04。

  • 首次启动 triton docker 时,可能需要几分钟才能启动,因为它必须生成计算缓存。

ARM 上的 dGPU(IGX/dGPU、GH100、GH200、SBSA)#

  1. 拉取 DeepStream Triton 推理服务器 docker

    docker pull nvcr.io/nvidia/deepstream:7.1-triton-arm-sbsa
    
  2. 启动 docker

    sudo docker run -it --rm --runtime=nvidia --network=host -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics --gpus all --privileged -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v /etc/X11:/etc/X11 nvcr.io/nvidia/deepstream:7.1-triton-arm-sbsa
    

注意

  • ARM 上 dGPU 的 triton docker 基于 Tritonserver 24.08 docker,并具有 Ubuntu 22.04。

  • 首次启动 triton docker 时,可能需要几分钟才能启动,因为它必须生成计算缓存。

  • ARM/SBSA docker 上的 dGPU 当前仅支持 nv3dsink 用于视频显示,通过 视频子系统和解决方法中的已知限制部分中提到的解决方法。

Jetson#

DeepStream Triton 容器镜像 (nvcr.io/nvidia/deepstream:7.1-triton-multiarch) 预装了 Triton 推理服务器和受支持的后端库。

为了直接在设备上运行 Triton 推理服务器,即不使用 docker,将需要 Triton 服务器设置。

转到 samples 目录并运行以下命令以设置 Triton 服务器和后端。

$ cd /opt/nvidia/deepstream/deepstream/samples/
$ sudo ./triton_backend_setup.sh

注意

默认情况下,脚本将下载 Triton Server 版本 2.49。要设置任何其他版本,请相应地更改软件包路径。

默认情况下,脚本会将 Triton 后端安装到 /opt/nvidia/deepstream/deepstream/lib/triton_backends 中。用户可以按如下方式更新特定文件夹的 infer_config 设置

model_repo {
 backend_dir: /opt/nvidia/tritonserver/backends/
}

使用 DLA 进行推理#

DLA 是 Jetson AGX Orin 和 Jetson Orin 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>