Triton_Objectdet总体部署流程

一、开发环境准备工作

1、进入终端后,不显示工作目录,输入命令bash
2、打开vscode,不能远程notebook
上传vscode-server;

apt install openssh-server
service ssh restart

3、密码不对,拒绝访问

cd /
passwd

4、2080 容器镜像使用triton_runtime_20210406 或 triton_lhh
3090 tritonobjlhh3090 tritonlhh2

二、模型转换

1、对于标牌检测和交通灯的模型, 需要进入到 convert_onnx_script 文件夹先把 pytorch 模型转为 onnx,在转换为tensorrt模型替换掉挂载的模型

cd /root/work/TRITON_UNIVERSE_ALL/plan_build_script/light_yolov4/convert_onnx_script
python3 demo_darknet2onnx.py model.cfg model.weights sample_img.jpg 1
cd ..
mv convert_onnx_script/model_1_3_896_896.onnx ./model.onnx
make -j20
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./plugin
./yolov4_builder

得到一个 model.plan 文件, 把这个文件替换掉原来挂载的 .plan 文件即可
2、执行./yolov4_builder报错
/yolov4_builder: error while loading shared libraries: libyolov4Plugin.so: cannot open shared object file: No such file or directory
加上export LD_LIARARY_PATH=$LD_LIBRARY_PATH:./plugin,解决,成功执行:
在这里插入图片描述

3、把项目里转换得到的最新模型,替换到本地的tritonobjectdet/model的对应要素里,同时替换notebook model_new里面的模型和类别文件
总结一下,先把要更新的权重网络类别文件替换到plan_build_script
模型转换成功后,替换model_new里面的,这里可以直接执行copy_weight.py
测试没问题,替换本地的

三、项目编译

按照how_run.md里面一步步执行

1、删除

删除的东西都在builddir里面

cd TRITON_UNIVERSE_ALL
cd triton_universe
cd builddir
rm cmake_install.cmake CMakeCache.txt
rm -r ./hiredis/src ./hiredis/tmp
rm -r ./libco/src ./libco/tmp ./libevent/src ./libevent/tmp
rm -r ./libevhtp/src ./libevhtp/tmp ./opencv/src ./opencv/tmp
rm -r ./trtis/src ./trtis/tmp 
rm ./trtis/cmake_install.cmake ./trtis/CMakeCache.txt

2080和3090环境互换的时候,必须执行这一步,否则会编译报错

2、编译

确认是否在 triton_universe/builddir目录下

cmake ../build
make -j4

3、添加环境变量

cd trtis/install/bin
export ...
export ...

四、发版之前测试在线服务

1、清理缓存

不然可能会影响服务的运行

cd /root/work/TRITON_UNIVERSE_ALL
ll
find ./ -name ".ipynb_checkpoints" | xargs rm -rf

2、确认路径

确认config.json和model_new相对路径是否正确
3090的config.json可以设置到150,2080ti可以设置70

3、执行文件

(1) 启动一个在线服务

cd /root/work/TRITON_UNIVERSE_ALL/triton_universe/builddir/trtis/install/bin
./triton_objectdet -c ../../../config.json -m ../../../../../model_new/

遇到错误Segmentation fault(core dumped)
解决方法,有可能是批量和在线服务的参数没有设置正确:
/root/work/TRITON_UNIVERSE_ALL/triton_universe/src/servers/main.cc里104行,更改为在线模式

bool ONLINE_OR_BATCH = true

更改完一些源文件之后,记得在/root/work/TRITON_UNIVERSE_ALL/triton_universe/builddir下重新编译

make

成功启动在线服务后,处于监听请求的状态:
在这里插入图片描述
1、有时候notebook中断重启之后,直接执行可执行文件会报错:libtrttonserver.so:cannot open shared object file:No such file or directory,则需要重新执行export改变环境变量的那两条命令
2、有时候类别数修改了,对应要素的config.pbxt里也要修改,特别是model_new里面的,一般报错维度不符,都是这个原因

(2) 执行在线服务脚本

cd /root/work/TRITON_UNIVERSE_ALL/py_script
python client_script.py

这里设置的是要推理的要素和存放的地址键值
在这里插入图片描述
生成的结果:
在这里插入图片描述
可视化结果:
在这里插入图片描述
在这里插入图片描述
注意:只有键值名一致,才会有结果。
如果类别名字不对,记得修改类别文件,本地别忘了一起修改,修改之后,重新启动服务,重新测试,重新确认结果

五、本地项目内容修改

1、修改可执行文件和模型

部署修改bin文件夹下的可执行文件
lib不要动
model里面是所有需要用到的模型
在这里插入图片描述
回到上一级,把Dockerfile和文件夹打包成下面的tar包,这个包即为下一步部署发布里需上传的镜像
在这里插入图片描述

2、其他

(1)模型文件备注

在这里插入图片描述
delineator是轮廓标,detection_ensemble是triton的统一模型管理配置文件,且里面只有一个配置文件,sign_post_ensemble是标牌后分类的推理配置文件。

(2)可执行文件备注

在这里插入图片描述
这个可执行文件正是上一步,编译整个项目得到的。
编译之后的可执行的triton_objectdet在哪个目录下呢?
/root/work/TRITON_UNIVERSE_ALL/triton_universe/builddir/trtis/install/bin/triton_objectdet

(3)类别文件

在这里插入图片描述
这两个是一样的

六、发布新服务

1、点击部署发布,可能需要专门建立一个Triton的工作空间

在这里插入图片描述

2、新建部署任务

在这里插入图片描述

3、参数如下,新建推理环境

在这里插入图片描述名称port 端口应该是8797

4、上传镜像压缩包

在这里插入图片描述

七、发布之前的自测

在部署成功之后,需要用postman自测一下
在这里插入图片描述
记得加上token
在这里插入图片描述
成功之后会返回0

八、代码

1、源码

在这里插入图片描述
branch 是 20.08 不是 master,这个代码的主干就是

初始化 server(505~570)行
从 server 处获取 simple 这个模型的相关信息, simple 这个模型接受两个 {1,16} 维度的向量作为输入, 输出两个向量的和以及两个向量的差(572~637)
创建一个 irequest 对象, 将这个对象的输入输出初始化(639~690)
将两个 input 的值拷贝到 irequest 对象上(692~765)
执行 infer 并等待 infer 完成(767~797)
改变输入数据, 重新执行 infer(799~840)
再次改变输入, 重新执行 infer(843~884)
删除之前创建的结构体, 终止进程(886~892)

2、模型判别阈值的修改在这里插入图片描述在这里插入图片描述

九、测试批量服务

1、打开批量服务的开关

/root/work/TRITON_UNIVERSE_ALL/triton_universe/src/servers/main.cc,第104行:

bool ONLINE_OR_BATCH = false;

2、重新编译,重新导入环境变量

确认目录 /root/work/TRITON_UNIVERSE_ALL/triton_univers/builddir

make -j4
cd trtis/install/bin
export
export

3、执行批量服务

运行py_script中的write_redis.py,生成src_provider与dst_provider
导入src_provider与dst_provider

export
export
./triton_objectdet -c ../../..config.json -m ../../../../../model_new/

4、查看测试结果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值