Non-Monotonic Latency in Apple MPS Decoding: KV Cache Interactions and Execution Regimes
本文揭示,Apple 的 MPS 后端在自回归推理过程中会出现非单调的延迟尖峰,由于后端执行动态,特定配置下的解码性能可能突然下降高达 21 倍,这与在 CPU 和 NVIDIA CUDA 系统上观察到的平滑扩展形成鲜明对比。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正驾驶一辆汽车行驶在高速公路上,随着车上乘客(token)的增加,车速本应越来越慢。在人工智能领域,我们通常预期情况就是这样:对话越长,生成下一个词所需的时间就越长,但这种增长应该是平滑且可预测的。
然而,这篇论文发现,在苹果电脑(特别是搭载 M 系列芯片的机型)上,这条“高速公路”的表现却十分怪异。它并非呈现平滑的坡度,而是会突然撞上凭空出现、转瞬即逝的巨大减速带。
以下是该论文发现的日常化类比解读:
1. “幽灵减速带”
研究人员发现,当使用苹果的图形系统(称为 MPS)生成文本时,生成单词所需的时间并不总是稳步上升。
- 正常预期:如果你让 AI 写 100 个词,需要 1 秒;写 200 个词,需要 2 秒;写 300 个词,需要 3 秒。这就是单调缩放(一条平滑、可预测的线)。
- 苹果的现实:AI 可能在 9 秒内写出 496 个词。但如果你让它只多写16 个词(总共 512 个词),时间突然变成了89 秒。接着,如果你再让它多写 16 个词(总共 528 个词),速度又瞬间恢复正常。
- 类比:想象你在一条路上行驶,毫无征兆地陷入一片泥潭,车速在整整 100 英尺的距离内慢如蜗牛,但一旦驶过这片泥潭,你立刻恢复全速。论文发现,这些“泥潭”发生在非常特定的单词数量上(如 512 或 384),它们能让 AI 的速度比平时慢 21 倍。
2. “魔法记忆盒”(KV 缓存)
为了让 AI 更快,工程师们使用了一种称为KV 缓存的技巧。你可以把它想象成一个“魔法记忆盒”,AI 将对话的上下文存储其中,这样它在生成新词时就不必每次都重读整个故事。
- 通常情况:这个盒子能让汽车行驶得更快。
- 问题所在:论文发现,当 AI 撞上那些“幽灵减速带”(即 512 个词的节点)时,这个“魔法记忆盒”无法像往常一样发挥作用。
- 结果:通常情况下,使用该盒子能让 AI 比不使用它快 20 倍。但在那些“糟糕”的单词数量上,这一优势几乎消失殆尽(仅快 1.9 倍)。盒子依然存在,但它却陷入了交通拥堵。
3. 并非因为“没油了”(内存不足)
当 AI 变慢时,你可能会想:“哦,电脑内存不够了。”
- 测试:研究人员检查了电脑的内存使用情况。他们发现内存使用量是平滑且稳定地上升的,就像气球充气一样。在 AI 变慢的那一刻,内存使用量并没有突然激增或崩溃。
- 结论:变慢并非因为电脑空间不足。而是因为“引擎”(软件后端)在特定时刻突然决定以一种极低效的方式切换档位。这就像汽车引擎突然决定在几秒钟内使用一种糟糕得多的燃料混合物,尽管油箱是满的。
4. 无处不在(并非只有一辆车)
研究人员使用不同类型的 AI 模型(GPT-2、BLOOM、OPT)和不同的苹果电脑(M3 Max 和 M3 Pro)对此进行了测试。
- 发现:所有设备上都出现了“幽灵减速带”。减速带的确切位置会根据车型和引擎大小略有不同,但这种现象是一致的。
- 对比:当他们在标准计算机(CPU)或 NVIDIA 显卡(CUDA)上测试相同的 AI 时,行驶过程是平滑的。这条“颠簸之路”是苹果当前图形软件特有的怪癖。
5. 这对你的意义
论文警告说,如果你只在特定的一两个长度上测试 AI(例如,“让我们看看它在 100 个词时有多快”),你可能会完全错过这些巨大的减速。
- 陷阱:如果你进行基准测试,发现 AI 在 500 个词时很快,但没有检查 512 个词的情况,你可能会认为系统完美无缺。但在现实生活中,如果用户的对话恰好达到那个特定长度,系统可能会瞬间卡住。
- 教训:你不能只看“平均”速度。你必须检查每一步,因为在苹果芯片上,速度会根据正在生成的确切单词数量,发生突然且不可预测的变化。
总结:苹果的 AI 芯片性能强大,但其软件存在一个隐藏的怪癖:在非常特定的时刻,系统会突然变得极其缓慢,持续片刻后又恢复正常。即使内存充足,这种情况也会发生,并且它会让通常的“加速技巧”(如 KV 缓存)在这些时刻的效果大打折扣。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。