26-07-03 16:21 微博认证:科学科普博主 微博原创视频博主

#今天要来点AI吗?#

浮点数运算不满足结合律

在 GPU 上做大规模矩阵运算时,结果的累加顺序不同会导致输出比特差异。

像 splitK 或 split-KV 这样的 workload 分割策略,会让同样的输入在不同 SM(Streaming Multiprocessors)上得到略微不同的结果。这使得训练中的 loss spike(损失突然飙升)难以复现和调试。

DeepSeek的团队开发了 DeepGEMM + TileLang 自研内核,替代 cuBLAS。

不用原子操作(atomics)来累加,而是把部分结果写入独立缓冲区,再用第二个 kernel 按固定顺序合并,保证 位级确定性(bitwise determinism) 和 批次不变性(batch invariance)。

他们声称性能损失可以忽略,甚至比 cuBLAS 更快。

DeepSeek 的内核支持更多 tile 尺寸和 JIT 编译,能更好地利用 GPU 资源,而 cuBLAS 是预编译的,留有优化空间。

大多数 AI 实验室容忍非确定性,因为强制确定性通常会带来性能损失。

DeepSeek 选择牺牲一点性能换取确定性,结果却发现性能并未下降,反而更好。

这对调试和复现训练过程非常重要。

发布于 黑龙江