2. 环境搭建:硬件要求、软件依赖、Docker 镜像构建、源码编译安装
好,咱们直接进入正题。环境搭建这事儿,说难不难,说简单也不简单。我见过太多人卡在这一步,明明代码写对了,跑起来就是各种报错。说白了,就是环境没对齐。
我个人习惯,先把硬件和软件的要求列清楚,再决定是用 Docker 还是源码编译。别一上来就闷头装,先看看你手头的机器够不够格。
2.1 硬件要求:别让显卡拖后腿
TensorRT-LLM 这玩意儿,对显卡的要求挺挑的。你想想看,它要跑大模型推理,显存小了根本塞不下。
| 硬件组件 | 最低要求 | 推荐配置 | 备注 |
|---|---|---|---|
| GPU | NVIDIA T4 (16GB) | NVIDIA A100 (80GB) 或 H100 | 显存越大越好,量化模型能省不少 |
| CPU | 8 核 x86_64 | 16 核以上 | CPU 主要负责数据预处理和调度 |
| 内存 | 32 GB | 64 GB 或 128 GB | 加载大模型时,内存不够会直接 OOM |
| 磁盘 | 50 GB 可用空间 | 200 GB (SSD) | 模型权重文件和编译产物很占地方 |
| 网络 | 千兆以太网 | InfiniBand (多卡场景) | 多机分布式推理时,网络是瓶颈 |
2.2 软件依赖:版本对齐是门玄学
软件依赖这块,我建议你严格按照官方推荐的版本来。别问我为什么,问就是踩过坑。CUDA、cuDNN、TensorRT 这三个东西,版本不对应,编译直接报错。
我列一下我常用的版本组合,目前跑得挺稳:
- 操作系统:Ubuntu 22.04 LTS (内核 5.15+)
- CUDA:12.1 或 12.4 (别用 12.0,有 bug)
- cuDNN:8.9.7 或 9.1.0
- TensorRT:10.0.1 或 10.3.0
- Python:3.10.x (3.11 也行,但有些库还没适配)
- PyTorch:2.1.0 或 2.2.0 (配合 CUDA 12.1)
- NVIDIA Driver:535 或 545 系列
nvidia-smi 查看驱动版本,然后用 nvcc --version 确认 CUDA 版本。这两个对不上,后面全是坑。
2.3 Docker 镜像构建:省心省力的好办法
说实话,我强烈推荐你用 Docker。为什么?因为环境隔离做得太好了。你想想看,你在一台机器上可能要跑多个项目,每个项目依赖的 CUDA 版本不一样,用 Docker 就能完美解决。
NVIDIA 官方提供了现成的 Docker 镜像,咱们直接拉下来用就行:
# 拉取官方 TensorRT-LLM 镜像
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 \
git \
cmake \
build-essential \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
# 安装 Python 包
RUN pip3 install --upgrade pip
RUN pip3 install torch==2.1.0 --index-url https://download.pytorch.org/whl/cu121
# 克隆 TensorRT-LLM 源码
RUN git clone https://github.com/NVIDIA/TensorRT-LLM.git /workspace/TensorRT-LLM
WORKDIR /workspace/TensorRT-LLM
--network=host 参数,不然下载依赖会慢到让你怀疑人生。
2.4 源码编译安装:自己动手,丰衣足食
如果你不想用 Docker,或者需要深度定制,那就得走源码编译这条路。嗯,这里要注意,编译过程比较耗时,大概 30 分钟到 1 小时,取决于你的机器性能。
我一般按以下步骤来:
- 克隆仓库:
git clone https://github.com/NVIDIA/TensorRT-LLM.git - 切换分支:建议用 release 分支,比如
git checkout v0.10.0 - 安装依赖:
pip install -r requirements.txt - 编译 C++ 核心:
python3 setup.py install
这里有个坑,我必须要说。编译时默认会下载 TensorRT 和 cuDNN 的包,但如果你网络不好,很容易超时。我曾经在客户现场,内网没外网权限,折腾了半天。
解决办法是手动下载这些包,然后放到指定目录:
# 手动下载 TensorRT 和 cuDNN
# 放到 /opt/TensorRT 和 /opt/cudnn 目录下
# 然后设置环境变量
export TRT_LIB_DIR=/opt/TensorRT/lib
export CUDNN_LIB_DIR=/opt/cudnn/lib
# 再执行编译
python3 setup.py install
cannot find -lcudart,说明 CUDA 路径没配好。检查一下 LD_LIBRARY_PATH 是否包含了 CUDA 的 lib64 目录。
2.5 验证环境:跑个 Hello World
环境搭好了,怎么知道对不对?我习惯跑一个简单的推理测试。用 TensorRT-LLM 自带的示例,比如 GPT 模型:
# 进入示例目录
cd examples/gpt
# 下载一个小的 GPT 模型
python3 hf_gpt_convert.py -i gpt2 -o ./models/gpt2
# 构建 TensorRT 引擎
trtllm-build --model_dir ./models/gpt2 \
--output_dir ./engines/gpt2 \
--max_batch_size 8 \
--max_input_len 512 \
--max_output_len 128
# 运行推理
python3 run.py --engine_dir ./engines/gpt2 \
--tokenizer_dir gpt2 \
--input_text "Hello, how are you?"
如果能看到输出结果,恭喜你,环境搭建成功了!
--max_batch_size 1,减少显存占用。等确认没问题了,再调大 batch size。
好了,环境搭建这部分就聊到这儿。记住,环境对了,后面的事就顺了。别嫌麻烦,一步到位比反复折腾要省时间得多。