蚁工厂
25-09-24 08:49 微博认证:科技博主

记得上次发的那篇“为什么LLM 的推理过程是非确定性的? 如何让LLM 100%输出同样的结果?”文章吗 http://t.cn/AXhFOa33
现在SGLang团队根据这篇文章在SGLang里实现啦!http://t.cn/AXhFOa31

这篇文章介绍了SGLang框架为了实现大语言模型(LLM)推理结果的“确定性”所做的工作。确定性推理指的是,对于完全相同的输入,模型每次都能生成完全相同的输出。这对于需要结果可复现的场景(如科学研究、调试和强化学习)至关重要。

🌟问题背景
通常情况下,即使将模型的temperature参数设为0,LLM的推理结果也并非完全确定。主要原因是服务端的dynamic batching技术。系统会将不同用户的请求合并成一个批次进行处理,而批次的大小和组合是动态变化的。这种变化会导致底层浮点数运算的顺序发生改变,由于浮点数运算不满足结合律,最终会产生微小的差异,导致输出结果不一致。

🌟SGLang的解决方案
SGLang团队借鉴了“Thinking Machines Lab”的研究,通过集成batch invariant的计算核心来解决这个问题。这些特殊的核心无论批处理大小如何变化,都能保证计算结果的一致性。

🌟主要的技术改进包括:
集成批处理不变核心: 替换了多个关键的计算操作,如矩阵乘法和归一化等。
定制化注意力核心: 针对FlashInfer、FlashAttention 3和Triton等多种主流的注意力计算后端进行了修改,使其支持确定性计算。
兼容现有功能: 确保了确定性模式可以与SGLang已有的高性能特性(如分块预填充、CUDA图、基数缓存)协同工作。
支持可复现的随机采样: 引入了基于种子的采样机制,使得即使在温度大于0的情况下,只要种子相同,采样结果也能保持一致。
#AI创造营##微博兴趣创作计划##AI生活指南#

发布于 山东