VLM 工作流程#

概述#

Jetson 平台服务提供多个参考工作流程,说明如何集成各种基础服务和 AI 服务以创建端到端应用程序。本节介绍了 VLM 工作流程,该工作流程将相应的 AI 服务与相关的部分(包括 VST、监控和移动应用程序)集成在一起。生成的应用程序提供了一个基于移动应用程序的 UI,用户可以使用该 UI 设置警报,以便 VLM 在输入实时流时进行评估。当 VLM 确定警报为真时,将向移动应用程序发送通知。该工作流程还利用 VST 进行流输入和管理。用户可以使用此作为参考,提取相关部分,以创建他们自己的利用 VLM 服务的应用程序。

要获取此工作流程的 docker compose 和配置文件,请从 NGC 下载 Jetson 平台服务资源包或 SDK Manager。

要启动此工作流程,请首先按照 使用 Jetson 平台服务的视觉语言模型 (VLM) 页面上的步骤操作,以确保 VLM 服务在您的系统上正常运行。

在验证 VLM 服务按预期工作后,使用 sudo docker compose down 从启动它的同一文件夹中将其关闭。

入门#

确保必要的基础服务正在运行

sudo systemctl start jetson-monitoring
sudo systemctl start jetson-sys-monitoring
sudo systemctl start jetson-gpu-monitoring

验证平台入口配置文件中所有行(用于监控服务)是否在以下文件中取消注释

/opt/nvidia/jetson/services/ingress/config/platform-nginx.conf

这将确保可以通过 API 网关访问监控仪表板。

sudo systemctl restart jetson-ingress
sudo systemctl restart jetson-redis
sudo systemctl restart jetson-vst

请注意,我们还将启动 jetson-vst,因为这将是我们在本工作流程示例中实时流的来源。

启动 VLM 服务

cd ~/vlm/example_1
sudo docker compose up

启动后,VLM 服务将等待来自移动应用程序的命令。

使用 VST 进行视频摄取#

生成式 AI 视频应用程序通常开发为接受文件输入作为视频源。在生产环境中,这些应用程序需要与来自真实世界的视频流进行交互,包括来自摄像头和网络流的视频流。视频存储工具包 微服务提供了一个开箱即用的机制来摄取视频,包括摄像头发现、摄像头重新连接、监控和摄像头事件通知。在此过程中,VST 为摄像头视频源提供了一个代理 RTSP 链接,服务可以根据 VST API 查询该链接。

VST 支持 ONVIF 协议以发现摄像头。这些摄像头可以通过专用的以太网供电 (PoE) 交换机直接连接到 Jetson 系统;或连接到设备所连接的网络。另一种选择是用户根据设备的 IP 地址手动添加设备。

可以通过 VST Web 仪表板在 http://0.0.0.0:30080/vst 添加流。在 VST 中添加的所有流都将通过移动应用程序可用于 VLM 服务。这些流可以来自 NVStreamer、IP 摄像头或任何 RTSP 源。

移动应用程序集成#

在 VLM 服务启动并且流添加到 VST 后,现在可以使用移动应用程序连接到 VLM 服务并执行以下操作

要安装该应用程序,请按照 应用程序概述 页面上的安装部分进行操作。

安装完成后,您可以打开该应用程序并将其连接到您的 Jetson。

然后,您可以从应用程序执行以下操作:

  1. 查看可用的实时流

  2. 在任何可用的实时流上设置警报,例如“是否有火灾?”

  3. 当警报被评估为真时接收推送通知

  4. 通过聊天模式向 VLM 询问有关实时流的开放式问题

请注意,只有添加到 VST 的流才会在移动应用程序中可用。

VLM App Screenshot

监控#

Jetson 平台服务提供监控作为即用型平台服务,使开发人员能够跟踪系统利用率和性能 KPI。鉴于生成式 AI 应用程序推动了系统在 GPU 利用率和内存可用性方面的能力,基于 Prometheus 的监控仪表板提供了一种现成的方式来观察这些指标的利用率,因为应用程序正在运行。这些指标会实时更新,向用户展示应用程序执行并开始处理不同输入时的实时利用率视图。

有关监控服务和功能的更多详细信息,请查看 使用和配置 页面。

安全存储#

AI 应用程序使用并生成各种数据,包括模型、推理输出等。Jetson 平台服务提供对微服务使用的存储进行加密,AI 应用程序可以利用该加密,以便其数据(模型、权重、输入、输出)在静态时是安全的。存储平台服务 描述了如何启用加密,以及微服务如何从连接的外部存储(如硬盘)请求存储配额。

进一步的自定义和集成#

为了方便将生成式 AI 应用程序(通常用 Python 编写)集成到使用 Jetson 平台服务的系统中,我们重点介绍了一系列开发人员可以利用的 Python 模块。GitHub 上提供的零样本检测服务的源代码说明了如何使用这些模块来实现这种集成。

这些 Python 模块的列表包括

  • jetson-containers:为 Jetson 上的生成式 AI 应用程序提供容器、模型、vectorDB 和其他构建块

  • jetson-utils:NVIDIA 提供的 Python 模块,用于硬件加速的图像和多媒体操作,支持 RTSP 流输入/输出、视频解码和高效的视频叠加创建

  • moj-utils:NVIDIA 新提供的 Python 模块,用于与 Jetson 平台服务的其余部分集成

  • jetson-platform-services:具有参考 AI 服务和工作流程的开源 GitHub 存储库。