2、环境准备:Docker 镜像拉取、CUDA/cuDNN/TensorRT 版本匹配、验证安装

说实话,环境配置往往是整个项目里最磨人的环节。我见过不少同学,代码写得挺溜,结果卡在环境上折腾一整天。今天咱们就把这事一次性理清楚。

2.1 为什么我推荐用 Docker?

你想想看,TensorRT-LLM 对底层依赖的要求非常苛刻。CUDA 版本、cuDNN 版本、TensorRT 版本,这三者必须严丝合缝。稍有偏差,编译时就会报一些莫名其妙的错误。

我个人习惯用 Docker 来管理这些环境。原因很简单:

  • 隔离性:不会污染你本机的开发环境
  • 可复现:团队里每个人拉同一个镜像,结果一致
  • 省心:NVIDIA 官方已经帮你配好了所有依赖
我的经验:我在项目中遇到过好几次,因为本机 CUDA 版本和项目要求不一致,导致编译失败。后来统一用 Docker,这类问题再也没出现过。

2.2 拉取正确的 Docker 镜像

TensorRT-LLM 的官方镜像托管在 NVIDIA 的容器仓库里。拉取命令很简单:

docker pull nvcr.io/nvidia/tensorrt-llm:latest

但这里有个坑——latest 标签不一定是最稳定的。我建议你根据项目文档,指定具体的版本号。比如:

docker pull nvcr.io/nvidia/tensorrt-llm:24.12

为什么要指定版本?因为不同版本的 TensorRT-LLM 对 CUDA 和 cuDNN 的要求不同。后面我会详细说版本匹配的事。

2.3 CUDA / cuDNN / TensorRT 版本匹配

这是整个环境准备的核心。说白了,这三者的关系就像齿轮,必须咬合在一起。

我整理了一个常用的版本对应表,你可以直接参考:

TensorRT-LLM 版本 CUDA 版本 cuDNN 版本 TensorRT 版本
v0.10.0 12.1 8.9 9.2
v0.11.0 12.2 8.9 9.3
v0.12.0 12.3 9.0 10.0
注意:千万不要自己手动安装 CUDA 和 cuDNN。Docker 镜像里已经配好了,你只需要拉取正确的镜像即可。我曾经手痒自己装了一次,结果版本冲突,折腾了整整一个下午。

2.4 验证安装是否成功

镜像拉取完成后,我们需要验证一下环境是否真的可用。启动容器:

docker run --gpus all -it --rm nvcr.io/nvidia/tensorrt-llm:24.12 bash

进入容器后,依次检查三个关键组件:

检查 CUDA

nvcc --version

你会看到类似这样的输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Wed_Nov_20_10:16:31_PST_2024
Cuda compilation tools, release 12.3, V12.3.107

检查 cuDNN

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

输出应该包含 cuDNN 的主版本号和次版本号。

检查 TensorRT

python3 -c "import tensorrt; print(tensorrt.__version__)"

正常情况下会打印出 TensorRT 的版本号,比如 10.0.0

验证通过的标准:三个组件的版本号与上表中的对应关系一致,且没有报错信息。

2.5 知识体系总览

为了让你更直观地理解整个环境准备流程,我画了一张图:

环境准备核心流程 Docker 镜像拉取 版本匹配检查 验证安装 CUDA 版本 cuDNN 版本 TensorRT 版本 nvcc / python 检查 三者版本必须严格匹配,否则编译会失败 环境就绪

2.6 常见问题与避坑指南

嗯,这里我要多说几句。环境配置中有些坑,我踩过不止一次。

  • GPU 驱动版本过低:Docker 容器虽然隔离了 CUDA 库,但底层的 GPU 驱动还是宿主机的。如果驱动版本太低,容器里的 CUDA 可能无法正常工作。运行 nvidia-smi 检查驱动版本,确保它支持你需要的 CUDA 版本。
  • 镜像拉取速度慢:如果你在国内,拉取 nvcr.io 的镜像可能会很慢。可以配置 Docker 镜像加速器,或者使用代理。
  • 容器内无法使用 GPU:启动容器时一定要加 --gpus all 参数。我刚开始用 Docker 时就忘了加,结果在容器里跑模型,CPU 跑得冒烟,GPU 却在摸鱼。
一个小技巧:如果你不确定当前环境是否匹配,可以直接在容器里运行 TensorRT-LLM 自带的示例脚本。比如 examples/gpt/run.py,如果能跑通,说明环境没问题。

好了,环境准备就到这里。记住一句话:版本匹配是王道,Docker 镜像最省心。接下来你就可以放心地进入模型编译环节了。


专注资料整理

专注资料整理