天天看点

安装torch2trt 和TensorRT 踩坑记录安装torch2trt安装TensorRT补充

以前一直以为pytorch模型转tensorrt的话,需要先转onnx才行,突然发现还有torch2trt这个东东,可以直接转torch模型为tensorrt。

安装torch2trt

torch2trt下载地址

readme上有安装说明,按他说的干就是,安装中出了一个问题,在执行sudo python setup.py install这一步时,报No module named setuptools,我当时就惊了,这个包我还是有点眼熟的,以前专门安装了的,用pip 一查,我去,上面有setuptools啊,用pip/pip3安装,把setuptools版本升级了,还是没法。百度到篇博客,给的方法时重新下载源码安装,我照做了,没法。后来各种尝试,终于找到了解决方法,把sudo去掉就好。点我看哈

安装TensorRT

在官网下载

可参考这篇博客

在将tensorrt里的lib添加到环境变量时,将环境变量打出来,发现前面多了个冒号,后面出现问题时,一直以为是这里的锅,最后才发现这个冒号不影响。感觉这个冒号是cuda环境设置的问题,改了半天也没弄好,先放过它吧

安装torch2trt 和TensorRT 踩坑记录安装torch2trt安装TensorRT补充

安装好后,运行代码,又出现问题了:ImportError: libnvinfer.so.5: cannot open shared object file: Nosuch file or directory。参考这篇博客

1)ImportError: libnvinfer.so.5: cannot open shared object file: Nosuch file or directory

2)ImportError: libnvonnxparser.so.0: cannot open shared object file:No such file or directory

3)ImportError: libnvonnxparser_runtime.so.0: cannot open shared objectfile: No such file or directory

4)ImportError: libnvparsers.so.5: cannot open shared object file: Nosuch file or directory

5)ImportError: libnvinfer_plugin.so.5: cannot open shared object file:No such file or directory

解决办法:

1) sudo cp …/TensorRT-5.0.2.6/targets/x86_64-linux-gnu/lib/libnvinfer.so.5 /usr/lib/

2)sudo cp …/TensorRT-5.0.2.6/targets/x86_64-linux-gnu/lib/libnvonnxparser.so.0/usr/lib/

3) sudo cp …/TensorRT-5.0.2.6/targets/x86_64-linux-gnu/lib/libnvonnxparser_runtime.so.0 /usr/lib/

4) sudo cp …/TensorRT-5.0.2.6/targets/x86_64-linux-gnu/lib/libnvparsers.so.5 /usr/lib/

5) sudo cp …/TensorRT-5.0.2.6/targets/x86_64-linux-gnu/lib/ libnvinfer_plugin.so.5 /usr/lib/

本以为终于可以愉快的玩耍了,结果又报错:ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory。

根据网上的建议,检测环境变量,没发现问题;软连接也有,删了重新建立,没用,留个链接以备不时之需。

最后突然想起以前也遇到过类似的问题,还顺便在博客上记了下。

点我解决

补充

由于想将yolov3转换为tensorrt,需要用到上采样,而python setup.py install安装的torch2trt是不行的。必须用作者提供的第二种安装方法:python setup.py install --plugins

按readme说明,先

sudo apt-get install libprotobuf* protobuf-compiler ninja-build

然而报错如下:

安装torch2trt 和TensorRT 踩坑记录安装torch2trt安装TensorRT补充

尝试安装zlib1g-dev:

sudo apt-get install zlib1g-dev

,报错:

安装torch2trt 和TensorRT 踩坑记录安装torch2trt安装TensorRT补充

参考这篇博客,

Linux下经常需要安装不同类型的库,在Ubuntu中,这些类库都是以“lib_name-version”的形式命名的。很多库之间存在依赖关系,即要安装这个就必须安装那个。有时候,类库之间依赖关系无法满足,你所要安装的程序就不能安装。

这类问题大多是由于相互依赖的几个库中一个或多个的版本已经更新,而用户要安装的库依赖于这几个库的较低的版本

sudo apt-get install aptitude
sudo aptitude install libprotobuf-dev
           

运行后,不接受未安装方案,接受降级方案

安装torch2trt 和TensorRT 踩坑记录安装torch2trt安装TensorRT补充

sudo apt-get install libprotobuf* protobuf-compiler ninja-build

然而还是有问题:

In file included from torch2trt/converters/interpolate/interpolate.pb.cc:4:0: ./torch2trt/converters/interpolate/interpolate.pb.h:10:40: fatal error: google/protobuf/port_def.inc: 没有那个文件或目录 compilation terminated. [2/3] g++ -c -fPIC torch2trt/converter...c++11 -I/usr/include/aarch64-linux-gnu FAILED: g++ -c -fPIC torch2trt/converters/interpolate/interpolate.cpp -I/usr/local/cuda/include -I/home/lgy/anaconda3/lib/python3.7/site-packages/torch/include -I/home/lgy/anaconda3/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I. -std=c++11 -I/usr/include/aarch64-linux-gnu torch2trt/converters/interpolate/interpolate.cpp:2:21: fatal error: NvInfer.h: 没有那个文件或目录 compilation terminated. ninja: build stopped: subcommand failed.

安装torch2trt 和TensorRT 踩坑记录安装torch2trt安装TensorRT补充

有可能是protoc版本太低

protoc --version
           

libprotoc默认为2.x版本,升级为3.x版本

protoc下载地址

下载protoc-3.11.4-linux-x86_64.zip并解压

在解压后的文件夹内,将bin文件夹内的protoc文件覆盖到/usr/bin路径下

安装torch2trt 和TensorRT 踩坑记录安装torch2trt安装TensorRT补充

并未解决问题,待续

继续阅读