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,你只需要拉下来,改改参数就行。

下面是我常用的构建流程:

  1. 拉取基础镜像:nvcr.io/nvidia/tensorrt:24.04-py3
  2. 安装 TensorRT LLM:从 GitHub 克隆源码,用 make 编译
  3. 验证安装:跑一个简单的推理测试

具体命令如下:

# 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 版本不对。嗯,从那以后我再也不敢偷懒了。

知识体系总览

下面这张图,把环境搭建的核心逻辑串起来了:

TensorRT LLM 环境搭建知识体系 硬件层 GPU 架构:Ampere/Ada/Hopper 显存:≥24GB(7B 模型) 推荐:A100 80GB / H100 软件栈层 CUDA 12.4 cuDNN 9.1 TensorRT 10.3 TensorRT-LLM 0.11.0 NVIDIA 驱动 ≥550.54 部署层 Docker 镜像构建 源码编译安装 环境验证(GPT-2 测试) 核心原则:版本必须严格匹配,推荐使用 Docker 镜像 避免手动安装带来的版本冲突问题 硬件选型 软件安装 验证测试

从这张图能看出来,环境搭建分三层:硬件是地基,软件栈是框架,部署层是最终落地。每一层都依赖上一层,任何一个环节出问题,后面都跑不起来。

好了,环境搭建就聊到这儿。记住一句话:版本匹配是王道,Docker 镜像省烦恼。动手试试吧,有问题随时翻回来对照。