TensorRT-LLM¶
TensorRT-LLM 是 NVIDIA 官方推理框架,以极致的 GPU 性能优化和与 NVIDIA 硬件的深度整合为目标。
内容时效性
TRT-LLM 更新极快。请以项目的最新文档和 Release Notes 为准。
KVCache 架构¶
KVCacheManager¶
TRT-LLM 的分页 KV 管理核心组件:
- 两阶段 Claim:
addSequenceBatch()先锁定可复用的 Block,再批量 onboard,解决 C++ 环境下的 TOCTOU 竞态问题 - Block size 可配置
- 支持 Chunked Context:长 Prompt 切分成 chunks 处理,与 KVCache 管理协同
BlockKey 多维编码¶
TRT-LLM 的 Block 哈希包含多个维度,实现多维缓存隔离:
- LoRA ID:不同 LoRA adapter 的 block 不互相污染
- 多模态哈希:图像/视频 token 的 block 单独标识
cache_salt:租户/用户级别的隔离
三层存储¶
GPU HBM → Host DRAM → NVMe(通过 GDS):
- 事件驱动路由:自动迁移 Block 到合适的 tier
- GDS(GPUDirect Storage):NVMe 直接与 GPU 交换数据,绕过 CPU
Priority-based LRU¶
高优先级 Block 获得保留槽位,不参与普通 LRU 驱逐:
- 实测:命中率 +20% vs 纯 LRU(在优先级分化明显的 workload 下)
- 应用场景:系统 prompt block 设为高优先级,用户历史 block 普通优先级
Prefix Reuse 优化¶
PR #13139 将每个 pending request 的 radix tree 遍历从 5 次收敛为单次 analyzePrefixReuse(),减少调度开销。
主要特性¶
PD 分离(Disaggregated Serving)¶
TRT-LLM 的 disaggregated serving 是当前最成熟的生产级实现之一:
实测数据:
| 模型 | 硬件 | 吞吐提升 | 备注 |
|---|---|---|---|
| DeepSeek R1 | GB200 | 1.4–1.8× | 基础 PD 分离 |
| Qwen 3 | — | 最高 6.11× | 含 MTP 优化 |
| + MTP | — | 额外 +1.6–2.5× | 多 token 预测 |
KV 传输:
- NIXL 传输后端
- GH200 NVLink-C2C:900 GB/s = 7× PCIe Gen5 的带宽
- 跨节点 KV 传输在 NVLink-C2C 场景下几乎无瓶颈
KV 量化¶
- FP8 KV Cache:原生支持,完整的 kernel 优化
- NVFP4:NVIDIA 自研格式,适配 Blackwell 架构
- MLA FP4 模型有 BF16 fallback pool
KVCache 参数与部署调优¶
TRT-LLM 的 KvCacheConfig 是生产调优的核心入口,关键参数分三层:
| 参数层 | 代表项 | 作用 |
|---|---|---|
| 容量控制 | free_gpu_memory_fraction、max_tokens、max_gpu_total_bytes |
决定 GPU KV cache 可用上限 |
| 块与复用 | tokens_per_block、enable_block_reuse |
影响 prefix reuse 命中和元数据开销 |
| Offload | host_cache_size、secondary_offload_min_priority |
控制 pinned CPU memory offload 与优先级 |
生产经验:DeepSeek-R1-0528 在 B200 上可把 free_gpu_memory_fraction 推到 0.95 追求吞吐,但 8-GPU MoE 部署常需降到 0.70–0.80,以给专家参数和 CUDA graph padding 留空间。多模态场景应关闭 block reuse,避免内容哈希不兼容。
来源:主站 field-note TensorRT-LLM 部署方式、KV Cache 调参与最佳实践
多模态 KV¶
BlockKey 的多模态哈希支持图像/视频 token 的 block 独立管理,为多模态 prefix cache 奠定基础。
与开源框架的关键差异¶
TRT-LLM 与 vLLM/SGLang 的主要区别:
| 维度 | TRT-LLM | vLLM / SGLang |
|---|---|---|
| 目标 | NVIDIA 硬件极致性能 | 通用性 + 生态 |
| 开发语言 | 主要 C++,Python 接口 | 主要 Python |
| 自定义灵活性 | 较低(依赖 NVIDIA 工具链) | 较高 |
| PD 分离成熟度 | 生产级(NIXL + NVLink-C2C) | 进行中 / 较成熟 |
| BlockKey 多维度 | ✅(LoRA ID + 多模态 + salt) | 部分支持 |
| 与 NVIDIA 生态集成 | 深度(Dynamo、GDS、NVLink) | 有限 |
关联章节¶
来源:主站 essay TRT-LLM KVCache Runtime 架构
版本历史¶
| 版本 | 日期 | 说明 |
|---|---|---|
| v0.2 | 2026-06-02 | 新增 TRT-LLM KvCacheConfig 调优层级、容量参数与 host offload 生产边界 |
| v0.1 | 2026-05-14 | 从框架对比总览拆分,整理 KVCacheManager / BlockKey / PD 分离 / NIXL 等核心特性 |