新闻详情

新闻详情

首页 / 资讯中心 / 详情

大模型 Padding:为什么训练时右填充、批量推理时必须左填充

发布时间:2026/9/14 21:43:45来源:尧图网络
大模型 Padding:为什么训练时右填充、批量推理时必须左填充
做大模型训练和批量推理时都避免不了与padding打交道可是有一种这样的现象为什么同样是补占位符训练用右填充批量推理却必须换成左填充有时候训练loss看着正常但是批量推理就乱生成、答非所问核心原因不是padding本身有错多数时候都是padding放错了边训练默认右填充没问题但自回归模型批量推理时右填充会直接破坏token之间的位置关系。这篇文章把padding的前因后果讲清楚搞懂为什么训练右填充、推理左填充。一、基础背景Padding在解决什么问题对于大模型的输入是一串token在一个batch里每条样本的长短大概率都是不同的有的一句话就结束有的是一整段长文。但GPU张量要求同批次的所有输入维度完全一致不能长短混放。Padding的作用就是给短序列补上特殊的[PAD]占位token把所有样本对齐到batch内最大长度才能打包成一个张量并行计算。那既然attention_mask已经能把[PAD]屏蔽掉让模型根本看不到这些占位符那[PAD]放左边还是放右边不都一样吗先说结论训练阶段左右填充在理论上都正确有attention_mask做屏蔽业界默认约定用右填充。自回归模型的批量推理左填充是硬性要求不是可选项。这一条如果你没搞懂后面会花不少时间在莫名的生成质量问题上。二、训练阶段统一用右填充右填充 真实文本放在序列左侧[PAD]全部补在句子末尾。在训练阶段其实左右填充都能够正常完成训练因为训练时模型是一次性拿到queryresponse的它是并行的预测所有位置。所有真实token之间相邻token的相对距离永远1。[PAD]无论在在句子开头还是末尾它都在在真实文本的前面或者后面不会插入在真实token中间。但是业界还是统一规定了训练阶段采用右填充主要有以下原因1. 贴合预训练数据的原生形态预训练语料本身就是一段连续的文字——内容在前写到哪就在哪里停止末尾自然结束或截断。模型在海量文本上学到的就是这种内容在前、空白在后的分布。右填充正好复刻了这个形态。反过来如果训练时强行左填充等于给模型一种它在训练集里几乎从未见过的数据格式会引入不必要的分布偏移。2. 对齐绝对位置编码GPT-2这类模型使用可学习的绝对位置编码每个token的位置id从0开始顺序计数位置0就是序列的第一个真实token。右填充时真实文本恰好从position 0开始位置编码和原始文本一一对应position_ids完全不用修正。而左填充会把一串PAD顶在前面真实文本的首词被挤到position NN是[PAD]个数位置编码和预训练时的分布对不上模型就很难学到稳定的位置表征。3. 按框架和kernel的默认约定HuggingFace、FlashAttention等主流库和底层算子在设计时默认输入就是右填充格式。数据加载、mask生成、位置计算这些逻辑都是按这个约定写的用右填充可以省掉大量改配置和排查问题的成本。三、批量推理为什么必须是左填充LLaMA、Qwen这些Decoder-only模型大多用的是RoPE这类的相对位置编码。相对位置编码建模的是token与token之间的距离而不是某个token在整个张量里的绝对下标。它的特性是同一个batch里所有序列整体平移token间的相对距离不变。拿同一个batch的两条句子来直观对比右填充今天 天气 很好 EOS PAD PAD有效序列末尾的EOS后面跟着2个PAD。模型学到过的规律是下一个token紧贴在上一个token后面——即EOS到下一个token的相对距离 1也就是说预测产生的下一个token应该是EOS的位置1。但在右填充的张量里EOS离序列末尾的距离被后面大量PAD拉长了距离 1PAD个数。模型在做自回归生成时感知到的相对距离不再是1相对位置关系错位。结果就是批量推理时输出乱码、逻辑断裂、答非所问。左填充PAD PAD 今天 天气 很好 EOSPAD全部堆在序列最左边此时EOS到下一个需要预测token的相对距离 1和训练时学到的规律完全一致。而RoPE这些相对位置编码的特性对“整段文本整体右移”不敏感token之间的相对距离保持不变所以左填充是安全的。**额外收益左填充更容易做 KV 缓存优化。**左填充场景下有效token是序列右侧连续片段prefill时可以根据attention_mask直接丢弃左侧PAD对应的K/V不写入KV Cache省下显存与无效存储。四、总结Padding 的本质为了满足GPU批量张量计算把不同长度的序列对齐到同一长度attention_mask用来屏蔽PAD参与注意力计算。训练阶段默认右填充。贴合文本原生分布、适配绝对位置编码是行业约定而非硬性限制。Decoder-only批量推理强制左填充。保护token间的相对位置关系避免RoPE位置编码错位保证生成质量。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Trae Remote SSH实战:把99元云服务器变成远程开发环境,快速上线网站 2026/9/15 5:23:38

Trae Remote SSH实战:把99元云服务器变成远程开发环境,快速上线网站

“买服务器容易,用起来难”,这句话我念叨过很多次。最近看到不少人入了 99 元价位的云服务器,结果开了机就不知道怎么继续,最后要么吃灰,要么在 SSH 黑窗口里被命令行劝退。这篇文章要解决的是:用 Trae 的 …

阅读更多 →
开源AI落地实战指南:模型选型、工具链与系统优化 2026/9/15 5:23:38

开源AI落地实战指南:模型选型、工具链与系统优化

1. 这份阅读清单不是“书单”,而是一张开源AI时代的生存地图你有没有过这种体验:打开GitHub想找个能本地跑的代码助手,结果被上百个star过万的仓库淹没;想了解Llama 3和Phi-4到底差在哪,翻遍论文却卡在“MoE架构”“fl…

阅读更多 →
逆地理编码收费全解析:免费额度、按量单价与年包成本对比 2026/9/15 5:23:38

逆地理编码收费全解析:免费额度、按量单价与年包成本对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Python+MediaPipe+OpenCV手势识别系统实现:从关键点到实时交互 2026/9/15 5:23:38

Python+MediaPipe+OpenCV手势识别系统实现:从关键点到实时交互

简介:面向高校计算机相关专业学生,这是一套基于Python、MediaPipe与OpenCV实现的手势识别课程设计/期末大作业方案。系统通过摄像头实时捕捉手部关键点,完成多种手势的检测、识别与交互控制,同时集成登录界面、菜单界面及音乐播放…

阅读更多 →
鼎阳SDS7404A H10示波器:高频信号完整性诊断的工程级解决方案 2026/9/15 5:23:38

鼎阳SDS7404A H10示波器:高频信号完整性诊断的工程级解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
无数据库的PHP短视频源码:JSON数据驱动与性能优化实战 2026/9/15 5:20:38

无数据库的PHP短视频源码:JSON数据驱动与性能优化实战

简介:面向Web开发者与短视频类项目初学者的PHP短视频竖屏播放源码包,适合用于快速搭建移动端或网站中的竖屏视频播放功能。包内整合了后端脚本、前端页面与交互逻辑,覆盖视频上传、转码处理、数据库存储、封面预览、进度控制、安全访问等核心…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞