环境准备与依赖安装:版本匹配、Docker 选择、Python 环境坑

说实话,TensorRT-LLM 部署翻车,十次里有八次是环境问题。我见过太多人花了一周调模型,最后卡在 CUDA 版本不对上。嗯,这一章咱们就把这些坑一个个填平。

核心原则:版本匹配是铁律,Docker 是捷径,Python 环境要隔离。

CUDA、cuDNN、TensorRT 版本匹配原则

这三者的关系,说白了就是「锁死的」。不是说你装个最新的 CUDA 12.x 就万事大吉。TensorRT-LLM 对 CUDA 版本有明确要求,我踩过这个坑——

我曾经在项目里图省事,直接上了 CUDA 12.2,结果 TensorRT 8.6 根本不认,编译报错一整天。后来查文档才发现,TensorRT-LLM 0.5.0 只支持 CUDA 11.8 和 12.1。你说气不气?

所以我的习惯是:先定 TensorRT-LLM 版本,再反推 CUDA 和 cuDNN 版本。别倒着来。

TensorRT-LLM 版本 推荐 CUDA 版本 推荐 cuDNN 版本 推荐 TensorRT 版本
v0.5.0 11.8 / 12.1 8.9.x 8.6.x
v0.6.0 12.1 8.9.x 8.6.x
v0.7.0 12.1 8.9.x 8.6.x
v0.8.0 12.1 / 12.2 8.9.x 8.6.x / 9.0.x

注意:cuDNN 版本别乱升。TensorRT-LLM 对 cuDNN 的依赖很敏感,我曾经试过 cuDNN 9.0 搭配 TensorRT 8.6,推理结果直接飘了。老老实实按官方表格来。

Docker 镜像选择:省心还是省事?

我个人强烈建议用 Docker。为什么?因为环境隔离做得最干净。你想想看,生产环境上你敢随便装库吗?万一和别的服务冲突了,谁背锅?

Docker 镜像的选择,我一般看三个点:

  • 官方镜像优先:NVIDIA 官方提供的 nvcr.io/nvidia/tensorrt-llm 系列,版本号清晰,依赖预装好。我项目里一直用这个,没出过幺蛾子。
  • 版本号要对齐:比如你要用 TensorRT-LLM v0.7.0,就拉 nvcr.io/nvidia/tensorrt-llm:0.7.0。别拉 latest,latest 是坑,你不知道它对应哪个版本。
  • 注意镜像大小:官方镜像通常 5-8GB,包含 CUDA、cuDNN、TensorRT 全套。如果你磁盘紧张,可以自己基于 nvidia/cuda:12.1-devel 构建,但工作量不小。

小技巧:拉镜像时加 --platform linux/amd64,避免在 ARM 架构的机器上拉错版本。我吃过这个亏,在 Mac M1 上拉镜像,跑起来全是 x86 模拟,慢得离谱。

Python 环境与 pip 包安装的常见坑

Python 环境这块,我见过最离谱的事——有人在系统 Python 里直接 pip install tensorrt-llm,结果把系统自带的包管理器搞崩了。嗯,千万别这么干。

我的做法是:

  1. 用 conda 创建独立环境conda create -n trtllm python=3.10,然后 conda activate trtllm。Python 版本建议 3.10,3.11 有些依赖还没适配好。
  2. pip 安装顺序有讲究:先装 PyTorch(CUDA 版本要对),再装 TensorRT-LLM。顺序反了,依赖解析会出问题。
  3. 注意 pip 源:国内用户记得换清华源或阿里源,不然下载速度能急死人。我一般用 -i https://pypi.tuna.tsinghua.edu.cn/simple

常见报错及解决:

  • No module named 'tensorrt_llm':大概率是没装对版本,或者 Python 环境没激活。检查 pip list | grep tensorrt
  • CUDA error: no kernel image is available:CUDA 版本和 PyTorch 不匹配。比如 PyTorch 2.0 需要 CUDA 11.8,你装了个 CUDA 12.1 的 PyTorch,就会报这个。
  • libcudnn.so.8: cannot open shared object file:cuDNN 没装或者路径没配。Docker 用户一般不会遇到,裸机用户记得 export LD_LIBRARY_PATH

我曾经在客户现场,裸机部署 TensorRT-LLM,结果 cuDNN 路径配错了,推理时直接 core dump。查了三个小时,最后发现是 /usr/lib/x86_64-linux-gnu 下有个旧版本的 cuDNN 在捣乱。从那以后,我再也不在裸机上搞了,一律 Docker。

知识体系总览

下面这张图,是我自己总结的环境准备核心逻辑。你照着这个流程走,基本不会翻车。

TensorRT-LLM 环境准备核心流程 1. 确定 TensorRT-LLM 版本 根据模型需求选择 2. 反推 CUDA/cuDNN/TRT 查官方兼容性表格 3. 选择部署方式 Docker / 裸机 Docker 镜像 拉取官方镜像,开箱即用 裸机安装 手动配置 CUDA/cuDNN/TRT 4. Python 环境配置 conda 隔离 + pip 顺序安装 ✅ 环境验证通过

这张图里,最关键的就是第一步和第二步。版本定错了,后面全白搭。我个人习惯是先查 TensorRT-LLM 的 GitHub Release Notes,里面会明确写支持哪些 CUDA 版本。别偷懒,这一步省不了。

最后说一句:环境准备这件事,看着琐碎,但真能决定项目成败。我见过太多人在这上面栽跟头。你按我上面说的来,至少能避开 80% 的坑。剩下的 20%,嗯,咱们后面章节慢慢聊。

专注资料整理