NVIDIA Jetson 部署推理服务器

在大多数用例中,使用经过实战检验的基础设施可以无缝自动扩展,以应对最高强度的用例。但是,由于它是远程托管的,在某些情况下并不理想:特别是在带宽受限、生产数据不能超出本地网络或公司防火墙、或者需要在边缘进行实时推理速度的情况下。在这些情况下,需要本地部署。

支持的任务类型

NVIDIA Jetson支持以下任务类型:

  • 目标检测
  • 分类
  • 实例分割
  • 语义分割

推理 API 的使用

推理 API 以 Docker 容器的形式提供,为NVIDIA Jetson设备系列优化和配置。应该使用 NVIDIA 的 Jetson Jetpack 最新稳定版本(最后测试版本为 4.6),它已经准备好运行此容器。安装时,只需拉取容器:

sudo docker pull roboflow/inference-server:jetson

然后运行它(同时传递对 Jetson GPU 和原生网络栈的访问权限以提高速度):

sudo docker run --net=host --gpus all roboflow/inference-server:jetson

现在可以将 Jetson 作为托管推理 API 的替代品来使用(有关示例代码片段,请参见相关文档)。如果应用程序直接在 Jetson 上运行,请使用托管 API 的示例代码,但在 API 调用中将 https://detect.roboflow.com 替换为 http://localhost:9001。例如:

base64 YOUR_IMAGE.jpg | curl -d @- "http://localhost:9001/your-model/42?api_key=YOUR_KEY"

定位项目信息

还可以在客户端-服务器上下文中运行,并将图像发送到 Jetson 进行推理,从网络上的另一台机器;只需将 localhost 替换为 Jetson 的本地 IP 地址。

性能预期

在本地测试中,看到了在 Jetson Nano 2GB(使用交换内存)上的持续吞吐量为每秒 4 帧,Jetson Nano 4GB 上为每秒 6 帧,Jetson Xavier NX(单实例)上为每秒 10 帧,Jetson Xavier NX(2 实例集群;见下文)上为每秒 15 帧。这些结果在使用客户端-服务器上下文(因此涉及一些轻微的网络延迟)和 416x416 模型时获得。

离线模式

每次运行容器时,都会下载模型权重。对于自主和隔离设备,完整的离线模式支持适用于企业部署。

Jetson Nano 2GB 的注意事项

Jetson Nano 2GB 需要创建一个交换文件,否则在尝试初始化模型时会因内存不足而崩溃。在 docker run推理服务器容器之前这样做,以增加 8GB 的交换内存:

sudo fallocate -l 8.0G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

要使这些更改持久化,请在 /etc/fstab 文件末尾添加以下行:

/swapfile none swap 0 0

然后重新启动设备。

集群模式

推理服务器配置有集群模式,可以让它并行运行多个实例,并自动在它们之间进行负载均衡。这不会改善延迟,但它将允许设备通过利用更多的 CPU 核心同时处理多个图像。

可以运行的实例数量受到模型输入大小(由 Resize 预处理步骤确定,默认为 416x416,如果没有选择大小)、设备内存量以及设备上其他服务所需的内存量(如应用程序代码)的限制。

Xavier NX 的 8GB 内存可以安全地容纳两个大多数模型的实例,同时仍然为程序运行留出空间。

要启动双实例集群,请在 docker run 命令中添加 --env INSTANCES=2:

sudo docker run --net=host --gpus all --env INSTANCES=2 roboflow/inference-server:jetson

在测试中,Jetson Xavier NX 的吞吐量从单实例的每秒约 10 帧提高到双实例的每秒 15 帧。只能在 Jetson Nano 上运行一个实例。

有限存储空间下的运行

Roboflow推理服务器占用 5GB 的磁盘空间。建议使用快速 SD 卡(至少 U3, V30)。或者,一些 Jetson 驱动的嵌入式设备具有集成的 eMMC 闪存内存,应该更具性能。默认的 JetPack 安装消耗约 15GB,因此最好有 32GB 或更高的 SD 卡或 Flash 内存容量(但可以通过删除不必要的包在 16GB 上运行)。

Docker 映像包含了运行模型所需的所有 CUDA 和 CuDNN 包;这意味着只要安装了 NVIDIA Container Runtime 和 NVIDIA 图形驱动程序,就不需要在主机上安装 CUDA 和 CuDNN。

sudo apt purge cuda-tools-10-2 libcudnn8 cuda-documentation-10-2 cuda-samples-10-2 nvidia-l4t-graphics-demos ubuntu-wallpapers-bionic libreoffice* chromium-browser* thunderbird fonts-noto-cjk sudo apt autoremove
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485