CODA用GEMM-Epilogue重写Transformer块缓解内存瓶颈

作者:袖梨 2026-05-31

arXiv 日前发布了编号 2605.19269 的论文,提出 CODA 方法——把 Transformer 块重写为 GEMM-Epilogue 程序,用来缓解内存瓶颈。研究人员发现,当前训练系统虽然依赖密集线性代数,但大量时间被标准化、激活、残差更新这类内存受限的算子偷走。CODA 正是要拿掉这个短板。

这些算子到底有多浪费?数据在全局内存里来回搬运,算力却几乎没怎么用。没错,当计算本身被优化到极致,数据移动就成了真正的拖油瓶。Transformer 的每个层都套着标准化、激活函数、残差连接这些“小步骤”,单个看没什么,一累加起来,内存带宽就被吃掉了。

CODA 的思路其实挺直接:把这些零散的小算子,统统塞进 GEMM 后面的 epilogue 代码里。你想想,本来就做了矩阵乘法,为什么不在同一个 kernel 里顺手做完归一化和激活?这样一来,中间张量不用反复写回内存,数据流动就少了。这算不算是“顺便搭车”的聪明做法?

要说实现细节,CODA 提供了一套 GPU kernel 抽象,让开发者能写“GEMM + epilogue”这样的程序,而不用手动调每一处优化。这就好比把写好的积木搭在一起,编译器再帮你调度。真的,这种抽象层挺适合现在越来越复杂的模型结构——不用每改一个激活函数就重写一遍底层内核。

Transformer 的内存瓶颈已经成为高性能训练堆栈里的硬骨头,CODA 等于给出了一副新药方。虽然论文结论没有给出具体加速倍数,但方向是对的:把计算和访存绑得更紧,减少全局内存的无效搬运。对于需要频繁用到大 batch 和深网络的团队来说,这确实值得关注。

咱们可以期待,CODA 这种“GEMM-Epilogue”范式后续可能会被更多框架接纳。毕竟,内存瓶颈不会自己消失,而重写 block 的代价若能换来实实在在的吞吐提升,那为什么不去试呢?

相关文章

精彩推荐