3. 环境搭建与安装:硬件要求、软件依赖与部署验证
说实话,环境搭建这一步,往往是整个项目里最磨人的环节。我见过不少团队,模型选好了,代码写好了,结果卡在环境上折腾了两三天。所以这一章,咱们把硬性条件和软性依赖一次讲透。
3.1 硬件要求:GPU、显存与驱动
先聊硬件。TensorRT-LLM 对 GPU 的要求,说白了就是「越新越好,显存越大越好」。我个人习惯把 GPU 分成三个梯队:
| 梯队 | 推荐型号 | 显存要求 | 适用场景 |
|---|---|---|---|
| 入门级 | RTX 4090 / RTX 6000 Ada | 24GB - 48GB | 7B 以下模型推理、小批量测试 |
| 进阶级 | A100 80GB / A800 | 80GB | 13B - 70B 模型推理、FP8 量化 |
| 旗舰级 | H100 / H200 / B200 | 80GB - 141GB | 70B+ 模型、大规模部署、训练推理一体 |
核心原则:显存大小决定了你能跑多大的模型。以 Llama 2 70B 为例,FP16 精度下模型权重就需要 140GB 显存。就算用 INT4 量化,也得 35GB 左右。所以别想着用 24GB 的卡跑大模型——我试过,跑不起来。
驱动方面,我建议直接用 NVIDIA 官方的 R550 或更新版本的驱动。为什么?因为新驱动对 CUDA 12.x 的支持更稳定。我曾经在 R525 驱动上踩过坑,编译 TensorRT-LLM 时各种报错,换了 R550 就一切正常了。
避坑指南:不要用系统自带的 Nouveau 开源驱动。一定要装 NVIDIA 官方闭源驱动。检查方法很简单:运行 nvidia-smi,如果能看到 GPU 信息,说明驱动装好了。
3.2 软件依赖:CUDA、cuDNN、TensorRT
软件依赖这块,版本匹配是重中之重。我见过最典型的错误,就是 CUDA 11.8 配 TensorRT 9.0——编译直接报错。记住一个原则:TensorRT-LLM 的版本决定了你该用什么 CUDA 和 cuDNN。
以当前最新的 TensorRT-LLM v0.10.0 为例,推荐的依赖版本如下:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| CUDA | 12.1 / 12.4 | 建议用 12.1,兼容性最好 |
| cuDNN | 8.9.7 / 9.1.0 | 跟 CUDA 版本走 |
| TensorRT | 9.2.0 / 10.0.0 | 必须跟 TensorRT-LLM 版本匹配 |
| Python | 3.10 / 3.11 | 3.12 目前支持不太好 |
我的习惯:先装 CUDA,再装 cuDNN,最后装 TensorRT。顺序别搞反了。装完记得把 /usr/local/cuda/bin 加到 PATH 里,把 libcudnn.so 的路径加到 LD_LIBRARY_PATH 里。
3.3 源码编译与 Docker 镜像安装
安装方式有两种:源码编译和 Docker 镜像。我个人更推荐 Docker 方式,省心。但如果你需要定制化编译选项,那就得走源码编译了。
3.3.1 源码编译
源码编译其实不复杂,但耗时长。我编译一次大概要 30-40 分钟。步骤如下:
# 1. 克隆仓库
git clone https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
# 2. 初始化子模块
git submodule update --init --recursive
# 3. 编译(以 CUDA 12.1 为例)
make -j$(nproc) CUDA_VERSION=12.1
# 4. 安装 Python 包
pip install build/tensorrt_llm-*.whl
注意:编译时如果报 nvcc fatal: Unknown option -std=c++17,说明你的 CUDA 版本太旧了。升级到 CUDA 12.x 就能解决。我当初在这个问题上卡了半小时。
3.3.2 Docker 镜像安装
Docker 方式就简单多了。NVIDIA 官方提供了预编译的 Docker 镜像,拉下来就能用:
# 拉取官方镜像
docker pull nvidia/cuda:12.1.0-devel-ubuntu22.04
# 或者直接用 TensorRT-LLM 的官方镜像
docker pull nvidia/tensorrt-llm:latest
# 启动容器
docker run --gpus all -it --rm \
-v /path/to/models:/models \
nvidia/tensorrt-llm:latest /bin/bash
为什么我推荐 Docker?因为环境隔离做得好。你想想看,一个项目用 CUDA 11.8,另一个用 CUDA 12.1,如果都装在同一台机器上,很容易冲突。Docker 容器各玩各的,互不干扰。
小技巧:如果你在公司内网,拉取 Docker 镜像慢,可以配置国内镜像源。在 /etc/docker/daemon.json 里加上 "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],重启 Docker 服务即可。
3.4 验证安装
装完了怎么知道对不对?跑几个简单的验证命令就行。我一般按这个顺序检查:
- 检查 GPU 驱动:
nvidia-smi,能看到 GPU 型号和驱动版本 - 检查 CUDA:
nvcc --version,确认 CUDA 版本 - 检查 cuDNN:运行
python -c "import cudnn; print(cudnn.__version__)" - 检查 TensorRT:
python -c "import tensorrt; print(tensorrt.__version__)" - 检查 TensorRT-LLM:
python -c "import tensorrt_llm; print(tensorrt_llm.__version__)"
如果以上命令都正常输出,恭喜你,环境搭好了。如果哪一步报错,别慌。我遇到过最多的问题是 libcudnn.so 找不到,解决方法就是把 cuDNN 的 lib 路径加到 LD_LIBRARY_PATH 里。
终极验证:跑一个简单的推理测试。用 TensorRT-LLM 自带的示例脚本,加载一个小模型(比如 GPT-2),生成一段文本。能跑通,说明整个链路没问题。
这张图把整个环境搭建的流程串起来了。从硬件到系统依赖,再到安装方式,最后验证。每一步都环环相扣。你想想看,如果硬件驱动没装好,后面装 CUDA 也是白搭。所以我的建议是:按顺序来,每一步验证通过再往下走。
总结一下:环境搭建没有捷径,但可以少走弯路。硬件选对,版本匹配,按部就班,基本不会出大问题。如果真遇到问题,去 NVIDIA 官方论坛搜一下,大概率有人遇到过。