第二章 开发环境准备:Ubuntu系统安装、NVIDIA驱动与CUDA安装、cuDNN安装与验证、TensorRT安装包获取
好,咱们正式开始动手了。这一章,说白了就是搭台子。你想想看,TensorRT再牛,也得有个能跑的环境。我见过太多人,模型写好了,一部署就翻车,十有八九是环境没搞对。所以这一章,咱们把地基打牢。
2.1 Ubuntu系统安装——别小看这一步
我个人习惯用Ubuntu 20.04 LTS或22.04 LTS。为什么?因为NVIDIA的驱动和CUDA对这两个版本支持最稳。你非要用18.04或者最新的24.04,也不是不行,但我在项目中遇到过几次驱动兼容性问题,折腾半天,最后发现换个系统版本就解决了。嗯,这里要注意。
安装过程我就不细说了,网上教程一堆。但有几个关键点我得提一下:
- 磁盘分区:建议给根目录至少留50GB。TensorRT本身不大,但CUDA、cuDNN、还有你后面要编译的各种库,加起来很占地方。我吃过这个亏,分区给小了,后来天天清缓存。
- 网络配置:安装时最好连上网,让系统自动更新。不然后面装驱动时缺依赖包,你会很痛苦。
- SSH服务:如果你是远程开发,记得装openssh-server。我习惯装完系统第一件事就是打开SSH,方便后面用笔记本连过去操作。
sudo apt update && sudo apt upgrade -y,把系统包更新到最新。这能避免很多莫名其妙的依赖问题。
2.2 NVIDIA驱动安装——最坑的一步
驱动安装,可以说是整个环境准备里最容易翻车的地方。我曾经在一台服务器上折腾了整整一个下午,最后发现是内核版本和驱动不匹配。
我推荐两种方式:
- 使用Ubuntu官方仓库:最简单,但版本可能不是最新的。
- 使用NVIDIA官方.run文件:版本最新,但需要手动处理一些依赖。
我个人更推荐第二种,因为可控性更强。具体步骤:
# 先卸载旧驱动(如果有)
sudo apt purge nvidia-* -y
# 禁用nouveau开源驱动
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
# 重启后,进入命令行模式(Ctrl+Alt+F2)
# 下载对应显卡的驱动
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/550.54.14/NVIDIA-Linux-x86_64-550.54.14.run
# 安装
chmod +x NVIDIA-Linux-x86_64-550.54.14.run
sudo ./NVIDIA-Linux-x86_64-550.54.14.run
sudo apt install linux-headers-$(uname -r) 再试。
装完后,用 nvidia-smi 验证。如果能看到显卡信息,说明驱动装好了。看不到?别慌,重启一下试试。
2.3 CUDA安装——版本匹配是门学问
CUDA版本和驱动版本是绑定的。你装了个新驱动,但CUDA版本太老,可能跑不起来。反过来也一样。我建议直接去NVIDIA官网查一下兼容性矩阵。
我个人习惯用runfile方式安装,因为可以自由选择安装路径,方便后面多版本切换。但如果你只是单用户使用,deb包方式更省事。
# 以CUDA 12.4为例
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run
安装时注意:
- 不要勾选Driver(因为我们已经装过了)
- Toolkit和Samples建议都选上
装完后配置环境变量:
# 在 ~/.bashrc 或 ~/.zshrc 中添加
export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH
# 生效
source ~/.bashrc
验证:
nvcc --version
看到版本号,说明CUDA装好了。
2.4 cuDNN安装与验证——别漏了这一步
cuDNN是NVIDIA的深度学习加速库。没有它,TensorRT的很多算子跑不起来。我见过有人装完CUDA就以为万事大吉,结果跑模型时各种报错,查了半天才发现cuDNN没装。
安装步骤:
- 去NVIDIA官网下载cuDNN(需要注册账号)
- 选择对应CUDA版本的cuDNN
- 解压后复制文件到CUDA目录
# 假设下载的是 cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
# 复制文件
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-12.4/include/
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-12.4/lib64/
# 设置权限
sudo chmod a+r /usr/local/cuda-12.4/include/cudnn*.h
sudo chmod a+r /usr/local/cuda-12.4/lib64/libcudnn*
验证cuDNN是否安装成功:
# 查看cuDNN版本
cat /usr/local/cuda-12.4/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
如果输出类似:
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 7
说明装好了。
mnistCUDNN 示例,编译运行一下,能跑通就说明环境没问题。
2.5 TensorRT安装包获取——选对版本很重要
TensorRT的安装包可以从NVIDIA官网下载。注意,它分几种形式:
| 安装方式 | 适用场景 | 我的建议 |
|---|---|---|
| Tar包 | 自定义安装路径,多版本共存 | 推荐,灵活度高 |
| Deb包 | 系统级安装,简单快捷 | 适合新手 |
| Pip包 | Python环境直接使用 | 适合快速测试 |
| 源码编译 | 需要定制化功能 | 不推荐,除非你有特殊需求 |
我个人习惯用Tar包。为什么?因为我可以同时保留多个版本的TensorRT,切换起来方便。比如我有时候需要对比TensorRT 8.6和10.0的性能差异,直接改个环境变量就行。
下载时注意:
- 选择对应CUDA版本的TensorRT
- 注意系统架构(x86_64还是aarch64)
- 如果做嵌入式开发,记得下载对应Jetson平台的版本
下载完成后,解压到指定目录:
tar -xzvf TensorRT-10.0.1.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
sudo mv TensorRT-10.0.1.6 /opt/
然后配置环境变量:
export TRT_PATH=/opt/TensorRT-10.0.1.6
export LD_LIBRARY_PATH=$TRT_PATH/lib:$LD_LIBRARY_PATH
export PATH=$TRT_PATH/bin:$PATH
验证:
trtexec --version
看到版本信息,说明TensorRT安装成功。
好了,环境准备就到这里。下一章,咱们开始真正接触TensorRT的核心概念。到时候我会带你手写第一个TensorRT程序,感受一下它的威力。