NVIDIA官网发布了tensorRT 7.0, 对于模型服务器部署来说,tensorRT是真的香啊。先放官网链接。
https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html
先介绍一下TensorRT
TensorRT的核心就是一个深度学习的高性能C++的推理库, 基本适配主流的训练框架,如Tensorflow, Caffe, Pytorch, MXNet。
Linux安装参考:【TensorRT】tensorRT 7.0的安装配置
Windows安装参考:Win10+VS2017环境下TensorRT 7.0的安装与测试
一、安装步骤
我以前用的是TensorRT 5.0版+Cuda 10.0 + cuDNN 7.3.1,现试一下TensorRT 7.0
安装步骤如下:
1)从官网下载安装包:https://developer.nvidia.com/tensorrt
2)解压安装包
3)将相应的安装目录和对应的 bin, lib目录加入系统path宏定义
4)确保相应的cuda版本所在目录及cuda的bin目录在系统path中,这一步我以前已做好
二、测试
测试TensorRT 7.0自带的例子sample_mnist,编译正确,但运行时非正常退出,处置如下:
1)加入debug信息(例子中只有Release版),定位到故障点,检查是否找不到文件等情况——结果不是,死在builder->createBuilderConfig()这个调用上
2)检查TensorRT 7.0对Cuda版本要求,我下载包要求的版本是:Cuda10.0+cuDNN7.6,因此将cuDNN 7.3.1升级到相应版本(7.6)——仍不行
3)更新显示卡驱动程序至最新版(我的显示卡为Geforce GTX 1650, 到NVidia网站下载)——仍不行
4) 考虑到是否TensorRT版本太高,许多环境还不支持,安装TensorRT 6.0并测试 ——仍死在同一地方
5)将Cuda 从10.0更新至10.2版,问题解决——TensorRT 6.0 & 7.0 均正确
6) 用cuDNN 7.3.1版时,运行会有警告,但结果仍正确。将cuDNN版本更新到7.6.4后警告消失。
7)虽然运行结果正确,但观察程序运行过程中所加载的DLL,发现同时加载了cuda10.0和cuda10.2的DLL库。打开程序链接提示信息,在程序链接过程中确实只加载了cuda10.2的lib库。应该是相应的TensorRT版本是在cuda10.0下编译的,因此要使用相应的库。重新下载cuda10.2版本的TensorRT后,即不再加载cuda10.0的库。
上面仅供参考,下面是实际操作:
从下载地址找到自己想要下载的版本下载。
下载地址:https://developer.nvidia.com/nvidia-tensorrt-7x-download
开发文档:https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html
下载完TensorRT-7.0.0.11.Windows10.x86_64.cuda-10.0.cudnn7.6.zip解压,然后使用vs2017打开sample_mnist.sln(因为使用了vc141,vs2015默认的是vc140,vs2017默认的是vc141,所以使用vs2017打开项目,否则编译不通过。)
由于我之前已经安装过cuda10.0和cudnn7.6.5,可以直接使用。因为我也安装了cuda10.2和cudnn7.6.5,所以查了一下编译后的依赖,依赖的是cuda10.2。毕竟才开始用vs2017,不知道cuda是在哪里配置的,vs2015可以直接配置使用哪个cuda,vs2017没有找到在哪里配置。
>dumpbin /dependents sample_mnist.exe
Microsoft (R) COFF/PE Dumper Version 14.16.27042.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file sample_mnist.exe
File Type: EXECUTABLE IMAGE
Image has the following dependencies:
nvinfer.dll
nvparsers.dll
cudart64_102.dll
MSVCP140.dll
VCRUNTIME140.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
KERNEL32.dll
1、编译后在TensorRT-7.0.0.11\bin目录下生成sample_mnist.exe。
2、将TensorRT-7.0.0.11\lib目录下的动态库拷贝到TensorRT-7.0.0.11\bin目录下。
3、下载mnist数据:打开powershell在TensorRT-7.0.0.11\data\mnist目录下执行
python .\download_pgms.py
4、在powershell下,退回到根目录\TensorRT-7.0.0.11文件夹下,执行程序:
> .\bin\sample_mnist.exe
&&&& RUNNING TensorRT.sample_mnist # D:\Program Files\TensorRT-7.0.0.11.Windows10.x86_64.cuda-10.0.cudnn7.6\TensorRT-7.0.0.11\bin\sample_mnist.exe
[09/24/2020-22:13:31] [I] Building and running a GPU inference engine for MNIST
[09/24/2020-22:13:33] [I] [TRT] Detected 1 inputs and 1 output network tensors.
[09/24/2020-22:13:33] [W] [TRT] Current optimization profile is: 0. Please ensure there are no enqueued operations pending in this context prior to switching profiles
[09/24/2020-22:13:33] [I] Input:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@#=. +*=#@@@@@@@
@@@@@@@@@@@* :. -@@@@@@@
@@@@@@@@@@# :#@@: +@@@@@@@
@@@@@@@@@* :@@@* .@@@@@@@@
@@@@@@@@= =@@@@. *@@@@@@@@
@@@@@@@= -@@@@* =@@@@@@@@@
@@@@@@@ -@@@%: -@@@@@@@@@@
@@@@@@% %%+: *@@@@@@@@@@
@@@@@@@ .. @@@@@@@@@@@
@@@@@@@# .=%%: =@@@@@@@@@@@
@@@@@@@@@@@@@# +@@@@@@@@@@@
@@@@@@@@@@@@@# @@@@@@@@@@@@
@@@@@@@@@@@@@@ @@@@@@@@@@@@
@@@@@@@@@@@@@# @@@@@@@@@@@@
@@@@@@@@@@@@@+ @@@@@@@@@@@@
@@@@@@@@@@@@@% @@@@@@@@@@@@
@@@@@@@@@@@@@@. #@@@@@@@@@@@
@@@@@@@@@@@@@@* :%@@@@@@@@@@
@@@@@@@@@@@@@@@: -@@@@@@@@@@
@@@@@@@@@@@@@@@@= %@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[09/24/2020-22:13:33] [I] Output:
0:
1:
2:
3:
4:
5:
6:
7:
8:
9: **********
&&&& PASSED TensorRT.sample_mnist # D:\Program Files\TensorRT-7.0.0.11.Windows10.x86_64.cuda-10.0.cudnn7.6\TensorRT-7.0.0.11\bin\sample_mnist.exe