跳到主要内容

Tensorrt Llm

利用 NVIDIA TensorRT 优化 LLM 推理,实现最大吞吐量和最低延迟。适用于在 NVIDIA GPU(A100/H100)上进行生产部署,当需要比 PyTorch 快 10-100 倍的推理速度,或需要服务带有量化(FP8/INT4)、飞行中批处理和多 GPU 扩展的模型时使用。

技能元数据

来源可选 — 使用 hermes skills install official/mlops/tensorrt-llm 安装
路径optional-skills/mlops/tensorrt-llm
版本1.0.0
作者Orchestra Research
许可证MIT
依赖项tensorrt-llm, torch
平台linux, macos
标签Inference Serving, TensorRT-LLM, NVIDIA, Inference Optimization, High Throughput, Low Latency, Production, FP8, INT4, In-Flight Batching, Multi-GPU

参考:完整的 SKILL.md

信息

以下是当此技能被触发时,Hermes 加载的完整技能定义。这是技能激活时智能体看到的指令。

TensorRT-LLM

NVIDIA 的开源库,用于在 NVIDIA GPU 上通过最先进的性能优化 LLM 推理。

何时使用 TensorRT-LLM

在以下情况下使用 TensorRT-LLM:

  • 在 NVIDIA GPU(A100, H100, GB200)上部署
  • 需要最大吞吐量(在 Llama 3 上达到 24,000+ 个 token/秒)
  • 需要实时应用的低延迟
  • 使用量化模型(FP8, INT4, FP4)
  • 跨多个 GPU 或节点进行扩展

在以下情况下改用 vLLM:

  • 需要更简单的设置和 Python 优先的 API
  • 希望在不进行 TensorRT 编译的情况下使用 PagedAttention
  • 使用 AMD GPU 或非 NVIDIA 硬件

在以下情况下改用 llama.cpp:

  • 在 CPU 或 Apple Silicon 上部署
  • 需要在没有 NVIDIA GPU 的边缘设备上部署
  • 希望使用更简单的 GGUF 量化格式

快速入门

安装

# Docker(推荐)
docker pull nvidia/tensorrt_llm:latest

# pip 安装
pip install tensorrt_llm==1.2.0rc3

# 需要 CUDA 13.0.0, TensorRT 10.13.2, Python 3.10-3.12

基本推理

from tensorrt_llm import LLM, SamplingParams

# 初始化模型
llm = LLM(model="meta-llama/Meta-Llama-3-8B")

# 配置采样参数
sampling_params = SamplingParams(
max_tokens=100,
temperature=0.7,
top_p=0.9
)

# 生成
prompts = ["解释量子计算"]
outputs = llm.generate(prompts, sampling_params)

for output in outputs:
print(output.text)

使用 trtllm-serve 提供服务

# 启动服务器(自动下载并编译模型)
trtllm-serve meta-llama/Meta-Llama-3-8B \
--tp_size 4 \ # 张量并行(4个GPU)
--max_batch_size 256 \
--max_num_tokens 4096

# 客户端请求
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Meta-Llama-3-8B",
"messages": [{"role": "user", "content": "你好!"}],
"temperature": 0.7,
"max_tokens": 100
}'

主要特性

性能优化

  • 飞行中批处理:生成过程中的动态批处理
  • 分页 KV 缓存:高效的内存管理
  • Flash Attention:优化的注意力内核
  • 量化:FP8、INT4、FP4,推理速度提升 2-4 倍
  • CUDA 图:减少内核启动开销

并行性

  • 张量并行 (TP):将模型拆分到多个 GPU
  • 流水线并行 (PP):按层分布
  • 专家并行:用于混合专家模型
  • 多节点:扩展到单台机器之外

高级特性

  • 投机解码:使用草稿模型进行更快生成
  • LoRA 服务:高效部署多个适配器
  • 分解式服务:将预填充和生成分离

常见模式

量化模型 (FP8)

from tensorrt_llm import LLM

# 加载 FP8 量化模型(速度提升2倍,内存占用减少50%)
llm = LLM(
model="meta-llama/Meta-Llama-3-70B",
dtype="fp8",
max_num_tokens=8192
)

# 推理过程与之前相同
outputs = llm.generate(["总结这篇文章..."])

多 GPU 部署

# 在 8 个 GPU 上进行张量并行
llm = LLM(
model="meta-llama/Meta-Llama-3-405B",
tensor_parallel_size=8,
dtype="fp8"
)

批量推理

# 高效处理 100 个提示
prompts = [f"问题 {i}: ..." for i in range(100)]

outputs = llm.generate(
prompts,
sampling_params=SamplingParams(max_tokens=200)
)

# 自动飞行中批处理以实现最大吞吐量

性能基准

Meta Llama 3-8B (H100 GPU):

  • 吞吐量:24,000 个 token/秒
  • 延迟:每个 token 约 10ms
  • 对比 PyTorch:快 100 倍

Llama 3-70B (8× A100 80GB):

  • FP8 量化:比 FP16 快 2 倍
  • 内存:使用 FP8 减少 50%

支持的模型

  • LLaMA 系列:Llama 2, Llama 3, CodeLlama
  • GPT 系列:GPT-2, GPT-J, GPT-NeoX
  • Qwen:Qwen, Qwen2, QwQ
  • DeepSeek:DeepSeek-V2, DeepSeek-V3
  • Mixtral:Mixtral-8x7B, Mixtral-8x22B
  • 视觉模型:LLaVA, Phi-3-vision
  • HuggingFace 上的 100+ 模型

参考资料

资源