[ PROMPT_NODE_22480 ]
Inference Serving Tensorrt LLM 优化
[ SKILL_DOCUMENTATION ]
# TensorRT-LLM 优化指南
使用 TensorRT-LLM 优化大模型推理的综合指南。
## 量化
### FP8 量化 (推荐用于 H100)
**优势**:
- 推理速度提升 2 倍
- 内存占用减少 50%
- 精度损失极小 (<1% 困惑度下降)
**用法**:
python
from tensorrt_llm import LLM
# 自动 FP8 量化
llm = LLM(
model="meta-llama/Meta-Llama-3-70B",
dtype="fp8",
quantization="fp8"
)
**性能** (Llama 3-70B 在 8× H100 上):
- FP16: 5,000 token/秒
- FP8: **10,000 token/秒** (2 倍加速)
- 内存: 140GB → 70GB
### INT4 量化 (最大压缩)
**优势**:
- 内存占用减少 4 倍
- 推理速度提升 3-4 倍
- 在相同硬件上运行更大模型
**用法**:
python
# 使用 AWQ 校准的 INT4
llm = LLM(
model="meta-llama/Meta-Llama-3-405B",
dtype="int4_awq",
quantization="awq"
)
# 使用 GPTQ 校准的 INT4
llm = LLM(
model="meta-llama/Meta-Llama-3-405B",
dtype="int4_gptq",
quantization="gptq"
)
**权衡**:
- 精度: 困惑度增加 1-3%
- 速度: 比 FP16 快 3-4 倍
- 使用场景: 内存受限时
## 动态批处理 (In-Flight Batching)
**作用**: 在生成过程中动态批处理请求,无需等待所有序列完成。
**配置**:
python
# 服务器配置
trtllm-serve meta-llama/Meta-Llama-3-8B
--max_batch_size 256 # 最大并发序列数
--max_num_tokens 4096 # 批次总 token 数
--enable_chunked_context # 拆分长提示词
--scheduler_policy max_utilization
**性能**:
- 吞吐量: 比静态批处理**高 4-8 倍**
- 延迟: 混合负载下 P50/P99 更低
- GPU 利用率: 80-95% (对比 40-60%)
## Paged KV Cache
**作用**: 像操作系统管理虚拟内存一样管理 KV 缓存内存 (分页)。
**优势**:
- 吞吐量提升 40-60%
- 无内存碎片
- 支持更长序列
**配置**:
python
# 自动分页 KV 缓存 (默认)
llm = LLM(
model="meta-llama/Meta-Llama-3-8B",
kv_cache_free_gpu_mem_fraction=0.9, # 使用 90% GPU 内存作为缓存
enable_prefix_caching=True # 缓存公共前缀
)
## 推测解码 (Speculative Decoding)
**作用**: 使用小型草稿模型预测多个 token,由目标模型并行验证。
**加速**: 长文本生成速度提升 2-3 倍
**用法**:
python
from tensorrt_llm import LLM
# 目标模型 (Llama 3-70B)
llm = LLM(
model="meta-ll