11月21、22两天参加了苏州的NVIDIA GTC 2018大会,各大厂商把TensorRT 用的神乎其神,京东无人柜在TRT的加成之下,模型能搞提升一倍,效果可观。
- CUDA / CUDNN 版本修改
TensorRT5 的安装依赖 cuda 9.0 和 cuDNN 7.3.1 所以我矫枉过正,把cuda 9.2 拉回到了 cuda 9.0,并重新配置了 cuDNN。
此外我按照
这个安装过程相对简单,不再赘述。
-
pycuda 安装
我的环境是Ubuntu16.04,因为依赖装得比较多,所以这个很简单,一条命令搞定了pip3 install pycuda
,详细过程可以参考下面。
https://wiki.tiker.net/PyCuda/Installation/Linux/Ubuntu -
TRT
在编译好TRT 的例子之后,运行sample_googlenet
发现报异常,缺少libnvinfer.so.5
,google了一下原因(link),原来是需要将 TRT 编译生成的lib 都拷贝到系统lib中:在编译好TRT 的例子之后,运行sample_googlenet
发现报异常,缺少libnvinfer.so.5
,google了一下原因(link),原来是需要将 TRT 编译生成的lib 都拷贝到系统lib中:
sudo cp TensorRT-5.XXX/targets/x86_64-linux-gnu/lib/lib* /usr/lib/
拷贝完成后,再运行一遍,发现OK了。
运行了一个./sample_onnx_mnist_debug
结果如上。
需要安装的小伙伴还是需要看安装手册。
重点参考一下 CUDA,CUDNN和 TRT的安装手册。
- 在使用python API 调用
import tensorrt as trt
时,出现_py_Zero 异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/__init__.py", line 1, in <module>
from .tensorrt import *
ImportError: /home/xxx/anaconda3/lib/python3.6/site-packages/tensorrt/tensorrt.so: undefined symbol: _Py_ZeroStruct
查了一下,问题是tensorrt 仅支持 python3.5 ,不支持 python3.6,所以使pip3 install tensorrt-5.0.2.6-py2.py3-none-any.whl
默认把 tensorrt安装在了 /home/xxx/anaconda3/bin/python3 目录下,这样是找不到的,于是我将 pip3 修改为 python3.5 所在的环境,命令如下:
python3.5 -m pip install --upgrade --force-reinstall pip
,修改后 which pip3 发现指向了 /home/xxx/.local/bin/pip
。
在修改完之后,需要将此前的所有whl重新安装一遍,通过pip3 install tensorrt-5.0.2.6-py2.py3-none-any.whl
就可以了。
运行 python3.5 -c "import tensorrt as trt; print(trt.\_\_version\_\_)"
打印:5.0.2.6
。
相关链接(link)。