TensorRT LLM 使用手册
本手册内容同步来源于NVIDIA TensorRT LLM Github.io
关于 TensorRT LLM
TensorRT LLM NVIDIA 推出的一款全面开源库,用于在 NVIDIA GPU 上提升和优化最新大语言模型(LLM)的推理性能。
核心功能
基于 PyTorch 构建
TensorRT LLM 提供高级 Python LLM API,支持从单 GPU 到多 GPU 或多节点部署等多种推理配置,内置对各类并行策略和高级功能的支持。该 LLM API 可与更广泛的推理生态系统无缝集成,包括 NVIDIA Dynamo 和 Triton 推理服务器。
TensorRT LLM 采用模块化设计,易于修改。其原生 PyTorch 架构让开发者能够对运行时进行实验或扩展功能,同时还预定义了多个热门模型,开发者可通过原生 PyTorch 代码对模型进行自定义,轻松实现系统的个性化适配。
顶尖性能
在最新的 NVIDIA GPU 上,TensorRT LLM 可实现突破性性能:
- DeepSeek R1:在 Blackwell GPU 上实现世界纪录级推理性能
- Llama 4 Maverick:在 B200 GPU 上突破 1000 TPS/用户(每秒事务处理量/用户)壁垒
- 参考博客:NVIDIA Blackwell Raises Bar in New InferenceMAX Benchmarks, Delivering Unmatched Performance and Efficiency
全面的模型支持
TensorRT LLM 支持最新且最热门的 LLM 架构:
- 语言模型:GPT-OSS、Deepseek-R1/V3、Llama 3/4、Qwen2/3、Gemma 3、Phi 4 等
- 多模态模型:LLaVA-NeXT、Qwen2-VL、VILA、Llama 3.2 Vision 等
TensorRT LLM 致力于在模型发布当天(Day 0)就实现对热门模型的支持。
高级优化与生产级功能
- 动态批处理(In-Flight Batching)与分页注意力(Paged Attention):动态批处理通过动态管理请求执行,将上下文阶段与生成阶段协同处理,最大限度提升 GPU 利用率并降低延迟,从而消除等待时间。
- 多 GPU 多节点推理:通过模型定义 API,支持跨多 GPU 和多节点的张量并行、流水线并行和专家并行,实现无缝的分布式推理。
- 高级量化:
- FP4 量化:在 NVIDIA B200 GPU 上提供原生支持,并配备优化的 FP4 内核
- FP8 量化:在 NVIDIA H100 GPU 上利用 Hopper 架构实现自动转换
- 推测性解码(Speculative Decoding):支持 EAGLE、MTP、NGram 等多种算法
- KV 缓存管理:具备智能块复用和内存优化功能的分页 KV 缓存
- 分块预填充(Chunked Prefill):将上下文拆分为可管理的块,高效处理长序列
- LoRA 支持:支持 HuggingFace 和 NeMo 格式的多适配器,实现高效微调与适配
- 检查点加载:支持从 HuggingFace、NeMo、自定义等多种格式灵活加载模型
- 引导解码(Guided Decoding):支持停止词、禁用词、自定义约束的高级采样功能
- 解耦服务(测试版,Disaggregated Serving):在不同 GPU 上分离上下文阶段与生成阶段,实现资源的最优利用
支持最新 GPU 架构
TensorRT LLM 支持全系列 NVIDIA GPU 架构:
- NVIDIA Blackwell:B200、GB200、RTX Pro 6000 SE(支持 FP4 优化)
- NVIDIA Hopper:H100、H200、GH200(支持 FP8 加速)
- NVIDIA Ada Lovelace:L40/L40S、RTX 40 系列(支持 FP8 加速)
- NVIDIA Ampere:A100、RTX 30 系列(适用于生产级工作负载)
如何使用 TensorRT LLM?
无论你是在构建下一代 AI 应用、优化现有 LLM 部署,还是探索大语言模型技术的前沿领域,TensorRT LLM 都能提供所需的工具、性能与灵活性,助力开发者在生成式 AI 时代取得成功。如需开始使用,请参考《快速入门指南》。
快速入门指南
本指南是试用 TensorRT LLM 的起点,将帮助你快速完成环境搭建,并使用 TensorRT LLM 发送 HTTP 请求。
在部署了 NVIDIA GPU 的节点上启动 Docker
(参考链接:https://nvidia.github.io/TensorRT-LLM/latest/quick-start-guide.html )
使用 trtllm-serve 部署在线服务
你可以通过 trtllm-serve 命令启动一个兼容 OpenAI 的服务器,以实现与模型的交互。在 Docker 容器内,可通过以下示例命令启动服务器:
(示例命令参考:trtllm-serve "TinyLlama/TinyLlama-1.1B-Chat-v1.0",参考链接:https://nvidia.github.io/TensorRT-LLM/latest/quick-start-guide.html )
若在 Docker 容器内运行 trtllm-server,有两种发送 API 请求的方式:
- 暴露一个端口(如 8000),允许从容器外部访问服务器
- 打开新终端,使用以下命令直接连接到运行中的容器:
(命令示例:docker exec -it <container_id> bash,参考链接:
https://nvidia.github.io/TensorRT-LLM/latest/quick-start-guide.html )
服务器启动后,你可以访问常见的 OpenAI 端点(如 v1/chat/completions)。在另一个终端中,可通过类似以下示例的方式执行推理:
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"model": "TinyLlama/TinyLlama-1.1B-Chat-v1.0",
"messages": [{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Where is New York? Tell me in a single sentence."}],
"max_tokens": 32,
"temperature": 0
}'
(参考链接:https://nvidia.github.io/TensorRT-LLM/latest/quick-start-guide.html )
示例输出
{
"id": "chatcmp1-ef648e7489c040679d87ed12db5d3214",
"object": "chat.completion",
"created": 1741966075,
"model": "TinyLlama/TinyLlama-1.1B-Chat-v1.0",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "New York is a city in the northeastern United States, located on the east coast."
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null
}
],
"usage": {
"prompt_tokens": 43,
"total_tokens": 69,
"completion_tokens": 26
}
}
(参考链接:https://nvidia.github.io/TensorRT-LLM/latest/quick-start-guide.html )
如需详细示例和命令语法,请参考 trtllm-serve 相关章节。
使用 LLM API 运行离线推理
LLM API 是一款 Python API,旨在帮助用户在 Python 环境中直接完成 TensorRT-LLM 的设置与推理。只需指定 HuggingFace 仓库名称或模型检查点,即可实现模型优化。该 API 会统一管理模型加载、优化和推理流程,全程仅需一个 LLM 实例即可完成。
以下是使用 LLM API 调用 TinyLlama 模型的简单示例:
from tensorrt_llm import LLM, SamplingParams
def main():
# 模型支持的输入格式:HF 模型名称、本地 HF 模型路径、TensorRT 模型优化器量化后的检查点(如 nvidia/Llama-3.1-8B-Instruct)
llm = LLM(model="TinyLlama/TinyLlama-1.1B-Chat-v1.0")
# 示例提示词
prompts = [
"Hello, my name is",
"The capital of France is",
"The future of AI is"
]
# 创建采样参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
# 生成输出并打印
for output in llm.generate(prompts, sampling_params):
print(f"Prompt: {output.prompt!r}, Generated text: {output.outputs[0].text!r}")
# 预期输出示例:
# Prompt: 'Hello, my name is', Generated text: '\n\nJane Smith. I am a student pursuing a degree in computer science.'
# Prompt: 'The capital of France is', Generated text: 'Paris.'
# Prompt: 'The future of AI is', Generated text: 'an exciting time for us. We are continuing to see rapid advancements in various fields.'
if __name__ == '__main__':
main()
(参考链接:https://nvidia.github.io/TensorRT-LLM/latest/quick-start-guide.html )
你也可以在 LLM 构造函数中直接加载 HuggingFace 上已量化的预量化模型。如需了解更多关于 LLM API 的信息,请查看《LLM API 介绍》和《LLM 示例》。
后续步骤
在本《快速入门指南》中,你已完成以下操作:
- 学习如何使用 trtllm-serve 部署模型以实现在线服务
- 探索如何使用 LLM API 进行 TensorRT LLM 离线推理
若需进一步学习 TensorRT LLM,可参考以下资源:
安装指南
提供不同平台的详细安装说明。
安装方式
TensorRT LLM 提供多种安装和运行方式,对大多数用户而言,以下方式按操作复杂度从低到高排序,且所有方式支持的功能一致。
注意:本项目会下载并安装额外的第三方开源软件项目,请在使用前查阅这些开源项目的许可条款。
- NGC 上的预构建发布容器镜像
- PyPI 上的预构建发布轮包(详见《通过 pip 在 Linux 上安装》)
- 在 Linux 上从源代码构建
(参考链接:https://nvidia.github.io/TensorRT-LLM/latest/installation/index.html)
部署指南
提供在各类场景下部署 LLM 推理的综合示例。
LLM 示例
基础功能
- 文本生成
- 异步文本生成
- 流式文本生成
- 分布式 LLM 生成
自定义功能
- 结合引导解码生成文本
- 使用 logits 处理器控制生成文本
- 结合多个 LoRA 适配器生成文本
- 推测性解码
- KV 缓存连接器
- KV 缓存卸载
- 运行时配置示例
- 采样技术展示
Slurm 相关
- 在 Slurm 上使用 PyTorch 后端运行 LLM-API
- 在 Slurm 上使用 PyTorch 后端运行 trtllm-bench
- 在 Slurm 上使用 PyTorch 后端运行 trtllm-serve
模型支持
查看支持的模型列表及新增模型的方法。
支持的模型
以下是 PyTorch 后端支持的模型表格:
| 架构(Architecture) | 模型(Model) | HuggingFace 示例 |
|---|---|---|
| BertForSequenceClassification | 基于 BERT 的模型 | textattack/bert-base-uncased-yelp-polarity |
| DeciLMForCausalLM | Nemotron | nvidia/Llama-3_1-Nemotron-51B-Instruct |
| DeepseekV3ForCausalLM | DeepSeek-V3 | deepseek-ai/DeepSeek-V3 |
| Exaone4ForCausalLM | EXAONE 4.0 | LGAI-EXAONE/EXAONE-4.0-32B |
| Gemma3ForCausalLM | Gemma 3 | google/gemma-3-1b-it |
| LlamaForCausalLM | Llama 3.1、Llama 3、Llama 2、LLaMA | meta-llama/Meta-Llama-3.1-70B |
| Llama4ForConditionalGeneration | Llama 4 | meta-llama/Llama-4-Scout-17B-16E-Instruct |
| MistralForCausalLM | Mistral | mistralai/Mistral-7B-v0.1 |
| MixtralForCausalLM | Mixtral | mistralai/Mixtral-8x7B-v0.1 |
| MllamaForConditionalGeneration | Llama 3.2 | meta-llama/Llama-3.2-11B-Vision |
| NemotronForCausalLM | Nemotron-3、Nemotron-4、Minitron | nvidia/Minitron-8B-Base |
| NemotronNASForCausalLM | NemotronNAS | nvidia/Llama-3_3-Nemotron-Super-49B-v1 |
| Qwen2ForCausalLM | QwQ、Qwen2 | Qwen/Qwen2-7B-Instruct |
| Phi3ForCausalLM | Phi-4 | microsoft/Phi-4 |
| Qwen2ForProcessRewardModel | 基于 Qwen2 的模型 | Qwen/Qwen2.5-Math-PRM-7B |
| Qwen2ForRewardModel | 基于 Qwen2 的模型 | Qwen/Qwen2.5-Math-RM-72B |
| Qwen3ForCausalLM | Qwen3 | Qwen/Qwen3-8B |
| Qwen3MoeForCausalLM | Qwen3MoE | Qwen/Qwen3-30B-A3B |
模型-功能支持矩阵(核心模型)
注意:其他模型的功能支持情况可能有所不同,标记为“N/A”的功能表示不适用于该模型架构。
| 模型架构/功能 | 重叠调度器(Overlap Scheduler) | CUDA 图(CUDA Graph) | 注意力数据并行(Attention Data Parallelism) | 解耦服务(Disaggregated Serving) | 分块预填充(Chunked Prefill) | MTP | EAGLE-3(单模型引擎) |
|---|---|---|---|---|---|---|---|
| DeepseekV3ForCausalLM | 是 | 是 | 是 | 是 | 是 [1] | 是 | 否 |
| Qwen3MoeForCausalLM | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| Llama4ForConditionalGeneration | 是 | 是 | 是 | 是 | 是 | 否 | 是 |
| GPT-OSS | 是 | 是 | 是 | 是 | 否 | 否 | 是 |
| 模型架构/功能 | EAGLE-3(双模型引擎) | Torch 采样器(Torch Sampler) | TLLM C++ 采样器(TLLM C++ Sampler) | KV 缓存复用(KV Cache Reuse) | 滑动窗口注意力(Sliding Window Attention) | Logits 后处理器(Logits Post Processor) | 引导解码(Guided Decoding) |
|---|---|---|---|---|---|---|---|
| DeepseekV3ForCausalLM | 否 | 是 | 是 | 是 [2] | N/A | 是 | 是 |
| Qwen3MoeForCausalLM | 是 | 是 | 是 | 是 | N/A | 是 | 是 |
| Llama4ForConditionalGeneration | 是 | 是 | 是 | 未测试 | N/A | 是 | 是 |
| GPT-OSS | 否 | 是 | 是 | 否 | N/A | 是 | 是 |
多模态功能支持矩阵(PyTorch 后端)
| 模型架构/功能 | 重叠调度器(Overlap Scheduler) | CUDA 图(CUDA Graph) | 分块预填充(Chunked Prefill) | Torch 采样器(Torch Sampler) | TLLM C++ 采样器(TLLM C++ Sampler) | KV 缓存复用(KV Cache Reuse) | Logits 后处理器(Logits Post Processor) | EPD 解耦服务(EPD Disaggregated Serving) | 模态(Modality) |
|---|---|---|---|---|---|---|---|---|---|
| Gemma3ForConditionalGeneration | 是 | 是 | N/A | 是 | 是 | N/A | 是 | 否 | L + I |
| HCXVisionForCausalLM | 是 | 是 | 否 | 是 | 是 | 否 | 是 | 否 | L + I |
| LlavaLlamaModel(VILA) | 是 | 是 | 否 | 是 | 是 | 否 | 是 | 否 | L + I + V |
| LlavaNextForConditionalGeneration | 是 | 是 | 否 | 是 | 是 | 否 | 是 | 否 | L + I |
| Llama4ForConditionalGeneration | 是 | 是 | 否 | 是 | 是 | 否 | 是 | 否 | L + I |
| Mistral3ForConditionalGeneration | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | L + I |
| NemotronH_Nano_VL_V2 | 是 | 是 | 是 | 是 | 是 | 否 | 是 | 否 | L + I + V |
| Phi4MMForCausalLM | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | L + I + A |
| Qwen2VLForConditionalGeneration | 是 | 是 | 否 | 是 | 是 | 是 | 是 | 否 | L + I + V |
| Qwen2_5_VLForConditionalGeneration | 是 | 是 | 否 | 是 | 是 | 是 | 是 | 否 | L + I + V |
注:L(Language,语言)、I(Image,图像)、V(Video,视频)、A(Audio,音频)
[1] 多语言适配器(MLA)的分块预填充功能仅支持在 SM100 架构上启用
[2] 多语言适配器(MLA)的 KV 缓存复用功能仅支持在 SM90/SM100 架构及 BF16/FP8 KV 缓存数据类型下启用
命令行接口(CLI)参考
探索 TensorRT LLM 命令行工具:
- trtllm-serve:部署模型以实现在线服务
- trtllm-bench:对模型性能进行基准测试
- trtllm-eval:评估模型精度
TensorRT LLM 1.0 现已在 GitHub 正式发布,欢迎下载体验:
**https://github.com/NVIDIA/TensorRT-LLM
TensorRT LLM 快速入门指南源连接:
**https://nvidia.github.io/TensorRT-LLM/1.2.0rc0/overview.html
更多NVIDIA AI软件相关内容请关注 NVIDIA AI 技术专区
NVIDIA企业开发者社区:
