1. 课程导入

1.1 为什么需要 TensorRT-LLM

大语言模型(LLM)的推理部署与普通深度学习模型有本质差异。LLM 推理是典型的 访存密集型 任务,其性能瓶颈往往不在 GPU 的算力(FLOPs),而在显存带宽与显存容量。以 Llama-2-70B 为例,模型权重约 140GB,即使使用 4 张 A100-80G 也需要张量并行才能装下;而推理时每个 token 的生成仅需少量计算,却必须将全部权重从 HBM 读入 SM,导致内存带宽成为硬约束。

TensorRT-LLM 是 NVIDIA 推出的 LLM 推理引擎,它在 TensorRT 的基础上针对 Transformer 架构做了深度定制,核心优化手段包括:

  • 内核融合(Kernel Fusion):将 QKV 投影、RoPE、Attention、MLP 等算子融合,减少 kernel 启动开销与中间张量读写。
  • Paged KV Cache:借鉴操作系统虚拟内存分页思想,将 KV Cache 按页分配,消除显存碎片,提升并发吞吐。
  • 动态形状与 In-Flight Batching:支持请求级调度,同一批次内不同请求可处于不同解码阶段,显著提高 GPU 利用率。
  • 量化与精度校准:内置 INT8/FP8 量化工具,配合 SmoothQuant、AWQ 等算法,在几乎无损精度的情况下将显存占用降低一半以上。
学习提示:本课程不要求你预先精通 CUDA 或 TensorRT 底层原理,但需要具备 PyTorch 模型训练/推理基础,并理解 Transformer 的 Self-Attention 基本结构。课程将围绕“如何把训练好的 HuggingFace 模型高效部署到生产环境”这一主线展开。

1.2 课程学习目标

完成本课程后,你将能够独立完成从 HuggingFace 模型到 TensorRT-LLM 生产部署的全链路工作,具体包括:

  1. 掌握 TensorRT-LLM 的架构组成与核心概念(Engine、Session、KV Cache、Plugin 等)。
  2. 熟练使用 trtllm-build 命令完成模型转换与引擎构建,理解不同精度(FP16/INT8/FP8)的配置方法。
  3. 掌握张量并行(TP)、流水线并行(PP)的适用场景与配置方式,能根据 GPU 显存和拓扑选择最优并行策略。
  4. 学会使用 C++/Python Runtime API 编写高性能推理服务,并集成到 FastAPI/ Triton 等生产框架中。
  5. 掌握 KV Cache 的显存估算方法、Paged KV Cache 的配置参数,以及连续批处理(Continuous Batching)对吞吐的影响。
  6. 能够使用 trtllm-bench 工具进行性能测试,并通过日志与 Profiling 定位性能瓶颈。

1.3 课程大纲总览

本课程共 30 章,按知识递进关系分为五个阶段。下表展示了各阶段的核心主题与关键交付物:

阶段 章节范围 核心主题 关键交付物
基础入门 第 1-5 章 环境搭建、架构原理、模型转换流程 成功构建第一个 FP16 Engine
精度与优化 第 6-12 章 INT8/FP8 量化、KV Cache 优化、Attention 变体 量化模型精度对比报告
并行与扩展 第 13-18 章 张量并行、流水线并行、多机多卡部署 多卡部署性能测试数据
生产部署 第 19-25 章 Python/C++ Runtime、Triton 集成、服务化 可响应的 HTTP 推理服务
调优与排障 第 26-30 章 性能基准测试、显存分析、常见错误排查 性能调优报告与排障手册

下图展示了 TensorRT-LLM 部署全流程中从模型权重到生产服务的核心阶段与关键产物,帮助你建立整体认知:

TensorRT-LLM 部署全流程 ① 模型准备 HuggingFace 权重 FP32/FP16 检查点 config.json + tokenizer ② 模型转换 trtllm-build 命令 --model_type / --dtype --tp_size / --pp_size ③ 引擎构建 生成 .engine 文件 含 KV Cache 配置 含量化/融合信息 ④ 运行时部署 Python Runtime / C++ Runtime Triton Inference Server FastAPI / gRPC 服务封装 迭代调优 ⑤ 性能测试与调优 trtllm-bench / 吞吐与延迟指标 显存分析 / Profiling / 排障 关键配置参数速查 • max_batch_size:最大批处理大小 • max_seq_len:最大序列长度 • kv_cache_free_gpu_mem_fraction:KV Cache 显存比例 • enable_paged_kv_cache:分页 KV Cache 开关 • tokens_per_block:每页 token 数(默认 64) 本课程重点 第 2-5 章 第 6-12 章 第 13-25 章

1.4 环境准备与版本选型

TensorRT-LLM 对软硬件环境有明确要求。推荐使用 Ubuntu 22.04 操作系统,GPU 建议为 Ampere 架构及以上(A100/A30/A10 或 RTX 30/40 系列)。以下是一套经过验证的推荐环境组合:

# 基础软件栈(版本组合已验证)
CUDA 12.4 + cuDNN 9.2
TensorRT 10.3.0
TensorRT-LLM 0.13.0
PyTorch 2.5.0(用于模型导出与精度对比)
Python 3.10+
版本兼容性警告:TensorRT-LLM 对 TensorRT 和 CUDA 版本有严格依赖,版本不匹配会导致构建失败或运行时报错。建议使用 NVIDIA 官方 NGC 容器 nvcr.io/nvidia/tritonserver:24.08-trtllm-python-py3,该镜像已预装全部依赖,可避免大量环境配置问题。

推荐使用 Docker 方式部署,以获得一致的环境。以下命令拉取镜像并启动容器:

# 拉取官方镜像(约 12GB)
docker pull nvcr.io/nvidia/tritonserver:24.08-trtllm-python-py3

# 启动容器并挂载模型目录
docker run -it --gpus all --shm-size=2g \
  -v /home/user/models:/models \
  -p 8000:8000 \
  nvcr.io/nvidia/tritonserver:24.08-trtllm-python-py3 \
  bash

进入容器后,验证 TensorRT-LLM 是否安装成功:

python3 -c "import tensorrt_llm; print(tensorrt_llm.__version__)"
# 预期输出:0.13.0

1.5 整体流程概览与常见误区

一个标准的 TensorRT-LLM 部署流程包含以下步骤,本课程将按此主线逐步深入:

  1. 获取预训练模型:从 HuggingFace 下载模型权重与配置文件。
  2. 转换模型格式:使用 trtllm-build 将 HF 权重转换为 TensorRT-LLM 的 Engine 文件。
  3. 配置并行与量化:根据 GPU 资源设置 TP/PP 大小、量化精度。
  4. 编写推理代码:使用 Python 或 C++ API 加载 Engine 并执行推理。
  5. 封装服务接口:通过 FastAPI 或 Triton 对外提供 HTTP/gRPC 服务。
  6. 性能测试与调优:使用 trtllm-bench 测量吞吐和延迟,调整 KV Cache 与批处理参数。
常见误区提醒:
  • 误区一:认为 TensorRT-LLM 只是 TensorRT 的简单封装,直接使用 TensorRT Python API 也能达到同样效果。实际上 TensorRT-LLM 针对 Transformer 做了大量定制优化,包括 Paged KV Cache、In-Flight Batching 等,这些在原生 TensorRT 中并不存在。
  • 误区二:忽略 KV Cache 显存估算,导致推理时出现 OOM。KV Cache 大小与 max_seq_len、batch_size、层数、头数直接相关,必须在构建引擎前合理规划。
  • 误区三:盲目使用 INT8/FP8 量化而不做精度验证。量化后必须用验证集对比输出 logits 或生成文本的困惑度(PPL),确保精度损失在可接受范围内。