NVIDIA Triton:使用OpenVINO后端部署AI模型
创作时间:
作者:
@小白创作中心
NVIDIA Triton:使用OpenVINO后端部署AI模型
引用
1
来源
1.
https://www.atyun.com/59575.html
Triton Inference Server是一款开源软件,用于通过模型服务优化和部署机器学习模型。OpenVINO是一个开源工具包,专门用于在英特尔架构上优化和部署深度学习模型。本文将向你展示如何在带有OpenVINO后端的Triton Inference Server上部署模型,从下载和准备模型到从客户端向服务器发送推理请求。
设置
在开始之前,需要确保已经安装了Docker和wget。以下是具体的安装命令:
sudo apt install wget
部署ONNX模型
- 构建模型资源库并下载ONNX模型:
mkdir -p model_repository/densenet_onnx/1
wget -O model_repository/densenet_onnx/1/model.onnx \
https://contentmamluswest001.blob.core.windows.net/content/14b2744cf8d6418c87ffddc3f3127242/9502630827244d60a1214f250e3bbca7/08aed7327d694b8dbaee2c97b8d0fcba/densenet121-1.2.onnx
- 创建一个名为
config.pbtxt
的新文件:
name: "densenet_onnx"
backend: "openvino"
default_model_filename: "model.onnx"
- 将
config.pbtxt
文件放入模型资源库,其结构如下:
model_repository
|
+-- densenet_onnx -- densenet_onnx
|
+-- config.pbtxt
+-- 1
|
+-- model.onnx
注意:该目录结构是Triton推理服务器读取配置和模型文件的方式,必须遵循所需的布局。除所需的模型文件外,请勿在模型资源库中放置任何其他文件夹或文件。
- 运行Triton推断服务器:
docker run --rm -p 8000:8000 -p 8001:8001 -p 8002:8002 -v /path/to/model_repository:/models nvcr.io/nvidia/tritonserver:24.04-py3 tritonserver --model-repository=/models
- 从GitHub下载Triton Client代码
client.py
到你想运行Triton Client的地方:
wget https://raw.githubusercontent.com/triton-inference-server/tutorials/main/Quick_Deploy/ONNX/client.py
- 在与
client.py
文件相同的位置运行Triton客户端,安装依赖项,并查询服务器:
docker run -it --rm --net=host -v ${PWD}:/workspace/ nvcr.io/nvidia/tritonserver:24.04-py3-sdk bash
pip install torchvision
wget -O img1.jpg "https://www.hakaimagazine.com/wp-content/uploads/header-gulf-birds.jpg"
python3 client.py
- 输出:
['11.549026:92' '11.232335:14' '7.528014:95' '6.923391:17' '6.576575:88']
部署PyTorch模型
- 下载并准备PyTorch模型。PyTorch模型(.pt)需要转换为OpenVINO格式。创建
downloadAndConvert.py
文件下载PyTorch模型,并使用OpenVINO模型转换器保存model.xml
和model.bin
:
import torchvision
import torch
import openvino as ov
model = torchvision.models.resnet50(weights='DEFAULT')
ov_model = ov.convert_model(model)
ov.save_model(ov_model, 'model.xml')
安装依赖项:
pip install openvino
pip install torchvision
运行downloadAndConvert.py
:
python3 downloadAndConvert.py py
- 创建一个名为
config.pbtxt
的新文件:
name: "resnet50 "
backend: "openvino"
max_batch_size : 0
input [
{
name: "x"
data_type: TYPE_FP32
dims: [ 3, 224, 224 ]
reshape { shape: [ 1, 3, 224, 224 ] }
}
]
output [
{
name: "x.45"
data_type: TYPE_FP32
dims: [ 1, 1000 ,1, 1]
reshape { shape: [ 1, 1000 ] }
}
]
- 将
config.pbtxt
文件以及model.xml
和model.bin
文件放入模型资源库,文件夹结构如下:
model_repository
|
+-- resnet50 -- resnet50
|
+-- config.pbtxt
+-- 1
|
+-- model.xml
+-- model.bin
注意:该目录结构是Triton推理服务器读取配置和模型文件的方式,必须遵循所需的布局。除所需的模型文件外,请勿在模型资源库中放置任何其他文件夹或文件。
- 运行Triton推断服务器:
docker run --rm -p 8000:8000 -p 8001:8001 -p 8002:8002 -v /path/to/model_repository:/models nvcr.io/nvidia/tritonserver:24.04-py3 tritonserver --model-repository=/models
- 在另一个终端,从GitHub下载Triton Client代码
client.py
到你想运行Triton Client的地方:
wget https://raw.githubusercontent.com/triton-inference-server/tutorials/main/Quick_Deploy/PyTorch/client.py
在client.py
文件中,由于模型与Triton教程中的模型略有不同,你需要更新模型的输入和输出名称,以便与后端所期望的名称一致。例如,将PyTorch模型中使用的原始输入名称(input__0)改为OpenVINO后端使用的名称(x)。
- 在与
client.py
文件相同的位置运行Triton客户端,安装依赖项并查询服务器:
docker run -it --net=host -v ${PWD}:/workspace/ nvcr.io/nvidia/tritonserver:24.04-py3-sdk bash
pip install torchvision
wget -O img1.jpg "https://www.hakaimagazine.com/wp-content/uploads/header-gulf-birds.jpg"
python3 client.py
- 输出:
[b'6.354599:14' b'4.292510:92' b'3.886345:90' b'3.333909:136' '6.354599:14' b'4.292510:92' b'3.886345:90' b'3.333909:136'
b'3.096908:15']
部署TensorFlow模型
- 下载并准备TensorFlow模型。以SavedModel格式导出TensorFlow模型:
docker run -it --gpus all -v ${PWD}:/workspace nvcr.io/nvidia/tensorflow:24.04-tf2-py3
python3 export.py
模型需要转换为OpenVINO格式。创建convert.py
文件,使用OpenVINO模型转换器保存model.xml
和model.bin
:
import openvino as ov
ov_model = ov.convert_model('path_to_saved_model_dir')
ov.save_model(ov_model, 'model.xml')
安装依赖项:
pip install openvino
运行convert.py
:
python3 convert.py py
- 创建名为
config.pbtxt
的新文件:
name: "resnet50"
backend: "openvino"
max_batch_size : 0
input [
{
name: "input_1"
data_type: TYPE_FP32
dims: [-1, 224, 224, 3 ]
}
]
output [
{
name: "predictions"
data_type: TYPE_FP32
dims: [-1, 1000]
}
]
- 将
config.pbtxt
文件以及model.xml
和model.bin
文件放入模型资源库,结构如下:
model_repository
|
+-- resnet50 -- resnet50
|
+-- config.pbtxt
+-- 1
|
+-- model.xml
+-- model.bin
注意:该目录结构是Triton推理服务器读取配置和模型文件的方式,必须遵循所需的布局。除所需的模型文件外,请勿在模型资源库中放置任何其他文件夹或文件。
- 运行Triton推断服务器:
docker run --rm -p 8000:8000 -p 8001:8001 -p 8002:8002 -v /path/to/model_repository:/models nvcr.io/nvidia/tritonserver:24.04-py3 tritonserver --model-repository=/models
- 在另一个终端,从GitHub下载Triton Client代码
client.py
到你想运行Triton Client的地方:
wget https://raw.githubusercontent.com/triton-inference-server/tutorials/main/Quick_Deploy/TensorFlow/client.py
- 在与
client.py
文件相同的位置运行Triton客户端,安装依赖项并查询服务器:
docker run -it --net=host -v ${PWD}:/workspace/ nvcr.io/nvidia/tritonserver:24.04-py3-sdk bash
pip install --upgrade tensorflow
pip install image
wget -O img1.jpg "https://www.hakaimagazine.com/wp-content/uploads/header-gulf-birds.jpg"
python3 client.py
- 输出:
[b'0.301167:90' b'0.169790:14' b'0.161309:92' b'0.093105:94' '0.301167:90' b'0.169790:14' b'0.161309:92' b'0.093105:94'
b'0.058743:136' b'0.050185:11' b'0.033802:91' b'0.011760:88'
b'0.008309:989' b'0.004927:95' b'0.004905:13' b'0.004095:317'
b'0.004006:96' b'0.003694:12' b'0.003526:42' b'0.003390:313'
...
b'0.000001:751' b'0.000001:685' b'0.000001:408' b'0.000001:116'
b'0.000001:627' b'0.000001:933' b'0.000000:661' b'0.000000:148']
总结
总体而言,Triton推理服务器与OpenVINO后端相结合,为部署和服务机器学习模型提供了强大的解决方案,具有硬件加速、优化和模型服务功能。
热门推荐
如何快速调整 Windows 系统中的字体大小?
圣诞节的由来、习俗、元素:你不知道的历史故事
调查 | 电动自行车线路、电池也需保养?很多商家竟也不了解
如何打造高效仓储团队
Emo文化深度解析:从音乐到青年亚文化的发展历程
小家电选购指南与使用技巧
中小企业理财架构规划全攻略:从目标设定到技术应用
四川大学华西医院李为民/王成弟团队:创建适合中国人群肺结节风险分级及精准管理策略
神奇的动物世界 | 聪明的黑猩猩
计算机编程中的领域特定语言(DSL)设计与应用实例
6个方法快速治疗口腔溃疡
6个方法快速治疗口腔溃疡
从源码如何判断抽奖真假
春季猪场防疫指南:消毒与病毒防控缺一不可
对非洲猪瘟病毒有效的消毒剂有哪些?
打丙种免疫球蛋白有什么作用
从“追着太阳种西瓜”到“跟着数据种西瓜” 瓜农天下:数据赋能 天下共富
时家奇门:从古代占卜术到现代思维工具的演变与应用
「自由重量」与器械训练,哪个对增肌更好?是时候解决这场辩论了
一句话总结:耦合电容(Coupling Capacitor)
俗话“上午清明暖烘烘,下午清明冷飕飕”,今年清明几点?有啥讲究?
“画喜”风潮兴起:自己动手,让蛋糕成为艺术画布
9部必看恋爱动漫,承包你一整年的心动与泪点
经济好转的时机如何判断?经济好转的迹象有哪些?
高尔夫车型的市场表现和用户评价如何?这种评价如何影响消费者的购买倾向?
签证时间晚,机票也跟着晚,怎么办?机票能改签吗?
垂体瘤术后:这13个护理要点很重要!
如果光子的静止质量不为零,会怎么样?
巩的意思和解释
黄金新款的设计趋势对市场有何影响?投资者如何根据趋势进行投资?