首先介绍下tensorRT,tensorRT类似于tensorflow serving,都是一种用于将训练好的深度学习模型用于实时inference的工具,区别在于tensorflow serving是以一种server的方式提供出来的也就是grpc服务,而tensorRT目前是以一种library的方式提供的,当然我们可以自行包装成一个server,其实NVIDIA官方也已经有基于tensorRT的Inference Server了这个是后话。
相比于tensorflow serving,tensorRT对gpu的支持更加的好,inference更加快,毕竟是NVIDIA自家的;并且tensorRT支持多种深度学习框架,比如tensorflow、caffe、paddle paddle,pytorch等,tensorflow serving的话虽说也可以通过扩展的方式来支持,但是比较麻烦而且非官方。
caffe模型的话可以直接导入,其他深度学习框架的模型需要通过tensorRT的parse工具转换成UFF格式,或者是ONNX标准。tensorRT甚至支持以编程的方式直接添加layer,并设置参数。
好了上面是简单介绍下tensorRT,下面讲下如何在centos上安装。tensorRT的官方是比较支持Ubuntu的,提供的文档也基本基于Ubuntu。本文是基于Centos7.5, Tesla M40的。
1.首先你需要安装好NVIDIA驱动、cuda、cudnn,我的机器已经安装了 不多说,网上的教程也多的是。 这里要注意NVIDIA的driver要375以上版本的,cuda我这里用的是9.0,cudnn我用的是7.1。
2.安装好上面步骤之后,到这里https://developer.nvidia.com/nvidia-tensorrt-download 下载tensorRT 4.0的安装包,注意要选对符合你cuda和cudnn的对应版本的,另外这里列出的都是Ubuntu的,没关系,我们不选tar file installed packages。
3.下载完后,解压,接着 vi ~/.bashrc,添加如下内容
1 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/andy/TensorRT/lib:/usr/local/cuda-9.0/lib64
其中/home/andy/TensorRT替换成你自己实际的目录,cuda-9.0也是。
1 source ~/.bashrc
使之生效。
4.然后就是安装对应的python库,包括tensorRT,uff和graphsurgeon。
方法是直接用pip install对应的whl包,几个包分别在tensorRT目录下的python、uff、graphsurgeon目录下,进到这三个目录下,执行 pip install xxx.whl即可。
搞定后,进到python环境下,执行下import tensorrt,正常的话可以成功导入。
5.最后可以编译一下tensorRT提供的一些sample。进到tensorRT的sample目录下,执行make CUDA_INSTALL_DIR=/usr/local/cuda,完成后到tensorRT的bin目录下,可以看到已经生成了可执行的sample,执行./sample_mnist 就可以输出一副字符组成的数字图片,下面跟着mnist的预测结果。 ok整个安装搞定了。
过程中可能会遇到的错误
1.报错
1 libnvparsers.so: undefined reference to `std::invalid_argument,undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)
解决方法:gcc的版本问题,可以升级到gcc5.3,然后在环境变量中替换老的gcc,并且把新的gcc的glibc替换原有的旧的