slug
type
status
date
summary
tags
category
icon
password
Thinking Machines Lab  大名鼎鼎的thinking machine lab
 
最近读到一篇硬核长文《Defeating Nondeterminism in LLM Inference》,瞬间把我之前的困惑都串起来了。 我们常说:大模型像“文字接龙”。想要更有创意,就把 temperature 调高一点;若把温度调成 0,理论上每次都选概率最大的词,应该是确定的。可现实是:温度 0 也经常不确定,同样的输入,结果有时仍不一样。 很多解释会把锅甩给“并发 + 浮点非结合性”。但这篇文章指出:这解释不完整。事实是,许多前向 kernel(比如常见的矩阵乘法)在相同形状下是 run-to-run 位级相同 的;给定一模一样的整批请求,前向也可以被视为确定。
那用户为啥还会遇到不确定?关键在一个词:batch invariance(批次不变性)。 当你的请求被放进推理引擎时,这一次的 batch 大小(由并发和负载决定)会影响底层 kernel 的归约/并行策略,从而改变数值细节→最终的解码路径。 负载对你来说是“随机”的,因此同样输入、一次次调用就体感不确定。
作者给的解法是:把涉及归约的关键算子都做成 batch-invariant—— RMSNorm:保持数据并行,避免小 batch 时切到改变归约顺序的策略; Matmul:回避随形状切换到 Split-K/stream-k,尽量用固定的 tiles/指令组合; Attention:让 KV cache 与当前 token 的 K/V 在 kernel 里统一布局与归约顺序,并用 “固定 split 大小”的 Split-KV,保证不因切片/并发不同而改顺序。 结果很硬气:温度 0、同一提示跑 1000 次,默认栈出现约 80 种不同;启用 batch-invariant kernels 后,1000/1000 次完全一致。性能会慢一些,但在优化后仍在可接受范围。
我的看法: 创作/营销场景里,我们有意用温度造“好不确定”; 金融、法律、医疗里,需要的是底层可复现的“好确定”。 这篇文章的价值,就在于直指根因:不是简单“浮点+并发”,而是kernel 缺乏 batch invariance;只要把 RMSNorm/Matmul/Attention 做到 batch-invariant,推理就能“所见即所得”。 这一步迈过去,True On-Policy RL 也就有了现实基础。
最近读到一篇硬核长文《Defeating Nondeterminism in LLM Inference》,瞬间把我之前的困惑都串起来了。
我们常说:大模型像“文字接龙”。想要更有创意,就把 temperature 调高一点;若把温度调成 0,理论上每次都选概率最大的词,应该是确定的。可现实是:温度 0 也经常不确定,同样的输入,结果有时仍不一样。
很多解释会把锅甩给“并发 + 浮点非结合性”。但这篇文章指出:这解释不完整。事实是,许多前向 kernel(比如常见的矩阵乘法)在相同形状下是 run-to-run 位级相同 的;给定一模一样的整批请求,前向也可以被视为确定
那用户为啥还会遇到不确定?关键在一个词:batch invariance(批次不变性)
当你的请求被放进推理引擎时,这一次的 batch 大小(由并发和负载决定)会影响底层 kernel 的归约/并行策略,从而改变数值细节→最终的解码路径。
负载对你来说是“随机”的,因此同样输入、一次次调用就体感不确定
作者给的解法是:把涉及归约的关键算子都做成 batch-invariant——
  • RMSNorm:保持数据并行,避免小 batch 时切到改变归约顺序的策略;
  • Matmul:回避随形状切换到 Split-K/stream-k,尽量用固定的 tiles/指令组合
  • Attention:让 KV cache 与当前 token 的 K/V 在 kernel 里统一布局与归约顺序,并用 “固定 split 大小”的 Split-KV,保证不因切片/并发不同而改顺序。
结果很硬气:温度 0、同一提示跑 1000 次,默认栈出现约 80 种不同;启用 batch-invariant kernels 后,1000/1000 次完全一致。性能会慢一些,但在优化后仍在可接受范围。
我的看法:
  • 创作/营销场景里,我们有意用温度造“好不确定”;
  • 金融、法律、医疗里,需要的是底层可复现的“好确定”。
  • 这篇文章的价值,就在于直指根因:不是简单“浮点+并发”,而是kernel 缺乏 batch invariance;只要把 RMSNorm/Matmul/Attention 做到 batch-invariant,推理就能“所见即所得”。
    • 这一步迈过去,True On-Policy RL 也就有了现实基础。
 
 
 
 
 
 
 
 
 
 
软件工程师大概率是个过渡职业Hinton采访 24.6.27
Loading...
盛溪
盛溪
盛溪的学习&生活博客
Announcement
🌟 欢迎来到盛溪的博客!🌟
大家好,我是盛溪。在这里,我将分享我的生活感悟、学习心得以及其他一些有趣的发现。希望我的文章能为你的生活带来一点启发和乐趣。
📅 更新通知:
  • 我会定期更新博客,分享新的内容。你可以通过RSS订阅或关注我的社交媒体账号来及时获取更新通知。
💬 互动环节:
  • 如果你有任何问题或想法,欢迎在评论区留言。我非常期待与你的互动!
📚 推荐阅读:
  • 不定期推荐一些我觉得有价值的书籍或资源,希望能对你有所帮助。
感谢你的访问和支持,希望你能常来逛逛!
盛溪敬上