环境准备:CUDA/cuDNN/TensorRT版本要求、Docker镜像搭建、源码编译与安装验证
说实话,做TensorRT-LLM部署,环境准备这一步最容易被忽视。很多人上来就pip install,结果跑模型时各种报错,回头一看——版本对不上。我刚开始也踩过这个坑,后来养成了个习惯:先花半小时把环境理清楚,后面能省下半天时间。
版本要求:别小看这个表
TensorRT-LLM对底层依赖非常敏感。说白了,CUDA、cuDNN、TensorRT这三个东西,版本必须严丝合缝。我整理了一份我常用的版本对照表,你可以直接参考:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| CUDA | 12.1 / 12.4 | 我建议用12.1,生态最稳 |
| cuDNN | 8.9.7 / 9.1.0 | 跟CUDA版本走,别混搭 |
| TensorRT | 10.0.1 / 10.3.0 | 注意要带cuda12的包 |
| TensorRT-LLM | 0.10.0 / 0.11.0 | 建议用release版,别追main |
| Python | 3.10 / 3.11 | 3.12目前兼容性一般 |
⚠️ 注意: 我曾经遇到过CUDA 12.2 + cuDNN 9.0的组合,编译TensorRT-LLM时死活过不去。后来换成12.1 + 8.9.7,一次通过。所以版本这东西,别追求最新,稳定才是王道。
Docker镜像搭建:最省心的方式
我个人习惯用Docker来搭环境。为什么?因为干净、可复现、出了问题直接删了重来。你想想看,要是直接在宿主机上装,哪天搞乱了,重装系统的心都有。
TensorRT官方提供了现成的Docker镜像,我一般这么拉:
# 拉取官方镜像(以TensorRT-LLM 0.11.0为例)
docker pull nvidia/cuda:12.1.0-devel-ubuntu22.04
# 或者直接用NGC上的TensorRT-LLM镜像
docker pull nvcr.io/nvidia/tensorrt:24.05-py3
但说实话,官方镜像有时候太“重”了。我更喜欢自己搭一个轻量版:
# 我的Dockerfile片段
FROM nvidia/cuda:12.1.0-devel-ubuntu22.04
RUN apt-get update && apt-get install -y \
python3.10 python3.10-dev python3-pip \
git cmake build-essential \
&& rm -rf /var/lib/apt/lists/*
# 安装cuDNN(需要提前下载deb包)
COPY cudnn-linux-x86_64-8.9.7.29_cuda12-archive.deb /tmp/
RUN dpkg -i /tmp/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.deb
# 安装TensorRT
COPY TensorRT-10.0.1.6.Linux.x86_64-gnu.cuda-12.1.tar.gz /tmp/
RUN tar -xzf /tmp/TensorRT-10.0.1.6.Linux.x86_64-gnu.cuda-12.1.tar.gz -C /opt/
ENV LD_LIBRARY_PATH=/opt/TensorRT-10.0.1.6/lib:$LD_LIBRARY_PATH
ENV PATH=/opt/TensorRT-10.0.1.6/bin:$PATH
💡 小技巧: 我习惯在Dockerfile里把pip源换成国内镜像,不然下载依赖能等到你怀疑人生。加一行
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 就行。
源码编译:从零开始装TensorRT-LLM
有时候Docker镜像里的版本不满足需求,或者你想自己定制编译选项,那就得走源码编译这条路。嗯,这里要注意,编译TensorRT-LLM对机器要求不低,至少32GB内存,16核CPU起步。
我一般按这个步骤来:
- 克隆代码
git clone https://github.com/NVIDIA/TensorRT-LLM.git cd TensorRT-LLM git checkout v0.11.0 # 切到稳定版本 - 初始化子模块
git submodule update --init --recursive这一步容易卡住,因为要拉很多第三方库。我建议提前配好代理,或者用国内镜像。
- 编译安装
mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release \ -DTENSORRT_ROOT=/opt/TensorRT-10.0.1.6 \ -DCUDNN_ROOT=/usr/local/cuda make -j$(nproc) make install - 安装Python包
cd ../python pip install -e .
⚠️ 避坑指南: 我曾经在编译时忘了指定
TENSORRT_ROOT,结果cmake自动找到了系统里一个旧版本的TensorRT,编译出来的so文件各种符号找不到。所以一定要显式指定路径,别偷懒。
安装验证:确认一切就绪
装完了怎么知道对不对?我一般跑三个检查:
- 检查CUDA
nvcc --version # 输出应该显示12.1 - 检查TensorRT
python3 -c "import tensorrt; print(tensorrt.__version__)" # 输出应该显示10.0.1 - 检查TensorRT-LLM
python3 -c "import tensorrt_llm; print(tensorrt_llm.__version__)" # 输出应该显示0.11.0
这三个都过了,基本就稳了。我还会额外跑一个简单的推理测试,确保模型能正常加载:
# 用官方示例跑一个GPT测试
cd examples/gpt
python3 build.py --model_dir gpt2 \
--output_dir trt_engines/gpt2 \
--dtype float16
python3 run.py --engine_dir trt_engines/gpt2 \
--tokenizer_dir gpt2 \
--max_output_len 50
如果能看到正常的文本输出,恭喜你,环境搭建成功了。
📌 总结一下我的经验:
- 版本对照表打印出来贴墙上,别凭感觉选
- Docker是首选,省心省力
- 源码编译时注意cmake参数,路径别写错
- 验证步骤别跳过,跑通了再往下走