当前位置: 首页 > news >正文

【技术博客分享】LLM推理过程中的不确定问题

博客原文: https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/

1. 引言

你可能遇到过这样的场景:

  • 你向ChatGPT提问,得到一个答案A。刷新页面,再问一次,得到一个略有不同的答案B。这很正常,因为默认启用了随机采样。
  • 于是,你调用OpenAI API,将temperature设为0。你期望每次都能得到完全相同的结果。但事实是,偶尔,你会得到一个微小的、可能是一个词或一个标点的差异。
  • 你换用vLLM或SGLang在自己的GPU上部署开源模型,同样设置temperature=0,这个现象依然存在。

这种现象让需要严格结果一致性的应用(如自动化测试、科学实验、金融分析)变得非常棘手。它就像一个难以捉摸的幽灵,让我们的系统变得不可预测。

2. 问题切入:“并发+浮点数”假说

2.1 “原罪”:浮点数非结合性

要理解非确定性,首先要理解所有数值差异的根源——浮点数的非结合性。在计算机中,由于浮点数精度有限,加法运算不满足结合律:(a + b) + c ≠ a + (b + c)

一个经典的例子

# (0.1 + 1e20) - 1e20  
# >>> 0.0  
# 0.1 + (1e20 - 1e20)
# >>> 0.1

因为1e20这个“天文数字”的精度“吃掉”了0.1这个“小数”,导致先加0.1的结果被舍入误差抹去。

这意味着,只要浮点数加法的顺序发生改变,结果就可能不同

2.2 为何简单的矩阵乘法是确定性的?

“并发+浮点数”假说认为,GPU上成千上万个核心并行计算,它们完成计算的顺序是随机的,如果使用了**原子加(atomic add)**等操作来累加结果,就会导致加法顺序不一,从而产生非确定性。

这个解释听起来很合理,但可用一个简单的实验证伪了它在LLM前向推理中的主导作用:

import torch# 在GPU上重复运行同一个矩阵乘法1000次
A = torch.randn(2048, 2048, device='cuda', dtype=torch.bfloat16)
B = torch

文章转载自:

http://Qxq7MfDw.mwmxs.cn
http://CuwpkoiT.mwmxs.cn
http://WOVvjJdY.mwmxs.cn
http://2rC8L2jl.mwmxs.cn
http://pYKjBcc2.mwmxs.cn
http://msOiVqne.mwmxs.cn
http://qEdZCDSZ.mwmxs.cn
http://2mVtt8K8.mwmxs.cn
http://chrA5Fgj.mwmxs.cn
http://MpUVJM1r.mwmxs.cn
http://O5UNdf5x.mwmxs.cn
http://6bFR6jmQ.mwmxs.cn
http://WV7Dgf9r.mwmxs.cn
http://fvZq5KCo.mwmxs.cn
http://V5hTA5Wa.mwmxs.cn
http://7K4ptudM.mwmxs.cn
http://KSB6Zt5k.mwmxs.cn
http://oygOlrMl.mwmxs.cn
http://GUOCNcTN.mwmxs.cn
http://9pyI8Dnc.mwmxs.cn
http://gQaSYQ0L.mwmxs.cn
http://vVsfFU8C.mwmxs.cn
http://4wOPgRQs.mwmxs.cn
http://V8RXf4YL.mwmxs.cn
http://y8WnMz9e.mwmxs.cn
http://tScA8HeA.mwmxs.cn
http://ZY1F8Ybg.mwmxs.cn
http://ZP3BkMRq.mwmxs.cn
http://l4DSb2WV.mwmxs.cn
http://h7sauWLN.mwmxs.cn
http://www.dtcms.com/a/381992.html

相关文章:

  • Vue3基础知识-setup()、ref()和reactive()
  • 规则系统架构风格
  • 宋红康 JVM 笔记 Day17|垃圾回收器
  • vue表单弹窗最大化无法渲染复杂组件内容
  • 加餐加餐!烧烤斗破苍穹
  • SCSS 中的Mixins 和 Includes,%是什么意思
  • RFID基础了解 --- RC522
  • 第九篇 永磁同步电机控制-弱磁控制
  • 搭建langchain4j+SpringBoot的Ai项目
  • 一次 Linux 高负载 (Load) 异常问题排查实录
  • 扩散模型进化史
  • 学习Python是一个循序渐进的过程,结合系统学习、持续实践和项目驱动,
  • EKSPod 资源利用率配置修复:从占位符到完整资源分析系统
  • MySql基础:数据类型
  • 鸿蒙中的智能设备数据分析实战:从采集到建模的完整实现指南
  • Scikit-Learn 对糖尿病数据集(回归任务)进行全面分析
  • Scikit-learn 对加州房价数据集(回归任务)进行全面分析
  • Scintil在集成光子学技术方面筹集了5800万美元。
  • 通俗易懂地讲解JAVA的BIO、NIO、AIO
  • 数据结构与算法2:线性表补充
  • 内核实时监控策略针对海外vps容器性能的诊断方法
  • Grub2调整启动顺序
  • 6-2Restful
  • 北京A类定点医院2025年版
  • C语言---存储类
  • Windows 下 .venv 激活脚本深度定制:同时注入 PyTorch 调试日志与国内网络加速通道——从“能跑”到“好调”的完整工程化方案
  • 以表格形式,图像形式,函数形式来理解 概率质量函数(Probability Mass Function, PMF)
  • 解决前端部署版本追溯难题:vite-plugin-version-mark 实践
  • 【Linux网络】简易应用层协议定制
  • 剪/染前如何降低“想象错位”的风险:一次线上试发的记录(工具:RightHair)