
KV Cache Offloading 原理详解GLM5.2 如何用 CPU DRAM 突破 1M 长上下文 HBM 内存墙【免费下载链接】GLM5.2-KV-Offloading-FusedSfaOverlap项目地址: https://ai.gitcode.com/Ascend-SACT/GLM5.2-KV-Offloading-FusedSfaOverlap在 GLM5.2 长文本推理场景中KV Cache OffloadingKV 缓存卸载是把注意力 KV 缓存从 HBM 下沉到 CPU DRAM 的关键手段。开源项目GLM5.2-KV-Offloading-FusedSfaOverlap结合 CPU DRAM 卸载与融合稀疏注意力Fused SFA在昇腾 NPU 上稳定支撑1M1048576token的超长上下文用「更大更便宜的 CPU 内存」化解了 HBM 容量不足这道内存墙。一、为什么长上下文会撞上 HBM 内存墙HBM高带宽内存速度快、但容量有限且成本高。当输入上下文拉长到几十万甚至百万 token 时注意力计算产生的KV Cache会迅速吃掉全部 HBM导致显存耗尽无法同时容纳模型权重 激活 超长 KV Cache请求直接被拒绝并发受限单请求 KV 占满后多请求并发能力骤降成本上升为塞下 KV 而堆 HBM整机成本被拉高。而 CPU 侧的DRAM容量往往是 HBM 的数倍到数十倍价格却低得多。思路很直接把不活跃的 KV 缓存放到 CPU DRAM需要时再快速搬回 HBM从而用「慢一点但巨大」的内存扩展上下文上限。这正是KV Offloading的核心价值。二、项目核心KV 卸载 融合稀疏注意力Fused SFA本项目并不只是「把 KV 存到内存」这么简单它的关键在于稀疏注意力 计算传输重叠稀疏 KV Offload利用稀疏注意力Sparse Attention只关注 Top-K 关键 token配合 CPU DRAM 池dram_size_per_dp_GB可按 DP 配置让解码阶段的 KV 读写落在 DRAM 上HBM 只保留热数据Fused SFA融合稀疏注意力把稀疏选择、写入回写等步骤融合成更少的算子降低框架开销与同步等待Overlap计算-传输重叠让「KV 数据搬运」与「NPU 计算」并行隐藏 DRAM↔HBM 传输延迟避免搬数据时算力空转。一句话理解用 CPU DRAM 扩容 KV用稀疏 融合 重叠保证搬得快、算得满最终实现 1M 上下文的稳定推理。相关源码与优化补丁可在仓库中查阅fsa_framework_optimizations_default_on.patchFSA 框架优化异步规划、布局复用、描述符融合等默认开启补丁fsa-internal-planner-original-baseline.patch融合重叠fused overlap外部 LRU 规划基线sfa_kv_offload_mtp_validation_debug_only.patchSFA KV offload MTP 校验仅调试回归测试三、整体架构PD 分离 CPU DRAM 卸载 MemFabric 传输项目采用Prefill/Decode 分离PD 分离架构配合负载代理与高速传输层形成如下链路普通 proxy先 P 后 Dconductor │ ├─ PrefillDCP MultiConnectorKV pool MemFabric └─ Decodesparse KV offload MemFabric P → D 请求级批量传输各角色分工清晰Proxy代理/ConductorOpenAI 兼容入口负责负载均衡先把请求送到 Prefill再把返回的 KV 元数据交给 DecodePrefillP负责长输入的预填充KV 通过 KV pool 与 MemFabric 传输DecodeD开启稀疏 KV 卸载主 KV 落在 CPU DRAM 池indexer 缓存在 HBMMemFabric / MemCache跨设备、跨节点的高速内存传输底座支撑 P→D 的 KV 批量推送。部署与角色细节可参考 connectorv1_memfabric-READE.md 与 prefill_dcp-connector_memfabric_rd2h-decode_offload.md。四、CPU DRAM 卸载的关键配置真正决定「能否扛住 1M」的是 Decode 侧的 offload 参数。项目以kv_offload_decode_config形式开启并调优enabled: true总开关启用 KV 卸载use_fused_overlap: true开启融合稀疏注意力 计算传输重叠topk_buffer_size: 4096稀疏选择的热缓冲容量dram_size_per_dp_GB: 180每个 DP rank 预留约 180GB 的 CPU DRAM作为 KV 主池。同时--max-model-len 1048576将上下文上限拉到1M token并通过--no-disable-hybrid-kv-cache-manager启用混合 KV 缓存管理。传输后端通过VLLM_ASCEND_KV_TRANSFER_BACKENDmemfabric指向 MemFabric实现 NPU 与远端 Host 之间的高效搬运。配置要诀DRAM 池足够大 融合重叠默认开 MemFabric 后端是突破 HBM 容量瓶颈的三件套。⚙️五、如何快速部署一键镜像 分角色脚本项目提供了开箱即用的镜像免去从零编译的痛苦。基本流程为加载镜像git clone仓库后docker load加载glm52_offload_poolingsfa_v0827.tar镜像已集成部署脚本、配置与 proxy准备配置按模板创建mmc-meta.conf/mmc-local.conf其中dram.size指定 DRAM 空间、protocol指定传输协议如device_sdma分角色拉起用launch_online_dp.pyrun_dp_template.sh分别启动 P 节点与 D 节点P 为kv_producer、D 为kv_consumer启动代理运行负载均衡 proxy指向所有 Prefill 与 Decode 实例端口验证curl调用/v1/completions从 16K 逐步压测到 1M 输入。完整的分节点脚本、绑核指令与端口规划见 README.md。六、性能验证1M 输入 / 1K 输出的长上下文压测项目内置了系统的性能测试脚本覆盖从 16K 到 1M 的多档输入长度验证 KV Offloading 在超长上下文下的稳定性与吞吐。典型用例16K–64K基础并发验证前缀缓存命中128K–512K高前缀重复率0.9 / 0.99重点考验 DRAM 池承载能力1M 输入 / 1K 输出极限长上下文验证 CPU DRAM 卸载下仍能稳定完成解码。这些用例通过performance.sh驱动可单独跑某一档或全量执行帮助你快速定位不同长度下的性能拐点。七、总结用 CPU DRAM 重新定义「能跑多长」GLM5.2-KV-Offloading-FusedSfaOverlap给出的答案不是「堆更多 HBM」而是把 KV Cache 卸载到 CPU DRAM再用稀疏注意力 融合算子 计算传输重叠保证性能✅突破容量墙180GB/DP 的 DRAM 池支撑 1M token 上下文✅保持高性能Fused SFA 与 overlap 隐藏 DRAM↔HBM 传输延迟✅架构清晰PD 分离 MemFabric 高速传输 负载均衡代理易于水平扩展✅开箱即用镜像 分角色脚本 压测脚本从部署到验证链路完整。对于希望在昇腾平台上落地超长上下文大模型推理的团队这套「KV Offloading Fused SFA CPU DRAM」的组合方案是一条兼顾成本与性能的可复用路径。【免费下载链接】GLM5.2-KV-Offloading-FusedSfaOverlap项目地址: https://ai.gitcode.com/Ascend-SACT/GLM5.2-KV-Offloading-FusedSfaOverlap创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考