Command Palette
Search for a command to run...
MiMo-V2.5系列全流程推理优化:将混合滑动窗口注意力效率推向极限
MiMo-V2.5系列全流程推理优化:将混合滑动窗口注意力效率推向极限
摘要
我们提出了针对MiMo-V2.5模型家族的全流程推理优化方案,该模型结合了混合滑动窗口注意力(Hybrid SWA)、稀疏混合专家(MoE)和多模态编码器。虽然与全注意力相比,Hybrid SWA在理想情况下可显著降低注意力计算量和KVCache存储量,但在生产环境中实现这些收益需要大量的工程努力。我们通过分层预取、SWA感知的前缀缓存树和专门的放置策略,系统性地优化了KVCache系统,实现了严格的??(??) SWA存储和高缓存命中率。我们进一步构建了GCache,一个具有RDMA优化网络的高性能分布式缓存基础设施,并开发了KVCache亲和路由器,以在保持负载均衡的同时减少计算量。我们还针对多模态输入进行了优化,包括GPU图像预处理、并行视频解码和多模态缓存共享。这些优化共同构成了首个大规模生产级LLM服务系统,高效覆盖了Hybrid SWA + MoE + 多模态复合架构。
一句话总结
小米MiMo团队为MiMo-V2.5模型家族引入了一套全流水线推理优化方案,通过KVCache优化(逐层预取、SWA感知的前缀缓存树)、基于RDMA优化网络的GCache分布式缓存以及KVCache亲和性路由器,实现了严格的??(??) SWA存储和高缓存命中率,使其成为首个面向混合SWA + MoE + 多模态复合架构的生产级推理服务系统。
核心贡献
- 一个针对混合滑动窗口注意力(Hybrid SWA)的KVCache优化方案,结合了逐层预取、SWA感知的前缀缓存树和专用放置策略,在生产环境中实现了接近最优的存储和高缓存命中率。
- GCache,一个基于RDMA优化网络的分布式缓存基础设施,与KVCache亲和性路由器共同减少了冗余计算,同时保持了服务集群的负载均衡。
- 该系统集成了多模态优化,如GPU图像预处理、并行视频解码和多模态缓存共享,并构建了首个全面覆盖混合SWA、稀疏MoE和多模态架构的大规模生产级推理服务系统。通过API降价将成本节省回馈给用户,并将部分优化贡献给SGLang开源社区。
引言
MiMo-V2.5模型家族结合了混合滑动窗口注意力(Hybrid SWA)、稀疏混合专家(MoE)和多模态编码器,实现了卓越的效率和长上下文推理能力。尽管Hybrid SWA在理论上将注意力计算和KVCache存储量降至全注意力的约七分之一,但生产系统却难以真正实现这些收益,原因在于复杂的KVCache命中率管理、前缀匹配、全注意力层与SWA层之间的双语义一致性、跨存储层级的数据移动以及分布式缓存同步等问题。此外,MoE负载均衡和多模态编码器吞吐量也带来了额外瓶颈。作者通过端到端的推理工程实践解决了这些差距,系统地优化了KVCache管理、分层缓存、SWA感知的前缀缓存树、调度、Prefill/Decode流水线以及多模态推理服务,将架构的理论效率转化为真实的长上下文生产性能。
方法
作者首先分析了KVCache内存使用情况,观察到滑动窗口注意力(SWA)层仅需保留滑动窗口内的键值对,而非整个序列。这种结构稀疏性将KVCache内存使用量降至传统实现的近七分之一。由于解码阶段主要受内存带宽限制,这一减少几乎直接转化为长序列推理成本的降低。
如下图所示,不同模型架构的KVCache存储量差异显著。在各自的参数规模组内,MiMo-V2.5模型展现出第二低的预估KV缓存内存需求,凸显了其混合架构的高效性。
为充分利用这一结构性优势,作者重新设计了缓存系统,采用了KVCache双池设计。Hybrid SWA带来了一个根本性的存储冲突:全注意力层需要存储完整的序列KV,而SWA层仅需滑动窗口。在传统的单池设计下,系统必须为所有层分配完整序列的内存,从而抵消了SWA的优势。作者通过将KVCache拆分为两个独立的物理池来解决这一问题。SWA池严格按窗口大小设定,并支持独立驱逐,而逻辑层则向上层呈现统一的序列视图。系统在请求准入时对两个池的容量约束进行校验,并仅根据SWA掩码执行跨层级数据移动,以避免冗余的带宽消耗。
为了在大规模环境中支持这一优化缓存策略,团队开发了GCache——一个高性能的分布式缓存基础设施。
参考框架图。GCache采用去中心化的元数据管理,通过对键进行一致性哈希来确定存储位置,从而实现集群的无限制扩展。基于Raft的Master负责服务发现和心跳,但IO路径完全绕开它。该架构在服务端同时支持内存和磁盘缓存;冷数据被驱逐到磁盘,热数据被提升到内存,这对于会话活跃度多变的推理场景极为有利。此外,多语言SDK利用专用线程进行请求切片与分发,确保IO大小保持在RDMA友好范围内,并在不消耗用户线程资源的情况下提升并发性。
除了缓存,作者还解决了调度和预填充瓶颈。尽管混合架构提升了计算效率,但随着序列长度的增加,吞吐量仍会明显下降。
如下图所示,在固定的16K计算块下,随着缓存序列长度的增长,相对预填充吞吐量显著下降。在Agent场景中,超长请求常与较短请求并存。当它们被调度到同一模型实例时,短请求会在DP-Attention同步和Chunked Prefill干扰中被长请求拖慢。
为了缓解这些负载不均衡问题,作者实施了三层长度分桶策略,将请求分为0–64K token、64K–256K token和256K–1M token三个桶。通过将具有相似负载特征的请求聚合到同一桶中进行计算,避免了短请求被长前缀计算拖慢,显著提升了生产环境中的平均预填充吞吐量。此外,作者通过减小专家并行规模来优化并行配置(此前该规模因需要存储完整KVCache而受限),进一步提升了端到端性能。
实验
这些实验评估了面向Agent场景的推理系统改进。SWA KVCache设计通过降低存储压力延长了缓存TTL并实现了高命中率。长度分桶解决了不同长度请求间的负载不均衡,大幅提升了预填充吞吐量。GPU内存优化扩展了有效KVCache容量,实现了更高的解码并发。在预填充阶段激活MTP可显著加速早期token的生成,尤其是在短输出场景中。
优化后,编码器吞吐量从每秒15次查询提升至30次,实现了翻倍。平均延迟几乎不变,而P90尾延迟显著下降,表明负载下的一致性得到改善。吞吐量提升100%,平均延迟未出现回退。P90延迟降低约18%,展现了更好的尾部性能。
实验通过测量吞吐量和延迟评估了负载下编码器的性能。优化使吞吐量翻倍且平均延迟未回退,同时尾延迟显著下降,展示了更好的一致性和效率。