据消息,近期,团队在GLM-5系列模型的高并发、长上下文Coding Agent推理服务中,定位并修复了多个底层系统级Bug,并实施了关键优化,显著提升了系统的稳定性和处理效率。这些异常现象包括乱码、复读和偶现生僻字,仅在特定高压场景下触发。
从线下复现到异常识别
自3月起,团队从线上监控和用户反馈中发现三类异常。通过模拟线上高负载环境,最终以约万分之三至五的频率稳定复现问题,确认异常与系统压力相关,而非模型本身。团队创新性地利用“投机采样”指标作为异常检测的关键信号,实现了对乱码、生僻字(伴随极低的连续接受长度)和复读(伴随偏高的接受率)的在线监控与主动拦截。
BugFix#1:PD分离架构下的KV Cache竞态
该问题源于异步请求终止机制下,KV Cache回收与写入时序不一致导致的跨请求数据覆盖。
1. 原因分析:当Decode侧因超时终止请求并回收其KV Cache资源后,未能正确通知Prefill侧,导致原请求的KV写入操作未被取消,继而覆盖了新复用同一显存区域的新请求数据。
2. 修复方案:在推理引擎中建立了严格的时序一致性保证。Decode侧终止请求后,需等待Prefill侧确认相关写入已完成或未开始,才允许回收并复用对应的KV Cache槽位。
3. 修复效果:上线后,相关异常发生率从约万分之十几下降至万分之三以下。
BugFix#2:HiCache加载时序缺失
该问题发生在使用HiCache优化长上下文场景时,因流水线同步缺失导致计算读取了未就绪的缓存数据。
1. 原因分析:在异步加载KV Cache与计算重叠执行的流水线中,Forward Stream中的Indexer计算未与Load Stream的数据加载完成建立同步约束,出现了“read-before-ready”的访问。
2. 修复方案:在HiCache读取流水线中,于Indexer算子启动前引入显式同步点,确保对应数据加载完成后方启动计算。
3. 修复效果:该修复已提交至SGLang社区(PR #22811),上线后相关异常完全消失。
优化:KV Cache分层存储LayerSplit
在解决稳定性问题后,团队针对Coding Agent场景中Prefill阶段成为主要瓶颈的问题,设计了KV Cache分层存储方案(LayerSplit)。
该方案让每张GPU仅保存部分层的KV Cache,通过跨rank广播所需Cache并重叠通信与计算来协同完成Prefill。此举显著降低了单卡显存占用。在缓存命中率90%的条件下,针对40k至120k长度的请求,系统吞吐量提升了10%至132%,且收益随上下文长度增加而更为显著。
原文:(来源:)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/283518.html