ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

深入TokenSpeed KV缓存体系:前缀缓存、缓存组与L3主机缓存的完整解析

深入TokenSpeed KV缓存体系:前缀缓存、缓存组与L3主机缓存的完整解析 深入TokenSpeed KV缓存体系前缀缓存、缓存组与L3主机缓存的完整解析【免费下载链接】tokenspeedTokenSpeed is a speed-of-light LLM inference engine.项目地址: https://gitcode.com/gh_mirrors/to/tokenspeedTokenSpeed 是一款面向生产环境的光速LLM 推理引擎其 KV 缓存体系是它低延迟、高吞吐的核心支柱。本文带你完整拆解 TokenSpeed KV 缓存的三层结构GPU 前缀缓存L1、主机 L2 缓存、Mooncake L3 存储以及贯穿其中的缓存组统一抽象帮你快速搞懂它是怎么让重复前缀免重算、让缓存永不丢失的。为什么 KV 缓存体系决定推理速度每次生成新 Token模型都要回顾之前所有 Token 的 Key/Value即 KV 缓存。TokenSpeed 的思路是能复用的绝不重算能下沉的绝不丢弃。它的性能收益直接体现在端到端延迟上——在 Kimi K2.5 基准测试中TokenSpeed 相比其他推理引擎在首 Token 延迟TTFT和单 Token 延迟TPOT上都有明显优势前缀缓存让相同提示词前缀自动免重算前缀缓存Prefix Cache是 TokenSpeed 最直观的性能开关。当多个请求共享相同开头比如相同的系统提示词、相同的文档问答前缀时引擎会把已算好的 KV 块直接复用跳过这段前缀的 Prefill 计算。开启方式两个参数即可参数作用--enable-prefix-caching开启前缀缓存复用默认建议开启--block-sizeKV 缓存块大小即前缀匹配的最小粒度Token 数工作原理一句话版请求进入后调度器按block-size粒度对前缀做 SHA-256 哈希并逐级查表PrefixCacheIndex命中多长就复用多长未命中的部分才真正送进模型计算。前缀命中还会把 Prefill 时间大幅压缩这也是推理引擎间首 Token 延迟差距的主要来源之一 小贴士调度器只在整块边界上复用缓存所以--block-size越大单次命中省得越多但匹配命中率会略降。对系统提示词较长的 Agent 场景可以配合文档中的 调度器设计 理解其准入与抢占策略。缓存组Cache Group一种框架管理所有注意力结构真实模型远不止标准注意力——滑动窗口SWA、Mamba/线性注意力的递归状态、KV 压缩链……如果每种结构各搞一套缓存复杂度会爆炸。TokenSpeed 的解法是缓存组抽象一个注意力结构 一个缓存组CacheGroup由四件套组成组规格CacheGroupSpec、物理分配器GroupAllocator、前缀匹配策略PrefixMatcher、复用索引PrefixCacheIndex所有组共享同一个物理内存池BlockPool分配、引用计数、逐出、分层下沉全部统一操作组分两个家族history家族分页 KV支持全量或滑动窗口保留和state家族递归/卷积状态快照按检查点粒度保留。对使用者来说最重要的两点混合模型零配置Kimi K3、DeepSeek V4、Qwen3.5 这类混合架构MLA 状态层的缓存配方已经内置无需手动声明逻辑与物理彻底解耦C 调度器只按 Token 数量调度物理字节几何被严格限制在缓存层内部这让调度路径保持极简。 相关源码与文档设计文档docs/design/cache-concepts.md缓存配方每个模型家族的缓存布局recipes/C 调度器缓存层tokenspeed-scheduler/csrc/三级缓存分层GPUL1→ 主机L2→ MooncakeL3前缀缓存在 GPU 显存里是会失血的——请求高峰一来老前缀就被逐出。TokenSpeed 的完整缓存栈把缓存做了三级下沉命中率可以跨请求、甚至跨重启保留GPU Device KVL1最快 ↕ D2H / H2D 异步拷贝 Host pinned bufferL2--kvstore-ratio 控制容量 ↕ batch_put_from / batch_get_into Mooncake StoreL3分布式对象存储可选L2 主机缓存是默认能力一块紧凑的固定内存pinned buffer挂在 GPU 缓存之下前缀被 GPU 逐出前先异步写回主机再次命中时 H2D 拉回即可省去整段 Prefill 重算。L3Mooncake Store是可选的分布式兜底层L2 中每个打包好的 CacheBlock 就是一个存储对象键名形如{tsl3v1-sha256}_{内容哈希}|g{组号}|o{页偏移}|r{tp_rank}|c0。它有一套严谨的命名空间哈希涵盖模型检查点、权重版本、量化配置、注意力后端等保证不同模型/配置绝不串用缓存权重热更新时还会自动先清空旧缓存再重建命名空间。关键配置项均来自 服务器参数文档参数说明--kvstore-ratio/--kvstore-size配置 L2 主机缓存容量--kvstore-storage-backend mooncake启用 L3 分布式存储要求 L2 已开启--kvstore-storage-backend-extra-config传入 Mooncake 客户端 JSON 配置master 地址、segment 大小等--disable-kvstore完全关闭主机缓存纯 GPU 模式快速上手三种典型部署的推荐组合场景一单机、标准模型LLaMA/Qwen 系tokenspeed serve 你的模型 \ --enable-prefix-caching \ --block-size 64纯 GPU 前缀缓存适合请求前缀重合度高、显存充足的场景。场景二显存紧张、上下文很长tokenspeed serve 你的模型 \ --enable-prefix-caching \ --kvstore-ratio 0.5L2 承接被逐出前缀长会话/多轮对话命中率显著提升代价是一部分主机内存。场景三多实例集群、冷启动要快tokenspeed serve 你的模型 \ --enable-prefix-caching \ --kvstore-storage-backend mooncake \ --kvstore-storage-backend-extra-config {master_server_address:10.0.0.1:50051,global_segment_size:16gb,protocol:tcp}注意 L3 依赖 L2不要同时传--disable-kvstore。多实例共享同一 Mooncake 集群时新实例可以热启动直接命中历史前缀。常见问题 FAQQ1前缀缓存是默认开启的吗不是建议显式传--enable-prefix-caching。多轮对话、Agent、RAG 等共享前缀场景收益最大短对话为主的场景收益有限。Q2L2/L3 会导致输出不一致吗不会。缓存命中的 KV 与重新计算位级一致同一检查点与配置下L3 命名空间哈希正是为了防止不同模型版本串味任何量化配置、注意力后端、权重版本变化都会自动隔离到独立命名空间。Q3如何确认缓存真的命中了请求统计中的cache_tokens字段即前缀缓存命中的 Token 数配合 KV 事件发布--kv-events-config还能观测缓存块的存入/逐出事件。Q4混合模型Mamba/KDA 等状态层也能用前缀缓存吗能。状态层按检查点快照复用预填充阶段在固定间隔保存状态快照新请求命中后从最近快照继续而不是从头跑完整个前缀。延伸阅读与资源路径资料路径缓存体系设计文档权威参考docs/design/cache-concepts.md调度器设计准入/抢占/重放docs/design/scheduler.md服务器参数全表docs/configuration/server.md兼容参数速查docs/configuration/compatible-parameters.mdKV 缓存运行时源码kv_cache/缓存配方目录kv_cache/recipes/L3 端到端测试test_l3_kvstore.py掌握前缀缓存 缓存组 三级分层这套组合你就理解了 TokenSpeed 如何在真实负载下持续压缩首 Token 延迟——这正是一款光速推理引擎该有的样子 【免费下载链接】tokenspeedTokenSpeed is a speed-of-light LLM inference engine.项目地址: https://gitcode.com/gh_mirrors/to/tokenspeed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表