推理阶段不同batch size对大模型推理结果的影响

发布时间:2026/10/28 1:46:04

推理阶段不同batch size对大模型推理结果的影响 SGLang最新版本提供了确定性推理的方法:SGLang的确定性推理!!!Thinking Machines Lab对这个问题基本上画上了句号在其官方blog大模型推理阶段进行batch inference批处理推理解码会像预期的那样速度很快推完吗会不会有什么问题batch inference推理的结果居然会和一条一条推理结果差的很远Batch Decoding/Inference of LLMs will cause different outputs with different batch size?!行为表现测试中可以发现即使是在推理阶段不是在训练阶段对于多模态大模型VLLM如果推理时候为了加速推理不是一条一条数据让模型推而是一次推理batch_size1条数据对比batch_size1和batch_size1的结果会发现这两份结果分布是不一样的why可能表现为batch_size1测下来的模型推理结果基本上都是对的例如本身让模型回复“是”或者“否”很短的回答模型回答的挺好的不仅正确而且简短没有废话调试好了之后大规模数据上batch inference批处理batch_size1发现推理没有变快推理结果还有问题准确性大幅下降模型甚至给出了很多长回复(例如模型开始解释或者开始模棱两可说为什么不能回答这个问题)是否是模型随机种子、采样影响推理阶段影响模型随机性的参数推理阶段影响模型随机性的参数可以控制的主要有3个分别为temperature、topK和topPtemperature:温度参数影响输出的概率分布当温度接近0时模型会变得非常确定性几乎总是选择具有最高概率的下一个词从而产生更加一致但可能较为重复或缺乏创意的输出。如果希望减少随机性可以将温度设得低一些topK只考虑最有可能的k个词汇并从中进行随机选取设置一个较小的k值可以帮助减小随机性因为只有少量高概率的词汇会被选中topP它基于累积概率来决定候选词汇集。具体来说模型会选择累积概率达到p阈值的最少数量的词汇作为候选。p值通常设定为0.8或0.9左右这意味着大约80%或90%的累计概率被覆盖。如果想进一步降低随机性可以提高这个值有的人会觉得batch inference结果的差异是模型本身随机性导致的从分布里面采样采出来结果不可能每次都一样。为了去掉随机性干扰可以把temperature设置为0topK和topP都做类似的设置。当然最好的方式直接设置do_sample或者是samplingFalse解码时不进行随机采样这样结果按理就是确定的。结果表明即使samplingFalsebatch inference的结果还是会和batch_size1不一样batch inference结果受到哪些因素影响在do_sampleFalse的情况下已知的会影响推理结果的因素主要有batch size不同batch size大小结果会很不一样padding side (left/right)无论左还是右都不能消除左和右的推理结果也会很不一样padding value (unkeosbos0)用不同的padding值都不能消除差异不同padding的值也会右影响dtype数据类型也会有影响有人怀疑是RMSNorm导致的浮点溢出的问题FP32、BF16、FP16等都会有影响即使和原始模型的dtype一样batch inference解码结果也会不一样KV-cache是否打开KV-cache也会影响但是关闭KV-cache并不能解决问题已知的会影响到的模型包括所有使用旋转位置编码的模型解决方法无目前还没有修复可以参考下面的github上gante的comment缓解的方式在使用多模型模型MiniCPM-V-2.6尝试保证每个batch里面输入的token长度是一样的都是问同一个问题并且图片的数量一样这种情况下就不需要padding得到的batch inference的结果统计下来和batch_size1的结果是一致的避免的方式微调模型如果是需要确定性回答的比如让模型做分类任务输出class标签或者VQA做选择题让微调时prompt和inference一样被batch size影响的程度会比较小目前测下来是这样的可能F1上偏差3%参考探究inference阶段batch inference差异的论文The batch size can affect inference resultsOpenreviewgithub上的深入探究huggingface的探究
延伸阅读

更多相关文章

2026/10/28 1:37:19

Yuzu版本管理指南:三步完成版本挑选、校验与旧构建回退

Yuzu版本管理指南:三步完成版本挑选、校验与旧构建回退 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 针对新版 yuzu 模拟器构建异常、需要回退到旧版本的具体场景,本文以 yuzu-downloads …

2026/10/28 1:37:19

UVa 611 Parallel Deadlock

题目描述 并行计算中,处理器间通过发送(S)和接收(R)消息进行通信。每条指令可以是阻塞(B)或非阻塞(N)模式。阻塞发送要求目标处理器执行匹配的接收才能完成,阻…

2026/10/28 1:37:19

GitHub Flow

GitHub团队协作工作流 创建Issue 做什么、为什么做开分支 从main分支中拉出新分支,分支命名规范,一看就知道干什么提交 commit 本地写代码,频繁commit,每次提交附带清晰信息。完成功能后push到远程仓库。发起PR Pull Request 请求…

2026/10/28 1:37:19

UVa 742 Domino Game

题目描述 Domino\texttt{Domino}Domino 游戏采用 282828 张多米诺骨牌,每张牌的两面分别标有数字 000 到 666。两面数字相同的牌称为双块。游戏由两名玩家(Red\texttt{Red}Red 和 Green\texttt{Green}Green)进行,双方各获得 nnn 张…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/28 0:02:13

Python股票自动交易系统源码解析:从行情获取到风控的完整链路

简介:这份资源是面向高校计算机、金融相关专业毕业设计场景的完整项目源码包,主题为基于Python的股票自动交易系统,适合需要完成毕设选题、课程设计或自学金融量化交易开发的学生与开发者参考。压缩包共收录687个文件,整体约14.93…

2026/10/28 0:02:13

视酷酷信IM源码部署指南:Java 17+MySQL 8.0.33实战配置

简介:这是一套2024年亲测可部署的视酷酷信IM即时通讯系统源码,面向具备Java、OC、C#及Vue开发能力的技术人员,解决私有化即时通讯平台快速搭建与二次定制需求,尤其适用于需集成商城、保障数据主权的中小型企业或独立开发者。资源共…

2026/10/28 0:02:13

Python爬取百度迁徙数据:接口解析、批量采集与避坑指南

简介:这份资源是一个用Python爬取百度迁徙数据的脚本压缩包,面向具备Python基础、希望入门网络爬虫与数据解析的开发者,解决按日期获取全国热门城市人口迁徙数据的问题。包内共1个文件,为单个py脚本,压缩包约1KB&#…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑