2. 环境搭建
环境搭建这事儿,说简单也简单,说复杂也复杂。我见过不少同学在配置上栽跟头,一卡就是好几天。说白了,TensorRT LLM 对底层环境的要求比较苛刻,版本不对、驱动不匹配,跑起来全是坑。
这一章,我就把硬件选型、软件版本搭配、Docker 镜像构建这些事儿,掰开揉碎了讲清楚。
硬件要求:GPU 型号与显存
先聊硬件。TensorRT LLM 的推理优化,核心依赖 NVIDIA GPU 的 Tensor Core 和稀疏化计算能力。不是所有卡都能跑,也不是显存够大就行。
| GPU 架构 | 推荐型号 | 最低显存 | 备注 |
|---|---|---|---|
| Ampere | A100 (40/80GB), A30, A10 | 24GB | 生产环境首选,支持 FP8 |
| Ada Lovelace | L40S, RTX 4090 | 24GB | 性价比高,适合开发调试 |
| Hopper | H100 (80/94GB), H200 | 80GB | 旗舰级,支持 FP8 和稀疏化 |
| Blackwell | B200 | 192GB | 最新架构,目前生态还在完善 |
核心原则:显存至少是模型权重的 2 倍,加上 KV Cache 的余量。比如 7B 模型用 FP16 大约 14GB,加上推理时的中间缓存,24GB 显存是起步线。
我个人习惯用 A100 80GB 做生产部署。为什么?因为 7B 到 13B 的模型,FP16 推理时 KV Cache 占用很大,显存小了容易 OOM。RTX 4090 虽然便宜,但 24GB 显存跑 13B 模型做长序列推理,基本撑不住。
避坑:我曾经在 RTX 3090 上跑 LLaMA-13B,序列长度一超过 2048 就崩。后来换了 A100,问题才解决。所以,别在显存上省钱,尤其是做长文本生成。
软件栈:版本搭配的艺术
软件版本这事儿,我踩过的坑比走过的路还多。TensorRT LLM 对 CUDA、cuDNN、TensorRT 的版本有严格依赖,乱配一个版本,编译时全是红字。
下面这张表,是我反复验证过的稳定组合:
| 组件 | 推荐版本 | 最低版本 | 说明 |
|---|---|---|---|
| CUDA | 12.4 | 12.1 | 建议用 12.4,FP8 支持更稳定 |
| cuDNN | 9.1 | 8.9 | 必须与 CUDA 版本匹配 |
| TensorRT | 10.3 | 10.0 | TensorRT LLM 依赖 TensorRT 核心库 |
| TensorRT-LLM | 0.11.0 | 0.9.0 | 建议用最新稳定版 |
| NVIDIA 驱动 | 550.54 | 535.129 | 驱动版本决定 CUDA 兼容性 |
小技巧:我建议直接用 NVIDIA 官方提供的 Docker 镜像,省去手动安装的麻烦。后面会详细讲。
你可能会问:为什么 CUDA 12.4 比 12.1 好?嗯,这里要注意。TensorRT LLM 的 FP8 量化推理,在 CUDA 12.4 上才完全稳定。我试过 12.1,跑 FP8 模型时偶尔会出现数值异常,升级到 12.4 后就再没出过问题。
Docker 镜像构建:一步到位
手动装环境太痛苦了。我强烈建议用 Docker。NVIDIA 官方提供了 TensorRT LLM 的 Dockerfile,你只需要拉下来,改改参数就行。
下面是我常用的构建流程:
- 拉取基础镜像:
nvcr.io/nvidia/tensorrt:24.04-py3 - 安装 TensorRT LLM:从 GitHub 克隆源码,用
make编译 - 验证安装:跑一个简单的推理测试
具体命令如下:
# 1. 拉取基础镜像
docker pull nvcr.io/nvidia/tensorrt:24.04-py3
# 2. 启动容器并挂载代码
docker run --gpus all -it --rm \
-v /path/to/your/code:/workspace \
nvcr.io/nvidia/tensorrt:24.04-py3
# 3. 在容器内编译 TensorRT LLM
git clone https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
git checkout v0.11.0
make -j$(nproc) release
# 4. 验证安装
python3 -c "import tensorrt_llm; print(tensorrt_llm.__version__)"
注意:编译时 -j$(nproc) 会使用所有 CPU 核心,内存至少需要 32GB。如果机器内存不够,改成 -j4 或 -j2,慢点但不会崩。
如果你不想自己编译,也可以用我构建好的镜像:
docker pull your-registry/tensorrt-llm:0.11.0-cuda12.4
不过,我建议还是自己编译一次。为什么?因为编译过程中你能看到依赖关系,出了问题也知道怎么修。直接拉镜像虽然快,但遇到版本不兼容时,你根本不知道从哪下手。
环境验证:跑通第一个模型
环境搭好了,怎么确认没问题?我一般跑一个最小的 GPT 模型做验证:
# 下载一个小的 GPT 模型
wget https://huggingface.co/gpt2/resolve/main/pytorch_model.bin
# 用 TensorRT LLM 转换并推理
python3 examples/gpt/convert_checkpoint.py \
--model_dir ./gpt2 \
--output_dir ./trt_engines/gpt2
python3 examples/gpt/run.py \
--engine_dir ./trt_engines/gpt2 \
--max_output_len 50
如果能看到正常的文本输出,恭喜你,环境搭建成功了。
我的经验:第一次跑通时,别急着上大模型。先用 GPT-2 这种小模型验证流程,确认 CUDA、cuDNN、TensorRT 都正常工作。我曾经跳过这步,直接上 LLaMA-70B,结果编译了 3 小时,最后报错说 cuDNN 版本不对。嗯,从那以后我再也不敢偷懒了。
知识体系总览
下面这张图,把环境搭建的核心逻辑串起来了:
从这张图能看出来,环境搭建分三层:硬件是地基,软件栈是框架,部署层是最终落地。每一层都依赖上一层,任何一个环节出问题,后面都跑不起来。
好了,环境搭建就聊到这儿。记住一句话:版本匹配是王道,Docker 镜像省烦恼。动手试试吧,有问题随时翻回来对照。