tensorRT介绍
有关tensorRT的介绍见
TensorRT简介-CSDN博客
前置准备
安装cuda与cudnn
安装理论支持
cuda的安装步骤比较统一,无论使用什么系统,其原理都是一样的
- 使用nvidia-smi查看nvidia驱动支持的最高cuda版本
- 进入官网下载对应的cuda安装包
- 进行安装
- 安装结束后修改环境变量(目的是让系统找到cuda里的头文件和lib文件以及nvcc) - 如果是linux系统,并且使用默认安装,则会安装/usr/local下,这个路径不用设置,系统会识别,而如果是自定义安装,则需要修改.bashrc配置文件配置环境变量- 如果是windows系统,编辑系统环境变量即可
cudnn的安装更加简单,因为我们一般是在编程的时候引用cudnn中的库文件,因此
- 只需下载cudnn的tar包解压之后
- 将cudnn中的头文件内容拷贝到cuda文件目录的头文件目录
- 将cudnn中的库文件内容拷贝到cuda文件目录下的库文件目录
不同系统下的具体安装
以下是在不同系统下安装cuda与cudnn的操作步骤
linux
Linux下安装cuda和对应版本的cudnn_linux怎么在自己的环境中安装cuda和cudnn-CSDN博客
如果要安装在非root用户安装参考这篇:
Linux 服务器下非root用户安装CUDA完整流程(多次踩雷经验总结)_linux cuda安装-CSDN博客
windows
windows安装cuda与cudnn-CSDN博客
安装验证
cuda版本查看
linux与windows均可使用以下命令查看cuda版本
nvcc -V
TensorRT安装
下载安装包
进官网查看对应cuda版本的tensorRT
TensorRT Download | NVIDIA Developer
官网页面打开如下所示, 每个版本的tensorRT都有对应操作系统与cuda版本的说明
注意,win11只有tensorRT10支持
linux安装包下载
linux下我们以安装tensorRT8为例,如下图所示
- 第一个红色框是cuda11(如图可支持cuda11.0、11.2、11.3、11.4、11.5、11.6、11.7)对应的安装包
- 第二个红色方框是cuda12对应的安装包
- 找到自己对应cuda版本的安装包即可,建议下载tar包,安装比较方便
windows安装包下载
由于windows11下只有tensorRT10支持,如下图所示,仍旧找到自己的安装包下载(如果是windows10,也可安装其余版本,只要版本对应即可)
linux安装
安装
下载好安装包后,将文件解压至 /usr/local,如下所示
然后将tensorrt的头文件和库文件加入到环境变量中,配置~/.bashrc文件
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/TensorRT-8.5.3.1/lib
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/TensorRT-8.5.3.1/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/TensorRT-8.5.3.1/include
添加完路径后使配置文件生效
source ~/.bashrc
安装验证
进入到 /usr/local/TensorRT-8.5.3.1/samples/sampleOnnxMNIST路径下,执行
sudo make
进入/usr/local/TensorRT-8.5.3.1/bin目录,运行可执行文件sample_onnx_mnist,如果编译和运行过程都没有问题则说明tensorrt安装成功,运行结果如下
windows安装
安装
首先找到自己cuda的安装路径,打开cmd命令行窗口,输入
which nvcc
如果cuda安装成功,会显示cuda的安装路径
/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/bin/nvcc
然后解压下载的tensorRT安装包,将tensorRT中lib目录和include目录中的文件内容都拷贝到cuda对应的目录文件下
环境变量配置
右键“此电脑”,点击"属性",点击“高级系统设置”,即可打开系统属性面板
也可以在搜索框输入“编辑系统环境变量”,也可打开下述面板
然后点击环境变量
用户变量一栏,点击Path
点击“新建”,将对应TensorRT解压的文件夹下的bin目录路径,以及cuda安装目录下的lib目录、include目录,以及lib下的x64目录路径设置进去,如下所示
然后逐步点击“确定”,直到所有面板关闭,一定不要直接点右上角关闭,否则配置会失败
安装验证
打开cmd命令窗口,输入
trtexec --help
如果显示以下帮助信息,说明TensorRT中的trtexec程序可用,否则检查trtexec程序(TensorRT解压安装包的bin目录下)的环境变量是否配置正确
接下来代码验证trtexec是否可成功执行,打开python,写下如下python代码,更多代码细节见
PyTorch模型转换ONNX 入门-CSDN博客
import torch
import torchvision.models as models
import onnx
import onnxruntime
# 加载 PyTorch 模型
model = models.resnet18(pretrained=True)
model.eval()
# 定义输入和输出张量的名称和形状
input_names = ["input"]
output_names = ["output"]
batch_size = 1
input_shape = (batch_size, 3, 224, 224)
output_shape = (batch_size, 1000)
# 将 PyTorch 模型转换为 ONNX 格式
torch.onnx.export(
model, # 要转换的 PyTorch 模型
torch.randn(input_shape), # 模型输入的随机张量
"resnet18.onnx", # 保存的 ONNX 模型的文件名
input_names=input_names, # 输入张量的名称
output_names=output_names, # 输出张量的名称
dynamic_axes={input_names[0]: {0: "batch_size"}, output_names[0]: {0: "batch_size"}} # 动态轴,即输入和输出张量可以具有不同的批次大小
)
# 加载 ONNX 模型
onnx_model = onnx.load("resnet18.onnx")
onnx_model_graph = onnx_model.graph
onnx_session = onnxruntime.InferenceSession(onnx_model.SerializeToString())
# 使用随机张量测试 ONNX 模型
x = torch.randn(input_shape).numpy()
onnx_output = onnx_session.run(output_names, {input_names[0]: x})[0]
print(f"PyTorch output: {model(torch.from_numpy(x)).detach().numpy()[0, :5]}")
print(f"ONNX output: {onnx_output[0, :5]}")
如果代码运行不成功,查看pytorch是否安装、onnx模块是否安装、onnxruntime模块是否安装
如果代码运行成功,会在本地输出一个mymodel.onnx文件
接下来打开该文件所在路径,打开cmd,输入
trtexec --onnx=mymodel.onnx --saveEngine=model.trt
如果运行成功,说明TensorRT安装成功
如果这里运行失败,**检查环境变量是否配置正确 **
参考
ubuntu20.04 安装TensorRT c++库 - Wangtn - 博客园 (cnblogs.com)
TensorRT安装部署指南(Windows10) - 知乎 (zhihu.com)
版权归原作者 你好,此用户已存在 所有, 如有侵权,请联系我们删除。