资讯详情

docker容器里访问gpu;onnx转tenorrt trt、engin、plan格式;triton加载推理tensorrt模型

1、docker容器里访问gpu,docker安装tenorrt

参考:https://www.jianshu.com/p/8f38a63b86cc

安装: apt install nvidia-container-runtime 

验证运行tensorrt容器(暴露 --gpus ):

docker run -it --gpus all -v /data/loong/triton_test/model_repository/clip_onnx/1:/share      nvcr.io/nvidia/tensorrt:20.09-py3  bash 

直接进入容器: nvidia-smi 可以访问

容器里torch也可以访问gpu **加粗样式**

2、onnx转tenorrt trt、engin、plan格式

***1)转换还是在上面?tensorrt容器里,/usr/src/tensorrt/bin目录下, 2)因为输入是动态可变维度,需要指定minShapes(最小),optShapes(默认情况下,以随意在最大最小范围内),maxShapes(最大) 3)engin与plan等同,可以直接更改文件后缀格式

 ./trtexec --onnx=/share/model_orgin.onnx --saveEngine=/share/model_orgin.engin --minShapes=input:1x1 --optShapes=input:1x8 --maxShapes=input:1x512 

注:model_orgin.onnx 这里的onnx文件是个bert模型

3、triton加载推理tensorrt模型

***为了triton能正常推理tensorrt所以上面的模型tensorrt容器版本要推理triton版本一致,所以通过tensorrt容器里的trtexec 转换模型可以正常triton容器推理:

1)文件格式及config.pbtxt

config.pbtxt **因为tensorrt不支持int64.上述转换已成为int32

name: "clip_trt" # 模型名,也是目录名 platform: "tensorrt_plan" # 这次使用了模型对应的平台torch,在官方文档中可以找到不同格式对应的平台 max_batch_size : 0 # 最大的一次送入模型bsz,防止oom  input [   {     name: "input" # 输入名字,对于torch代码中的名称不需要对应,但必须是<name>__<index>注意两条下划线的形式,写错报错     data_type: TYPE_INT32 # 类型,torch.long对应的就是int不同语言的64tensor类型与triton在官方文档中可以找到类型的对应关系     dims: [ 1,-1]  # -1 代表可变维度。虽然输入是二维的,但默认第一个是bsz,所以只需要写下后面的维度(如果是[-1(无法理解的操作,-1]调用模型报错)   } ]  output [   {     name: "output" # 命名规范与输入相同     data_type: TYPE_FP32     dims: [1,512] } ] 

2)运行triton

docker run --rm --gpus all -p8000:8000 -p8001:8001 -p8002:8002 -v/data/loong/triton_test/model_repository:/models nvcr.io/nvidia/tritonserver:20.09-py3 tritonserver --model-repository=/models 

3)http访问 trt_infer.py

import requests import numpy as np if __name__ == "__main__":     request_data = {         "inputs": [{                 "name": "input",                 "shape": [1,10],                 "datatype": "INT32",                 "data": [[101,23, 235,25,678,562, 671, 1372, 4344,  102]]         }],         "outputs": [{"name": "output"}] }     res = requests.post(url="http://localhost:8000/v2/models/clip_trt/versions/1/infer",json=request_data).json()     print(res) 

标签: bsz808a振动传感器变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司