News

智谱揭秘“降智”痛点:GLM-5高负载下Agent异常与系统工程解方

智谱揭秘“降智”痛点:GLM-5高负载下Agent异常与系统工程解方

智谱AI近日发布了一篇技术博客,详细阐述了其GLM-5系列模型在处理高并发Coding Agent任务时遇到的“Scaling Pain”(规模化之痛)。这篇博客不同于以往的硬核技术输出,而是坦诚分享了在模型规模化过程中遭遇的挑战及解决方案。

智谱的推理基础设施每天需处理数亿次Coding Agent调用。近期,部分用户在使用GLM-5模型执行复杂Coding Agent任务时,反馈出现乱码、复读以及生僻字等异常。更棘手的是,这些问题在标准推理环境中无法复现。

经过数周的深入排查,团队最终锁定了问题的根源。最初,工程师通过本地回放数百次用户请求,却未能触发异常,这表明问题并非出在模型本身。随后,团队通过模拟在线环境、调整PD分离比例并持续提高系统负载,才成功复现了异常(约每万次请求3-5个),这暗示问题可能源于高负载下的底层推理链路状态管理。为进一步提升异常检测效率,智谱团队引入了投机采样(Speculative Decoding)指标。他们观察到,乱码和生僻字输出的spec_accept_length极低,表明目标模型KV缓存状态与草稿模型存在显著不匹配;而复读现象则表现出过高的spec_accept_length,可能指示KV缓存损坏导致注意力模式退化。基于此,智谱建立了一套在线监控策略:当spec_accept_length持续低于1.4(生成长度超过128 token)或spec_accept_rate超过0.96时,系统将主动中止当前生成,并将请求重新交回负载均衡器。

团队分析发现,主要问题在于PD分离架构下,请求生命周期与KV Cache回收复用时序不一致,引发了KV Cache复用冲突。为消除这类竞态,智谱在推理引擎中引入了更严格的时序约束和显式同步机制。具体而言,在发出中止指令后,解码阶段会向预填充(Prefill)阶段发送通知。预填充阶段只有在未启动任何RDMA写入或所有先前写入操作已完全完成后,才会返回安全回收信号。解码阶段在收到此确认后,才会回收并重用相应的KV Cache槽位,从而确保KV Cache写入不会跨越内存复用边界。此修复后,异常输出的发生率从万分之十几降至万分之三以下。

另一个问题是当KV Cache换入与计算重叠时,现有实现未能保证数据在使用前已完成加载,导致可能访问到未就绪的KV Cache。智谱通过重构HiCache读取流程并引入数据加载与计算之间的显式同步约束解决了此问题。在启动Indexer算子之前,团队插入了一个Load Stream同步点,确保相应级别的Indexer缓存已完全加载。Forward Stream只有在数据准备就绪后才会进行计算,彻底消除了“read-before-ready”的问题,使得系统在相同工作负载条件下得以稳定。

智谱发现,上述两类Bug均指向了同一个系统瓶颈:在长上下文的Coding Agent服务任务中,预填充(Prefill)阶段已成为影响系统性能的主要因素。为缓解高并发下Prefill阶段的内存和带宽压力,团队设计了KV Cache分层存储方案——LayerSplit。在该方案中,每个GPU只存储部分层的KV Cache,显著降低了单GPU内存占用。在执行Attention计算前,将对应层的KV Cache广播给其他相关rank。为降低通信开销,还进一步将KV Cache广播与indexer计算重叠,将通信延迟隐藏在计算过程中。额外的通信开销仅来自Indexer Cache的广播,其大小仅为KV Cache的八分之一,整体通信成本可忽略不计。将LayerSplit与GLM-5.1结合后,在Cache命中率达到90%、请求长度在40k至120k区间时,系统吞吐量提高了10%到132%,且上下文长度越长,收益越大。

这些优化显著提升了系统在Coding Agent场景下的处理能力。智谱强调,当智能真正进入高并发、长上下文的Coding Agent场景后,维护推理基础设施的输出质量变得至关重要。未来大规模AI不仅需要Scaling Law推动的能力增长,更离不开等量级的系统工程支撑。

↗ 阅读原文