昨日,NVIDIA发布了Deepstream6.3版本(增强视觉AI可能性:DeepStream 6.3推出GXF和多架构容器支持),让我们看看,到底更新了啥?
DeepStream 6.3,这款尖端软件开发工具包的最新版本,继续推动视觉AI应用的边界。通过一系列增强和新功能,DeepStream 6.3为开发人员提供了无与伦比的工具,创造创新性解决方案。让我们深入了解其亮点:
- 增强的模型支持:DeepStream 6.3引入了对x86/dGPU的Triton 22.03、Jetson的Triton 23.01以及Rivermax v1.20的支持。这种扩展的模型兼容性使用户能够使用更广泛的模型以满足其需求。
- Jetson软件包升级:Jetson软件包现在基于JP 5.1.2 GA(r35.4.1 BSP),增强了Jetson用户的开发环境。
- 启用预处理插件:nvinferserver插件现在支持预处理插件,为用户提供了更大的灵活性和对应用程序的控制。
- 多架构Docker支持:DeepStream 6.3引入了适用于Jetson和x86平台的多架构Docker,简化了跨各种架构的部署和兼容性。
- 通过REST API实现实时控制:一个重大的进步是引入了REST API支持,可以实时控制DeepStream流水线。这一阶段性特性适用于x86和Jetson平台。
- 增强的解码和编码:DeepStream 6.3扩展了解码支持,包括Jetson和x86的10位和12位yuv420解码。此外,Jetson和x86平台现在还支持8位yuv444解码和10、12位YUV444解码。
- 光流和Re-ID增强:光流支持现在在Jetson AGX Orin上可用,同时Tracker中的Re-ID准确性得到了改进。
- Triton集成:Nvinferserver(Triton)支持已扩展到大多数DeepStream示例应用程序,为用户提供了增强的功能。
- TAO模型和连续性:DeepStream 6.3集成了NVIDIA TAO工具包模型,使用户能够利用预训练模型来进行各种任务,如二维身体姿态估计、面部标志估计、情感识别等。
- 新的示例应用程序:DeepStream 6.3引入了新的示例应用程序,如“Triton Ensemble”,展示了如何使用Triton集合模型,并“Deepstream-multigpu-nvlink-test”,演示了在多个GPU上使用NVLink的方式。
- Python绑定和示例:Python绑定和示例更新包括基于deepstream-test3应用程序的新Jupyter笔记本,以及更新后的deepstream-rtsp-in-rtsp-out示例。
- 开源插件:DeepStream 6.3提供了开源插件,包括用于分析的Gst-nvdsanalytics和用于跟踪的Gst-nvtracker。此外,还引入了新的用于高效管理流的Gst-nvstreammux和Gst-nvstreamdemux插件。
- 稳定性和性能:此版本强调了改进的稳定性和性能优化,确保更平稳、可靠的体验。
DeepStream 6.3是一个重要的飞跃,增强了工具包的功能,扩展了模型支持,并使开发人员能够创建更复杂的视觉AI应用。有关详细信息和实施,请参阅NVIDIA DeepStream SDK开发人员指南6.3版本。
重要更改:相对于DeepStream 6.2的突破性变化
随着DeepStream 6.3的推出,关于Docker的支持发生了重大变化。从DS 6.3开始,NVIDIA移除了对基本(base)、物联网(iot)、Triton和开发(devel)版本Docker的支持。
取而代之的是,NVIDIA引入了多架构Triton Docker。这款新的Docker不仅取代了先前的各种版本,还在功能上进行了扩展,为用户提供了更多的选择和灵活性。这个多架构Triton Docker将成为新的基准,为您的应用程序提供更广泛的兼容性和高度集成性。在过渡期间,请确保您了解这些变化,以便更好地利用DeepStream 6.3的最新功能。
与DeepStream 6.1的区别
相对于DeepStream 6.1,DeepStream 6.3在多个方面进行了调整和改进。在新版本中,NVIDIA移除了gstreamer1.0-libav、libav、OSS编码器、解码器插件(如x264/x265)以及audioparsers包。根据您的需求,您可以安装这些包(gstreamer1.0-plugins-good/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-ugly)。
在运行DeepStream应用程序时,如果您在Docker内部,可能会遇到以下警告:
代码语言:javascript复制WARNING from src_elem: No decoder available for type 'audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)119056e500, rate=(int)48000, channels=(int)2'.
代码语言:javascript复制Debug info: gsturidecodebin.c(920): unknown_type_cb ():
为了避免这些警告,建议在Docker内安装gstreamer1.0-libav和gstreamer1.0-plugins-good。
特别是对于deepstream-nmos、deepstream-avsync-app和基于Python的deepstream-imagedata-multistream应用程序,您需要安装gstreamer1.0-libav和gstreamer1.0-plugins-good。
另外,值得注意的是,Gst-nveglglessink插件已被弃用。对于Jetson平台,请使用Gst-nv3dsink插件进行替代。这将确保您的应用程序在Jetson上获得更好的性能和兼容性。
DS6.3版本的限制以及相关注意事项:
- V4L2编解码器限制:仅支持最多1024个V4L2编解码实例(解码 编码)。通过修改开源代码,可以增加最大实例数。
- 主要推理配置文件中的设置:在Jetson平台上,必须在主要推理配置文件(config_infer_primary.txt)中将detected-min-w和detected-min-h设置为大于32的值,以便在gst-dsexample上正常工作。
- Kafka协议适配器注意事项:Kafka协议适配器有时在连接的Kafka Broker断开连接并重新连接时不会自动重新连接。这需要应用程序重启才能恢复连接。
- 重新启用日志记录的方法:如果nvds日志文件ds.log已被删除,在重新启用日志记录之前,必须在容器内部删除/run/rsyslogd.pid文件,然后运行setup_nvds_logger.sh脚本以重新启用日志记录。
- 通过SSH运行DeepStream应用程序的注意事项:通过SSH(例如putty)进行X11转发的方式运行DeepStream应用程序可能无法正常工作。
- 模型网络分辨率的限制:DeepStream目前要求模型网络宽度为4的倍数,网络高度为2的倍数。
- Triton推理服务器的实现限制:DeepStream中的Triton推理服务器实现目前仅支持单个GPU。需要配置模型以使用单个GPU。
- 模型输出差异的说明:某些模型在DeepStream中的输出与TAO Toolkit中观察到的输出可能不完全相同,这是由于输入缩放算法差异导致的。
- 动态分辨率更改的支持:动态分辨率更改的支持处于Alpha质量阶段,可能需要进一步的优化和测试。
- 即时模型更新的限制:即时模型更新仅支持具有相同类型和相同网络参数的模型。
- Xavier NX生产模块不支持安装:由于Jetpack软件占用了整个16GB eMMC内存空间,当前的16GB Xavier NX生产模块不支持安装DeepStream。我们建议使用带有32GB SD卡的Xavier NX开发套件。
- Rivermax SDK不包含在DeepStream中:因此,可能会出现类似“无法加载插件”的警告,您可以安全地忽略此警告。
- Composer WebSocket流传输中的错误:在使用Composer WebSocket流传输时,有时可能会出现类似“发送缓冲区时出错:无效状态”的错误,或者窗口变得无响应。刷新浏览器页面可能会解决此问题。
- Composer WebRTC流传输支持:只支持在RTX GPU上进行Composer WebRTC流传输。
- Composer UI中的应用程序运行日志不可用。
- Jetson上的屏幕闲置下的降帧现象:在Jetson上,当屏幕处于空闲状态时,DeepStream应用程序的帧率会降低。这是为了节省功耗而设计的行为。然而,如果用户不希望屏幕闲置,可以参考FAQ中的解决方法。
- RDMA功能限制:目前仅在x86平台和x86开发Docker中支持RDMA功能。
- 在Jetson Docker上构建DeepStream的限制:除了Triton变体外,您不能在Jetson Docker上轻松构建DeepStream。
- 从TensorRT到Triton的性能降低:对于某些模型,从TensorRT到Triton可能会出现性能下降(5到15%)。
- 生成YOLOV3、YOLOV4和YOLOV4-tiny模型引擎的注意事项:为了生成这些模型引擎,需要将一些层的精度指定为FP32,以满足TensorRT的限制。
- Ampere、Hopper和ADA上的XID错误:在Ampere、Hopper和ADA上运行275个以上的流时,可能会出现XID错误。
- 运行gst-dsexample和迁移学习示例应用程序时的XID错误:在一些设置中,可能会出现运行gst-dsexample和迁移学习示例应用程序时的XID错误。
- deepstream-testsr应用程序执行期间的断言错误:在运行deepstream-testsr应用程序时,可能会出现断言错误,但可以安全地忽略。
- Gst-nvdsasr插件和deepstream-avsync-app在Hopper GPU上不受支持。
- jpeg文件的multifilesrc插件在nv3dsink上失败:在使用jpeg文件的multifilesrc插件与nv3dsink一起时,可能会不稳定失败。为了解决此问题,需要在nv3dsink之前添加nvvideoconvert元素。
- 在引擎文件生成过程中的错误:在一些模型的引擎文件生成过程中,可能会从TensorRT中观察到错误,但不会影响功能,可以安全地忽略。
- 运行deepstream-image-decode-app时的断言错误:在运行deepstream-image-decode-app时,可能会出现断言错误,但可以安全地忽略。
- 不支持NVIDIA Hopper上的ASR和TTS插件。
- 不支持新的nvstreammux插件的deepstream-server应用程序。
- TAO point-pillar模型仅支持FP32模式。
- REST API对部分组件的支持:对于一些组件(解码器、预处理器、nvinfer以及流的添加和删除支持),提供了有限的配置选项的REST API支持。然而,您可以根据SDK文档中提到的步骤扩展功能。
- 在运行Python分割应用程序时观察到的严重错误:在运行Python分割应用程序时,可能会出现类似“masked_scan_uint32_peek: 断言'(guint64)偏移量 大小 <= 读取器->大小 - 读取器->字节'失败”的严重错误,但可以安全地忽略。
- 在Jetson上运行nveglglessink组件的两个实例时的错误:在Jetson上运行两个nveglglessink组件实例时,可能会出现“NvVicCompose Failed”的错误。如果发生这种情况,您可以使用nv3dsink组件代替nveglglessink。
- 在Jetson Docker上运行DeepStream应用程序时出现的错误:“modprobe: FATAL: Module nvidia not found…”错误出现在在Jetson Docker上运行DeepStream应用程序时,但可以安全地忽略。
- Basler相机支持的图像宽度限制:在Jetson上,Basler相机仅支持宽度为4的倍数的图像。
- DLA推理性能下降的问题:对于Peoplenet、TrafficCamNet、DashCamNet、FRCNN、RetinaNet、Bodypose3D、2D和3D动作识别等模型,观察到DLA推理性能下降的情况。
- 动作识别示例deepstream-3d-action-recognition的批大小支持:动作识别示例deepstream-3d-action-recognition支持最大批大小为4。
请注意上述功能和注意事项,以确保在使用DeepStream时了解这些因素,并根据需要采取相应的措施。详细信息可以在NVIDIA DeepStream开发人员指南6.3版本中找到。