环境准备: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起步。

我一般按这个步骤来:

  1. 克隆代码
    git clone https://github.com/NVIDIA/TensorRT-LLM.git
    cd TensorRT-LLM
    git checkout v0.11.0  # 切到稳定版本
  2. 初始化子模块
    git submodule update --init --recursive

    这一步容易卡住,因为要拉很多第三方库。我建议提前配好代理,或者用国内镜像。

  3. 编译安装
    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
  4. 安装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参数,路径别写错
  • 验证步骤别跳过,跑通了再往下走
环境准备核心流程 版本确认 CUDA/cuDNN/TensorRT 环境搭建 Docker / 源码编译 安装验证 三检查 + 推理测试 CUDA 12.1 最稳 Docker 可复现 nvcc + import 双检 💡 我的经验:环境准备花30分钟,后面省3小时 版本对照表打印出来,每次搭建前先核对

专注资料整理