Workflow
确定性推理
icon
搜索文档
首个开源实现100%可复现的稳定RL训练框架来了!2次结果完全重合
量子位· 2025-09-27 09:30
核心技术突破 - SGLang团队联合slime团队通过定制注意力算子和采样逻辑,实现了完全确定性推理,解决了LLM推理中的不确定性问题[2][5][6] - 该实现基于Thinking Machines Lab提出的批次不变性算子,核心创新是解决了因动态批处理导致批次大小变化而引起的浮点运算非结合性问题[4][7] - 确定性推理功能与分块预填充、CUDA Graph、Radix Cache等关键性能优化技术完全兼容,在启用确定性模式时仍支持这些功能[5][9] 性能表现 - 使用CUDA Graph可实现2.8倍加速,与Thinking Machines Lab报告的61.5%性能下降相比,SGLang在FlashInfer和FlashAttention 3后端平均仅有34.35%的性能下降[5] - 在256个请求的RL推理工作负载测试中,确定性推理在FlashInfer后端的性能下降为24.4%-46%,FlashAttention 3后端为27.2%-35.7%,Triton后端为44.64%-55.1%[12][13] - 确定性测试显示,在三种不同测试场景下,常规模式会产生2-18个独特输出,而确定性模式在所有后端均稳定输出1个独特结果,实现了完美确定性[10][11] 技术验证与应用 - 基于Qwen3-8B的重复实验显示两次运行曲线完美重合,为需要高精度复现的实验场景提供了可靠保障[1] - 支持按请求设置采样种子,即使在temperature>0的非贪婪采样模式下也能实现确定性推理[9] - 当前主要推荐用于调试和复现性场景,未来目标是将性能差距缩小到20%以内或与正常模式持平[13] 未来发展路径 - 将优化批次不变算子作为性能提升重点,这对提高RL推理速度至关重要[18] - 计划将确定性推理支持从Dense模型扩展到Qwen3-30B-A3B或DeepSeek-V3等混合专家模型[18] - 将增强基数缓存功能使其兼容更广泛的注意力算子,并计划集成FlexAttention等新后端[18]
融资20亿美元的Thinking Machines Lab首次公开:破解LLM随机性,实现可复现的“确定性”推理
锦秋集· 2025-09-11 17:19
文章核心观点 - 大型语言模型推理结果不确定性的根本原因并非行业普遍认为的"并发计算与浮点数误差",而是核心计算算子缺乏"批次不变性" [1] - 通过重写Transformer模型中的RMSNorm、矩阵乘法和注意力机制三个关键计算模块,实现"批次不变性",可确保计算过程不受批次大小干扰 [2] - 在标准环境中,一个请求重复1000次会得到80个不同版本的结果,而在批次不变方案下,1000次请求的结果完全一致 [2][75] 批次不变性技术原理 - 单个请求的计算过程受到整个"批次"大小影响,导致输出结果取决于随机打包的其他请求数量 [1][28] - 缺乏批次不变性的核函数会使系统在负载变化时产生不确定性,这与GPU、CPU或TPU平台无关 [33] - 实现批次不变性需要保证每个元素的规约顺序固定,不受核函数批次大小影响 [38] RMSNorm批次不变性实现 - 采用数据并行策略,将每个批次元素分配给单个核心处理,保持规约策略一致性 [37][39] - 当批次大小减小时,标准策略会导致核心空闲,而分割规约策略会破坏批次不变性 [43][45] - 解决方案包括忽略小批次情况或使用固定规约策略,但会牺牲峰值性能 [46] 矩阵乘法批次不变性实现 - 标准数据并行策略将输出张量分割成二维tile,每个tile规约保持在单个核心内 [49] - Split-K Matmul策略会破坏批次不变性,而张量核心指令切换也会导致不一致性 [51][54] - 通过编译固定核函数配置实现批次不变性,性能损失约20% [57][59] 注意力机制批次不变性实现 - FlashAttention2策略沿Q并行化并沿K/V规约,保持数据并行特性 [62] - 需要处理特征维度和序列维度双重规约,以及推理优化带来的序列切分变化 [64][65] - 采用固定分割大小策略而非固定分割数量,确保规约顺序一致性 [72][74] 实验结果验证 - 在Qwen/Qwen3-235B模型上测试,标准环境产生80个独特补全,批次不变方案实现1000次完全一致输出 [75] - 性能测试显示未优化确定性方案耗时55秒,优化后降至42秒,较默认26秒仍有差距但可接受 [78] - 真正同策略强化学习实现KL散度为0,显著提升训练稳定性 [79][80] 行业应用价值 - 该技术为需要高一致性的应用场景提供可行路径,如同策略强化学习、科学计算等 [3][79] - 解决训练与推理间数值计算差异问题,实现真正的逐比特一致性 [79][80] - 推动社区深入理解系统不确定性根源,提升机器学习系统可靠性 [83]