GLM 自建推理栈解析,国产加速器集群上把端到端性能提升 3 倍的办法

GLM 在一个超过十万张国产 AI 加速器的集群上,从零搭起完整的生产级推理服务,GLM-5.3-Flash 的全部生产推理都跑在这套系统上。从模型适配到上线用了不到两周,端到端吞吐相对初始基线提升约 3 倍。官方定调很清楚,还没有达到递归自我改进,目标设定、边界划分和风险评估仍然由人负责。

起点是什么条件

这套系统的硬件约束和堆英伟达卡的路子不同。加速器的单卡内存容量与带宽相对有限,同时要支持 1M token 的长上下文和多模态请求。官方没有披露加速器厂商、型号、单节点卡数和互联类型,只说明在软件侧做了针对性设计。

软件栈用了 SGLang、Flash Linear Attention、DeepGEMM、DeepEP、Mooncake Transfer 这些开源组件,自研部分集中在并行策略和调度机制上。

性能是怎么爬上去的

官方公布的时间轴把优化拆成十三个节点,每一步都有倍数标注。

  1. 起点是 W8A8 量化基线,记为 1.00 倍。
  2. 引入异步调度到 1.21 倍,排序内核优化到 1.42 倍,分层缓存 1.41 倍。
  3. Layer Split 一步跨到 1.97 倍,上下文并行接着到 2.49 倍。
  4. KV 传输与计算重叠 2.67 倍,混合精度缓存量化维持 2.67 倍。
  5. 分块 MQA 到 2.67 倍,预填充反量化内核 2.85 倍,融合激活与量化 3.01 倍。
  6. 线性注意力优化后到 3.22 倍,第 13 天上线,之后持续演进。

量化策略有两层。生产基线用 W8A8,缓存用 INT8、FP8、BF16 混合精度,按数据敏感度分配位宽。并行策略包括节点内张量并行,分别用在 linear attention 和输出头上,加上 Layer Split 与编码、预填充、解码三段分离的架构。

官方称硬件利用率与单 token 成本达到与主流 GPU 相当的水平,这个说法是定性的,没有给出具体数字,也没有绝对吞吐和延迟指标。

三个可复用的排查案例

第一个是数值精度问题。上下文并行的状态合并里,张量运算默认走 TF32 精度,长上下文下误差累积。修复方式是显式指定三次 TF32 合成的高精度模式,这个改动已经合入上游项目。

第二个是并发瓶颈。验收标准是预填充加 KV 传输与纯预填充的差距不超过 5%,实测某些场景超过 20%。定位到通信库的节点内分发函数没有释放 GIL,阻塞了同进程的传输线程提交任务。释放后差距降到 1% 以内。

第三个是内核重复计算。解码内核原实现沿某个维度切分,导致同一份归一化和门控计算重复四遍。改成合并进单个线程块、中间结果留在寄存器、用单次 warp 级归约,牺牲并行度换来 1.71 倍提升。

稠密反馈是怎么组织的

官方把工程师和智能体分了工。人定义目标和系统边界,搭建反馈环境,审阅涉及数值语义、并发行为和生产风险的关键改动。智能体负责分析、提出假设、改代码。反馈分三类,正确性对照参考实现查数值误差,系统行为看运行日志和执行轨迹,性能看微基准和端到端指标。三条属性是局部、便宜及时、客观。

反思要跟上。官方强调所用实验环境提供了可验证的分层反馈,相关性不等于根因。这套流程依赖已有的测试与观测基建,基建差的团队直接照搬会卡在第一步。

常见问题

  • 这套方案能移植吗。并行策略和调度逻辑可以借鉴,量化与内核优化和硬件强绑定,要重做。
  • 官方说的 3 倍怎么理解。相对这套系统的初始基线,不是与 GPU 对比。
  • 十万卡规模可信吗。属于官方口径,未披露拓扑细节,独立验证不了。
  • 长上下文怎么扛。1M 窗口靠上下文并行加 KV 传输重叠,代价是通信复杂度上升。