0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NVIDIA Triton 系列文章(7):image_client 用户端参数

NVIDIA英伟达企业解决方案 来源:未知 2022-12-06 19:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作为服务器的最重要任务,就是要接受来自不同终端所提出的各种请求,然后根据要求执行对应的计算,再将计算结果返回给终端。

当 Triton 推理服务器运行起来之后,就进入等待请求的状态,因此我们所要提出的请求内容,就必须在用户端软件里透过参数去调整请求的内容,这部分在 Triton 相关使用文件中并没有提供充分的说明,因此本文的重点就在于用Python 版的 image_client.py 来说明相关参数的内容,其他用户端的参数基本上与这个端类似,可以类比使用。

本文的实验内容,是将 Triton 服务器安装在 IP 为 192.168.0.10 的 Jetson AGX Orin 上,将 Triton 用户端装在 IP 为 192.168.0.20 的树莓派上,读者可以根据已有的设备资源自行调配。

在开始进行实验之前,请先确认以下两个部分的环境:

  • 在服务器设备上启动 Triton 服务器,并处于等待请求的状态:


如果还没启动的话,请直接执行以下指令:

# 根据实际的模型仓根目录位置设定TRITON_MODEL_REPO路径
$ export TRITON_MODEL_REPO=${HOME}/triton/server/docs/examples/model_repository
执行Triton服务器
$ dockerrun--rm--net=host-v${TRITON_MODEL_REPO}:/modelsnvcr.io/nvidia/tritonserver:22.09-py3tritonserver--model-repository=/models
  • 在用户端设备下载 Python 的用户端范例,并提供若干张要检测的图片:

先执行以下指令,确认Triton服务器已经正常启动,并且从用户端设备可以访问:

$  curl -v 192.168.0.10:8000/v2/health/ready

只要后面出现的信息中有“HTTP/1.1 200 OK”部分,就表示一切正常。

如果还没安装 Triton 的 Python 用户端环境,并且还未下载用户端范例的话,请执行以下指令:

$  cd ${HOME}/triton
$ git clone https://github.com/triton-inference-server/client
$ cd client/src/python/examples
# 安装 Triton 的 Python用户端环境
$ pip3installtritonclient[all]attrdict-ihttps://pypi.tuna.tsinghua.edu.cn/simple

最后记得在用户端设备上提供几张图片,并且放置在指定文件夹(例如~/images)内,准备好整个实验环境,就可以开始下面的说明。

现在执行以下指令,看一下 image_client 这个终端的参数列表:

$  python3 image_client.py

会出现以下的信息:

接下来就来说明这些参数的用途与用法。

  1. 用“-u”参数对远程服务器提出请求:


如果用户端与服务器端并不在同一台机器上的时候,就可以用这个参数对远程 Triton 服务器提出推理请求,请执行以下指令:

$  python3 image_client.py  -m  inception_graphdef  -u 192.168.0.10:8000  -s INCEPTION ${HOME}/images/mug.jpg

由于 Triton 的跨节点请求主要透过 HTTP/REST 协议处理,需要透过 8000 端口进行传输,因此在“-u”后面需要接上“IP:8000”就能正常使用。

请自行检查回馈的计算结果是否正确!

2. 用“-m”参数去指推理模型:

从“python3 image_client.py”所产生信息的最后部分,可以看出用“-m”参数去指定推理模型是必须的选项,但是可以指定哪些推理模型呢?就得从 Triton 服务器的启动信息中去寻找答案。

下图是本范例是目前启动的 Triton 推理服务器所支持的模型列表:

这里显示有的 8 个推理模型,就是启动服务器时使用“--model-repository=”参数指定的模型仓内容,因此客户端使用“-m”参数指定的模型,必须是在这个表所列的内容之列,例如“-mdensenet_onnx”、“-m inception_graphdef”等等。

现在执行以下两道指令,分别看看使用不同模型所得到的结果有什么差异:

$  python3 image_client.py  -m densenet_onnx  -u 192.168.0.10:8000  -s INCEPTION ${HOME}/images/mug.jpg
$ python3image_client.py-minception_graphdef-u192.168.0.10:8000-sINCEPTION${HOME}/images/mug.jpg

使用 densenet_onnx 模型与 inception_graphdef 模型所返回的结果,分别如下:

虽然两个模型所得到的检测结果一致,但是二者所得到的置信度表达方式并不相同,而且标签编号并不一样(504 与 505)。

这个参数后面还可以使用“-x”去指定“版本号”,不过目前所使用的所有模型都只有一个版本,因此不需要使用这个参数。

3. 使用“-s”参数指定图像缩放方式:

有些神经网络算法在执行推理之前,需要对图像进行特定形式的缩放(scaling)处理,因此需要先用这个参数指定缩放的方式,如果没有指定正确的模式,会导致推理结果的错误。目前这个参数支持{NONE, INSPECTION, VGG}三个选项,预设值为“NONE”。

在本实验 Triton 推理服务器所支持的 densenet_onnx 与 inception_graphdef 模型,都需要选择 INSPECTION 缩放方式,因此执行指令中需要用“-s INSPECTION”去指定,否则会得到错误的结果。

请尝试以下指令,省略前面指定中的“-s INSPECTION”,或者指定为 VGG 模式,看看结果如何?

$  python3 image_client.py  -m inception_graphdef -u 192.168.0.10:8000  -s VGG ${HOME}/images/mug.jpg

4. 对文件夹所有图片进行推理

如果有多个要进行推理计算的标的物(图片),Triton 用户端可用文件夹为单位来提交要推理的内容,例如以下指令就能一次对 ${HOME}/images 目录下所有图片进行推理:

$  python3 image_client.py  -m  inception_graphdef  -u 192.168.0.10:8000  -s INCEPTION ${HOME}/images

例如我们在文件夹中准备了 car.jpg、mug.jpg、vulture.jpg 三种图片,如下:

执行后反馈的结果如下:

显示推理检测的结果是正确的!

5. 用“-b”参数指定批量处理的值

执行前面指令的结果可以看到“batch size 1”,表示用户端每次提交一张图片进行推理,所以出现 Request1、Request 2 与 Request 3 总共提交三次请求。

现在既然有 3 张图片,可否一次提交 3 张图片进行推理呢?我们可以用“-b”参数来设定,如果将前面的指令中添加“-b3”这个参数,如下:

$  python3 image_client.py  -m  inception_graphdef  -u 192.168.0.10:8000  -s INCEPTION ${HOME}/images  -b 3

现在显示的结果如下:

现在看到只提交一次“batch size 3”的请求,就能对三张图片进行推理。如果 batch 值比图片数量大呢?例如改成“-b 5”的时候,看看结果如何?如下:

现在可以看到所推理的图片数量是 5,其中 1/4、2/5 是同一张图片,表示重复使用了。这样就应该能清楚这个“batchsize”值的使用方式。

但如果这里将模型改成 densenet_onnx 的时候,执行以下指令:

$  python3 image_client.py  -m  densenet_onnx  -u 192.168.0.10:8000  -s INCEPTION ${HOME}/images  -b 3

会得到“ERROR: This model doesn't support batching.”的错误信息,这时候就回头检查以下模型仓里 densenet_onnx 目录下的 config.pbtxt 配置文件,会发现里面设置了“max_batch_size: 0”,并不支持批量处理。

而 inception_graphdef 模型的配置文件里设置“max_batch_size: 128”,如果指令给定“-b”参数大于这个数值,也会出现错误信息。

6. 其他:

另外还有指定通讯协议的“-i”参数、使用异步推理 API 的“-a”参数、使用流式推理 API 的“--streaming”参数等等,属于较进阶的用法,在这里先不用过度深入。

以上所提供的 5 个主要参数,对初学者来说是非常足够的,好好掌握这几个参数就已经能开始进行更多图像方面的推理实验。

推荐阅读

NVIDIA Jetson Nano 2GB 系列文章(1):开箱介绍

NVIDIA Jetson Nano 2GB 系列文章(2):安装系统

NVIDIA Jetson Nano 2GB 系列文章(3):网络设置及添加 SWAPFile 虚拟内存

NVIDIA Jetson Nano 2GB 系列文章(4):体验并行计算性能

NVIDIA Jetson Nano 2GB 系列文章(5):体验视觉功能库



NVIDIA Jetson Nano 2GB 系列文章(6):安装与调用摄像头


NVIDIA Jetson Nano 2GB 系列文章(7):通过 OpenCV 调用 CSI/USB 摄像头

NVIDIA Jetson Nano 2GB 系列文章(8):执行常见机器视觉应用


NVIDIA Jetson Nano 2GB 系列文章(9):调节 CSI 图像质量

NVIDIA Jetson Nano 2GB 系列文章(10):颜色空间动态调节技巧

NVIDIA Jetson Nano 2GB 系列文章(11):你应该了解的 OpenCV

NVIDIA Jetson Nano 2GB 系列文章(12):人脸定位


NVIDIA Jetson Nano 2GB 系列文章(13):身份识别


NVIDIA Jetson Nano 2GB 系列文章(14):Hello AI World

NVIDIA Jetson Nano 2GB 系列文章(15):Hello AI World 环境安装


NVIDIA Jetson Nano 2GB 系列文章(16):10行代码威力



NVIDIA Jetson Nano 2GB 系列文章(17):更换模型得到不同效果

NVIDIA Jetson Nano 2GB 系列文章(18):Utils 的 videoSource 工具

NVIDIA Jetson Nano 2GB 系列文章(19):Utils 的 videoOutput 工具

NVIDIA Jetson Nano 2GB 系列文章(20):“Hello AI World” 扩充参数解析功能

NVIDIA Jetson Nano 2GB 系列文章(21):身份识别

NVIDIA Jetson Nano 2GB 系列文章(22):“Hello AI World” 图像分类代码

NVIDIA Jetson Nano 2GB 系列文章(23):“Hello AI World 的物件识别应用

NVIDIAJetson Nano 2GB 系列文章(24): “Hello AI World” 的物件识别应用

NVIDIAJetson Nano 2GB 系列文章(25): “Hello AI World” 图像分类的模型训练

NVIDIAJetson Nano 2GB 系列文章(26): “Hello AI World” 物件检测的模型训练

NVIDIAJetson Nano 2GB 系列文章(27): DeepStream 简介与启用

NVIDIAJetson Nano 2GB 系列文章(28): DeepStream 初体验

NVIDIAJetson Nano 2GB 系列文章(29): DeepStream 目标追踪功能

NVIDIAJetson Nano 2GB 系列文章(30): DeepStream 摄像头“实时性能”

NVIDIAJetson Nano 2GB 系列文章(31): DeepStream 多模型组合检测-1

NVIDIAJetson Nano 2GB 系列文章(32): 架构说明与deepstream-test范例

NVIDIAJetsonNano 2GB 系列文章(33): DeepStream 车牌识别与私密信息遮盖

NVIDIA Jetson Nano 2GB 系列文章(34): DeepStream 安装Python开发环境

NVIDIAJetson Nano 2GB 系列文章(35): Python版test1实战说明

NVIDIAJetson Nano 2GB 系列文章(36): 加入USB输入与RTSP输出

NVIDIAJetson Nano 2GB 系列文章(37): 多网路模型合成功能

NVIDIAJetson Nano 2GB 系列文章(38): nvdsanalytics视频分析插件

NVIDIAJetson Nano 2GB 系列文章(39): 结合IoT信息传输

NVIDIAJetson Nano 2GB 系列文章(40): Jetbot系统介绍

NVIDIAJetson Nano 2GB 系列文章(41): 软件环境安装

NVIDIAJetson Nano 2GB 系列文章(42): 无线WIFI的安装与调试

NVIDIAJetson Nano 2GB 系列文章(43): CSI摄像头安装与测试

NVIDIAJetson Nano 2GB 系列文章(44): Jetson的40针引脚

NVIDIAJetson Nano 2GB 系列文章(45): I2C总线与PiOLED

NVIDIAJetson Nano 2GB 系列文章(46): 机电控制设备的安装

NVIDIAJetson Nano 2GB 系列文章(47): 组装过程的注意细节

NVIDIAJetson Nano 2GB 系列文章(48): 用键盘与摇杆控制行动

NVIDIAJetson Nano 2GB 系列文章(49): 智能避撞之现场演示

NVIDIAJetson Nano 2GB 系列文章(50): 智能避障之模型训练

NVIDIAJetson Nano 2GB 系列文章(51): 图像分类法实现找路功能

NVIDIAJetson Nano 2GB 系列文章(52): 图像分类法实现找路功能

NVIDIAJetson Nano 2GB 系列文章(53): 简化模型训练流程的TAO工具套件

NVIDIA Jetson Nano 2GB 系列文章(54):NGC的内容简介与注册密钥

NVIDIA Jetson Nano 2GB 系列文章(55):安装TAO模型训练工具

NVIDIA Jetson Nano 2GB 系列文章(56):启动器CLI指令集与配置文件

NVIDIA Jetson Nano 2GB 系列文章(57):视觉类脚本的环境配置与映射

NVIDIA Jetson Nano 2GB 系列文章(58):视觉类的数据格式

NVIDIA Jetson Nano 2GB 系列文章(59):视觉类的数据增强

NVIDIA Jetson Nano 2GB 系列文章(60):图像分类的模型训练与修剪

NVIDIA Jetson Nano 2GB 系列文章(61):物件检测的模型训练与优化

NVIDIA Jetson Nano 2GB 系列文章(62):物件检测的模型训练与优化-2

NVIDIA Jetson Nano 2GB 系列文章(63):物件检测的模型训练与优化-3

NVIDIA Jetson Nano 2GB 系列文章(64):将模型部署到Jetson设备

NVIDIA Jetson Nano 2GB 系列文章(65):执行部署的 TensorRT 加速引擎

NVIDIA Jetson 系列文章(1):硬件开箱

NVIDIA Jetson 系列文章(2):配置操作系统

NVIDIA Jetson 系列文章(3):安装开发环境

NVIDIA Jetson 系列文章(4):安装DeepStream

NVIDIA Jetson 系列文章(5):使用Docker容器的入门技巧

NVIDIA Jetson 系列文章(6):使用容器版DeepStream

NVIDIA Jetson 系列文章(7):配置DS容器Python开发环境

NVIDIA Jetson 系列文章(8):用DS容器执行Python范例

NVIDIA Jetson 系列文章(9):为容器接入USB摄像头

NVIDIA Jetson 系列文章(10):从头创建Jetson的容器(1)

NVIDIA Jetson 系列文章(11):从头创建Jetson的容器(2)

NVIDIA Jetson 系列文章(12):创建各种YOLO-l4t容器

NVIDIA Triton系列文章(1):应用概论

NVIDIA Triton系列文章(2):功能与架构简介

NVIDIA Triton系列文章(3):开发资源说明

NVIDIA Triton系列文章(4):创建模型仓

NVIDIA Triton 系列文章(5):安装服务器软件

NVIDIA Triton 系列文章(6):安装用户端软件


原文标题:NVIDIA Triton 系列文章(7):image_client 用户端参数

文章出处:【微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英伟达
    +关注

    关注

    23

    文章

    4115

    浏览量

    99603

原文标题:NVIDIA Triton 系列文章(7):image_client 用户端参数

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    沐曦股份曦云C系列GPU产品Day 0适配百度文心ERNIE-Image文生图模型

    4月15日,百度文心大模型团队重磅推出ERNIE‑Image文生图模型,沐曦股份曦云 C 系列 GPU 已完成对 ERNIE‑Image 的Day 0 深度适配,同步支持 ERNIE‑Imag
    的头像 发表于 04-15 17:39 436次阅读

    NVIDIA Jetson模型赋能AI在边缘落地

    开源生成式 AI 模型不再局限于数据中心,而是开始深入到现实世界的各种机器中。从 Orin 到 Thor,NVIDIA Jetson 系列正在成为运行 NVIDIA Nemotron、Cosmos
    的头像 发表于 03-16 16:27 606次阅读
    <b class='flag-5'>NVIDIA</b> Jetson模型赋能AI在边缘<b class='flag-5'>端</b>落地

    借助NVIDIA CUDA Tile IR后端推进OpenAI Triton的GPU编程

    NVIDIA CUDA Tile 是基于 GPU 的编程模型,其设计目标是为 NVIDIA Tensor Cores 提供可移植性,从而释放 GPU 的极限性能。CUDA Tile 的一大优势是允许开发者基于其构建自定义的 DSL。
    的头像 发表于 02-10 10:31 508次阅读

    电话光端机选广州邮科靠谱吗?局端和用户端到底有什么区别?能混用吗?一文全解答!

    在专网通信、交通监控、电力调度等场景中,电话光端机依然是保障语音业务稳定传输的重要设备。随着光纤网络的普及,越来越多用户开始关注: 电话光端机 选广州邮科怎么样?局端和用户端究竟有何不同?它们能不能
    的头像 发表于 12-26 11:10 567次阅读
    电话光端机选广州邮科靠谱吗?局端和<b class='flag-5'>用户端</b>到底有什么区别?能混用吗?一文全解答!

    面向科学仿真的开放模型系列NVIDIA Apollo正式发布

    用于加速工业和计算工程的开放模型系列 NVIDIA Apollo 于近日举行的 SC25 大会上正式发布。
    的头像 发表于 11-25 11:15 7.4w次阅读

    NVIDIA DGX Spark平台上对NVIDIA ConnectX-7 200G网卡配置教程

    NVIDIA DGX Spark 平台上对 NVIDIA ConnectX-7 200G 网卡进行配置时,会遇到“4 个逻辑端口”现象。理解背后的真相是后续所有配置的基础。本文将从此现象入手,逐步解析其原理,并提供从基础配置
    的头像 发表于 11-21 09:19 6011次阅读
    在<b class='flag-5'>NVIDIA</b> DGX Spark平台上对<b class='flag-5'>NVIDIA</b> ConnectX-<b class='flag-5'>7</b> 200G网卡配置教程

    umqtt_deliver_message 用户端注册执行函数的回调,用户端的消息回调函数没有被执行到,为什么?

    加了两个topic比对的打印,也进入到回到了,就是注册的函数没有被执行到 2.发送服务是能够被正常的接收到的.这个是开debug时候的打印,不开debug一点消息也没有 3.有没有遇到类似的问题的?
    发表于 10-09 06:09

    光缆怎么分ab

    、基站等)。 B:光缆的终止,通常连接接收设备(如终端盒、用户端等)。 作用: 确保光纤对(如TX-RX)正确配对,避免信号反射或丢失。 在环形网络或双纤链路中,AB区分可防止光
    的头像 发表于 09-28 09:38 2542次阅读

    NVIDIA桌面GPU系列扩展新产品

    NVIDIA 桌面 GPU 系列扩展,推出 NVIDIA RTX PRO 4000 SFF Edition GPU 和 RTX PRO 2000 Blackwell GPU,可提高工程、内容创作和 3D 可视化等应用的性能。
    的头像 发表于 08-18 11:50 1630次阅读

    如何本地部署NVIDIA Cosmos Reason-1-7B模型

    近日,NVIDIA 开源其物理 AI 平台 NVIDIA Cosmos 中的关键模型——NVIDIA Cosmos Reason-1-7B。这款先进的多模态大模型能够理解视频、进行物理
    的头像 发表于 07-09 10:17 1007次阅读

    使用NVIDIA Triton和TensorRT-LLM部署TTS应用的最佳实践

    针对基于 Diffusion 和 LLM 类别的 TTS 模型,NVIDIA Triton 和 TensorRT-LLM 方案能显著提升推理速度。在单张 NVIDIA Ada Lovelace
    的头像 发表于 06-12 15:37 2061次阅读
    使用<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b>和TensorRT-LLM部署TTS应用的最佳实践

    普密斯IMAGE 3系列:珠宝加工行业的尺寸测量新宠

    普密斯 IMAGE 3 系列图像尺寸测量仪凭借其适应珠宝材质的先进技术、高精度的测量能力和高效的检测流程,为珠宝加工行业的尺寸测量提供了全方位的解决方案。
    的头像 发表于 06-11 08:59 809次阅读
    普密斯<b class='flag-5'>IMAGE</b> 3<b class='flag-5'>系列</b>:珠宝加工行业的尺寸测量新宠

    Acrel-3000峰平谷用电量统计电能计量管理系统

    功能概述: 用户端消耗着整个电网80%的电能,用户端智能化用电管理对用户可靠、安全、节约用电有十分重要的意义。构建智能用电服务体系,全面推广用户端智能仪表、智能用电管理终端等设备用电管
    的头像 发表于 05-28 14:08 581次阅读
    Acrel-3000峰平谷用电量统计电能计量管理系统

    ServiceNow携手NVIDIA构建150亿参数超级助手

    Apriel Nemotron 15B 开源大语言模型 (LLM) 使用 NVIDIA NeMo、NVIDIA Llama Nemotron 开放数据集以及 ServiceNow 专业领域数据创建而成,并在 NVIDIA DGX
    的头像 发表于 05-12 15:37 1050次阅读

    如何在Ubuntu上安装NVIDIA显卡驱动?

    专有显卡驱动。本文将详细介绍在Ubuntu系统上安装NVIDIA显卡驱动的多种方法,帮助用户根据自身情况选择最适合的安装方式。 二,硬件参数 平台:PX22_GPU CPU:I7-1165G7
    的头像 发表于 05-07 16:05 2866次阅读
    如何在Ubuntu上安装<b class='flag-5'>NVIDIA</b>显卡驱动?