前段时间写了tvm的转换编译部署相关的文章,
牛先生:神经网络编译器TVM,autoTVM自动代码优化及c++部署cuda实践20 赞同 · 0 评论文章正在上传…重新上传取消
以及tensorrt偏向讲原理的文章:
牛先生:tensorRT量化实践手册3 赞同 · 0 评论文章
后来发现现在用tensorrt的还更多一些。今天也总结下,tensorrt的对应python接口模型转换,模型推理,模型量化相关的内容。
作者做tensorrt在ubuntu桌面和jetson都做了相关的实践。总的来看,接口基本是一致的,可以直接用。jetson的tensorrt版本要小一些,有的特性可能不支持。
首先拿到onnx模型,不会转的同学自行百度吧,讲的文章太多了。随后总的工作流如下:
- 安装相关环境
- 调通python接口,onnx的推理代码,用于后面的一致性验证
- python接口转换F32的tensorrt模型
- python接口加载F32模型,执行推理并验证一致性
- c++接口加载F32模型,执行推理并验证一致性
- python接口转换Int8模型【含量化校准】
- python接口加载int8模型,执行推理并验证一致性
- c++接口加载INT8模型,执行推理并验证一致性
根据以上的 pipe line 开始吧 !
相关环境的安装以及文档
假设平台是 ubuntu 桌面 18.04 X86_64。还是和普通的显卡推理环境基本一致,安装驱动,安装cuda ,安装 tensorrt 包。这里贴一个tensorrt的包位置吧:
NVIDIA Developerdeveloper.nvidia.com/nvidia-tensorrt-8x-download
下载下来后是 TAR包解压。再配置相关的环境变量就可以了。官方有个教程:
我使用的是TAR包的安装方式。
wheel 包不用安装完,我仅仅安装了TensorRTwheel file。
另外还需要注意的是解压后的lib文件夹路径需要加到 ldconfig路径。并执行ldconfig使能。
这些事情做完后,如果是在ubuntu桌面环境,开发环境就差不多OK 了
假设环境是Jetson的移动平台:
首先是下载Jetson的刷机镜像包,我是NX,贴一个下载路径:
JetPack SDKdeveloper.nvidia.com/zh-cn/embedded/jetpack
网上刷机教程也很多,这里就不说了,自行百度。刷机完成后环境里面比如tensorrt , cuda . opencv 都有了。
为了使开发过程更愉快点,我们安装一下相关的辅助工具,以及包:
首先配置一个Jetson 上面也比较好使用的VNC:
jetson nano开启VNCblog.csdn.net/weixin_43181350/article/details/106491056正在上传…重新上传取消
随后安装一些必备的补充软件和包:
sudo apt install python3-pip
sudo apt-get install libjpeg-dev zlib1g-dev
sudo apt-get install libprotobuf-dev protobuf-compiler
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host=https://pypi.tuna.tsinghua.edu.cn/simple statsmodels cython numpy pycuda pillow
sudo pip3 install jetson-stats
另外jetson上面也可以安装torch , 选择性安装吧。
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host=https://pypi.tuna.tsinghua.edu.cn/simple ./torch-1.6.0-cp36-cp36m-linux_aarch64.whl
其他版本的torch 如下:
相关官方API文档传送门:
对于开发IDE而言,就使用pycharm+Clion就好了。当然vscode也行。我自己用着pycharm和clion的跳转以及