2、环境准备:GPU驱动、CUDA、Docker环境搭建与验证
说实话,做TensorRT-LLM和vLLM的对比,最怕的不是模型调优,而是环境没搭好。我见过太多同学卡在第一步——驱动版本不对,CUDA和PyTorch打架,Docker镜像拉下来跑不起来。嗯,这节课我们就一次性把这些坑填平。
2.1 硬件与软件版本选型
先说说我的个人习惯。我一般会先确认GPU型号,再决定驱动和CUDA版本。你想想看,如果你拿一张A100去配CUDA 11.0,那很多新特性就用不了。反过来,一张T4硬上CUDA 12.x,驱动可能都不支持。
下面这张表是我在项目中常用的组合,你可以直接参考:
| GPU型号 | 推荐驱动版本 | 推荐CUDA版本 | 适用场景 |
|---|---|---|---|
| A100 / H100 | ≥ 525.60.13 | 12.1 / 12.2 | TensorRT-LLM 0.7+ |
| V100 / T4 | ≥ 470.57.02 | 11.8 | vLLM 0.3+ |
| RTX 4090 | ≥ 535.129.03 | 12.1 | 本地开发测试 |
2.2 GPU驱动安装与验证
驱动安装其实很简单,但有几个细节要注意。我个人习惯用NVIDIA官方runfile安装,不用系统包管理器。为什么?因为apt或yum安装的驱动版本往往滞后,而且容易和内核模块冲突。
具体步骤:
- 先卸载旧驱动:
sudo apt purge nvidia-*(Ubuntu)或sudo yum remove nvidia-*(CentOS) - 禁用nouveau开源驱动:在
/etc/modprobe.d/blacklist-nouveau.conf中添加blacklist nouveau - 重启进入文本模式(Ctrl+Alt+F2),安装runfile
- 验证:
nvidia-smi
验证输出应该类似这样:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA A100-SXM4-80GB On | 00000000:00:04.0 Off | 0 |
| N/A 32°C P0 N/A / 400W | 0MiB / 81920MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
nvidia-smi 显示CUDA Version为"N/A",别慌。这通常意味着驱动安装没问题,只是CUDA Toolkit还没装。驱动和CUDA Toolkit是两回事,驱动负责底层通信,Toolkit提供编译器和库。
2.3 CUDA Toolkit安装
CUDA Toolkit的安装,我建议用runfile方式,而不是deb包。runfile可以自定义安装路径,方便多版本共存。我在项目中经常同时保留CUDA 11.8和12.1,通过修改 PATH 和 LD_LIBRARY_PATH 切换。
安装命令:
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run --toolkit --silent --override
安装完成后,配置环境变量:
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证:
nvcc --version
# 输出应显示 Cuda compilation tools, release 12.1, V12.1.105
2.4 Docker环境搭建
Docker是避免环境冲突的最佳方式。我个人强烈建议用NVIDIA Container Toolkit,而不是自己手动挂载GPU设备。为什么?因为Container Toolkit会自动处理驱动版本、CUDA库映射、MIG分区等复杂问题。
安装步骤:
- 安装Docker Engine(略,参考官方文档)
- 安装NVIDIA Container Toolkit:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
验证Docker GPU支持:
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
如果输出和宿主机上的 nvidia-smi 一致,说明环境搭建成功。
--shm-size,导致共享内存不足,模型加载时反复分配释放。建议加上 --shm-size=32g 参数。
2.5 环境验证:跑一个简单的TensorRT-LLM示例
环境搭好了,我们来验证一下。拉取TensorRT-LLM的Docker镜像:
docker pull nvidia/cuda:12.1.0-devel-ubuntu22.04
docker run -it --gpus all --shm-size=32g nvidia/cuda:12.1.0-devel-ubuntu22.04 /bin/bash
在容器内安装TensorRT-LLM(以0.7.0为例):
pip install tensorrt_llm==0.7.0
python -c "import tensorrt_llm; print(tensorrt_llm.__version__)"
如果输出 0.7.0,说明环境没问题。
2.6 知识体系总览
下面这张图总结了本章的核心逻辑,你可以对照着检查自己的环境:
说白了,环境准备就是一层叠一层。驱动是地基,CUDA是框架,Docker是隔离层。哪一层出问题,上层都跑不起来。我建议你按照这个顺序一步步来,别跳步。
好了,环境准备就到这里。记住,这一步花的时间越多,后面跑模型就越顺畅。别急着跳进模型部署,先把地基打牢。