ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Loss 到底算在谁身上:检查 SFT 的模板与标签掩码——8 条真实样本、每组 4 步更新

Loss 到底算在谁身上:检查 SFT 的模板与标签掩码——8 条真实样本、每组 4 步更新 Loss 到底算在谁身上检查 SFT 的模板与标签掩码——8 条真实样本、每组 4 步更新系列从最小复现到可检验的科研问题日期2026-10-02读者研究生、科研新人和工程型研究者范围SmolLM2-135M-Instruct、SST-2 英语情感分类小预算训练审计不是完整基准成绩。一、复现价值承接格式失败而不是重建基线088 已发现同一模型在纯标签与 JSON 输出约定下表现不同。本篇沿用它的模型、分词器、提示和评分器只新增监督位置对照开发评测取原有六十四条中的固定前八条另留的一百二十八条确认样本继续不推理。不能把这八条的分数直接与上一篇六十四条总分相减。模型仍是已经接受官方指令训练的 Instruct 检查点。模型卡说明其指令训练使用公开及整理的数据并经过偏好优化本文不复现那个完整流程也不宣称从未经微调的基础模型开始。[1] 新增训练样本来自固定版本 SST-2 的官方 train 划分原验证划分只用于行为观察。[2][3]真正新增的产物不是一条漂亮曲线而是逐位置监督账本、逐步梯度、两份最终参数状态和更新前后的原始输出。读者可以追问第一枚回答 token 有没有被教到结束标记有没有被误删没有回答的样本是否仍被送进训练二、核心思想输入可见不等于直接计入损失设批量大小为 B、填充后序列长度为 T模型输出分数张量 z 的形状是 [B,T,V]V 是词表大小。对输入序列 x 和监督标记 m使用的平均交叉熵为L − ∑ b 1 B ∑ t 1 T − 1 m b , t log ⁡ p θ ( x b , t ∣ x b , t ) ∑ b 1 B ∑ t 1 T − 1 m b , t . L-\frac{\sum_{b1}^{B}\sum_{t1}^{T-1}m_{b,t}\log p_\theta(x_{b,t}\mid x_{b,t})}{\sum_{b1}^{B}\sum_{t1}^{T-1}m_{b,t}}.L−∑b1B​∑t1T−1​mb,t​∑b1B​∑t1T−1​mb,t​logpθ​(xb,t​∣xb,t​)​.这里位置按零起点编号m 为一表示该目标参与监督零表示忽略位置 t 的目标由前一位置的输出预测。分母是这一批真正被监督的 token 数不是样本数也不是填充后的矩形面积。分母为零时应在进入训练前报错。全序列组监督首个 token 之后的所有真实位置仅回答组只监督助手回答及其真实结束标记 EOS。两组都保留完整提示作为输入填充位置都不监督。模板产生的最后一个 EOS 之后还有换行本篇明确在两组中一起删除不把这个决定藏在数据处理里。“标签掩码”是哪些位置计分“注意力掩码”则决定填充等位置如何参与注意力计算。把提示的标签设为忽略值并不表示从上下文删掉提示也不表示提示对应的内部表示没有梯度。回答仍然依赖前面的任务说明和影评这正是后面要测的区别。三、官方代码阅读路线沿着真正执行的链路追先看模型的 tokenizer_config。其聊天模板写入角色起止标记并且 PAD 填充符与 EOS 结束符共用 ID 2。[1] 因而不能用“凡是等于 pad_token_id 就设为 -100”的捷径那样会同时删掉真实回答结尾。我们按真实长度和回答边界构造标签另用错误做法检查反例八条样本都少掉了一枚应监督的 EOS。再看 Transformers 的 apply_chat_template。程序分别渲染含助手起点的提示以及包含完整回答的对话逐 ID 断言前者确实是后者的前缀。[4] 通过后才用该边界掩码而非按字符串长度猜 token 数。本次只证明这种单轮模板可用多轮对话、边界分词合并或工具消息需要重新审计不能照搬一个固定偏移。随后读 LlamaForCausalLM 的词表投影和 loss_function 调用再进入固定提交的 ForCausalLMLoss。官方函数已经完成标签移位并把忽略值设为 -100。[4] 本地直接传未移位标签同时独立计算“前 T−1 个 logits 对后 T−1 个 labels”的交叉熵。若调用方再次提前移位模型就会被训练去预测错误的后续位置。最后追到 PyTorch SGD 的参数更新。[5] 本地没有改写模型数学四份 Transformers 安装源码及 SGD 文件均与固定官方提交逐字节相同。模板、掩码构造和审计是独立教学实现源码地图明确区分直接调用、复用作者代码与自定义规则。四、最小实验先冻结样本与预算再更新参数训练集按 SHA256(‘89:’idx) 排序取前八条正负各四条这是一条预先登记的选择规则未按训练效果筛样本。验证沿用上一篇 SHA256(‘88:’idx) 的顺序。规范化文本核对未发现所选训练样本与开发及保留样本完全重合但这不能排除近重复或上游预训练污染。SST-2 训练数据还包含影评片段idx 也不能一概解释为独立完整影评。[3]两组从同一份原始权重分别开始完整输入、样本顺序、批量二、四步、学习率 0.001 相同采用无动量、无权重衰减的 SGD全局梯度范数裁剪阈值一。全部 134515008 个参数参与优化。为关闭随机模块模型保持 eval 模式但启用自动求导eval 不等于禁止梯度也没有使用推理模式包住训练。设备为 CPU、float32、四线程显式使用 eager 注意力。先运行每组两条、一步的试跑再据实测资源继续四步正式实验。试跑总耗时 5.518 秒、峰值约 2.33 GB正式总耗时 9.943 秒、峰值约 2.66 GB均在九百秒和六 GiB 预算内。总时间从第三方库导入后起算包含资源校验、模型加载、训练、保存及评测不是纯训练速度。GPU 内存未测量。五、本次实际验证掩码正确行为仍可没有改善第一批输入形状为 [2,92]logits 为 [2,92,49152]三轴分别是批量、位置和词表。独立交叉熵与官方 loss 的最大绝对差为 4.7684×10⁻⁷。首回答目标、真实 EOS 和填充标签逐项通过所有忽略目标对应的 logits 直接梯度均为零但提示输入 embedding 的梯度非零。后者表示提示仍参与回答计算不能据此前者宣布提示“没有被学习”。两组首层查询投影矩阵都发生可测变化最大绝对改变量分别约 2.11×10⁻⁶ 和 2.50×10⁻⁶。最终参数状态和哈希已本地保存。小幅变化证明优化器执行过却不能单独证明模型学会了任务。同一组八条开发样本更新前全序列四步仅回答四步纯标签格式合规 / 标签正确8 / 68 / 78 / 7JSON格式合规 / 标签正确0 / 60 / 60 / 6JSON格式与标签同时正确000评分沿用 F 格式合规、C 唯一显式情感词匹配来源标签、J 二者同时满足。C 是自动代理未做人类语义标注。完整四十八条生成都保留所有样本进入分母未自动修复 JSON。两组都只把 idx481 的纯标签由 negative 改成 positiveJSON 原始回答全部不变。一次单样本变化不足以宣称总体准确率提高更不能证明两种监督等价。六、失败排查先检查分母再解释训练现象每组输入共六百八十四个真实 token但全序列有效监督六百七十六个仅回答只有六十四个。首批 loss 分别约 3.1793 与 0.8639后者较小并不意味着训练更好两者预测的目标集合、归一化分母都不同。这是相同步数和输入的监督策略对照不是等监督 token 预算的性能赛跑所有更新还触发了梯度裁剪。四批的样本不同因此逐批 loss 的首尾差也不能当作同一批上的学习曲线。若要测固定目标是否拟合应另设固定探针并保持评估方式本篇没有补选一个容易下降的子集。前向上下文仍相同不能把监督 token 少十倍写成计算成本省十倍。截断审计则给出更直接的失败上限六十四时八条样本的回答目标全部消失九十六时只丢掉一条的 EOS一百二十八和二百五十六没有损失。正式训练采用二百五十六且无截断遇到超长回答即失败。这些结果来自真实序列位置不是人为加长的演示输入。排查顺序因此应是角色边界、首回答对齐、真实 EOS、padding、有效分母、有限梯度最后才讨论能力。首次公开下载受沙箱代理连接限制失败随后正常下载并通过固定哈希校验没有更换数据或把失败当作实验成功。代码执行、数据问题与模型负结果需要分别记录。七、可检验的研究问题把“没变化”拆成竞争解释作者推断一是四步更新不足以改变贪心输出二是教师强制下目标概率变化尚未跨过自由生成的首 token 决策边界。教师强制指训练时向模型提供正确的前缀自由生成时前缀由模型自己产生。本篇没有保存完整前后概率分布因此两种解释尚未被区分不能写成已经定位的机制。下一篇可在冻结开发协议下比较相同有效监督 token 的数据量与重复次数同时登记固定目标似然、首个生成 token 及 F/C/J。若损失下降却格式持续失败就要检查训练与生成条件差异若只有重复同样本才能改善还需留出任务实例验证记忆解释。这些都是待人工核验的后续实验不预先承诺提升。确认集不参与这些选择。源码与复现入口本篇已发布固定版本完整源码目录、README 运行说明、SOURCE_MAP 官方源码地图。四十个分发文件已匿名拉取并逐一核对 SHA-256目录、说明、地图和入口均可公开访问公开副本的独立审计及真实训练试跑通过损失、梯度与输出和本地一致。链接固定到同一提交不随主分支变化。固定依赖安装并运行下载器后最小命令是python run.py --cache ./cache --out smoke-new --private ./private-new --smoke。它执行真实两条训练样本、每组一步及两条开发样本的双约定生成产出损失、梯度、掩码、输出和检查点删除试跑参数可重做正式实验。独立复核使用audit.py角色与错误 EOS 掩码反例使用role_audit.py。本次实际完成下载、预处理、双组训练、开发生成和独立审计。缓存键包含模型、分词器、数据、模板、解码、划分及执行代码。SST-2 卡片许可标为未知公共包不包含原始影评或可逆输入 token这些本地审计材料、模型权重和训练检查点均不上传读者从固定来源重新获取并运行。总结监督位置是实验假设的一部分。先让每个 token 的计分责任、每个梯度的含义和每份原始输出都可查才有条件讨论训练效果。这个最小实验留下了正确运行但格式未改善的证据也为下一步控制训练预算提供了清楚的起点。参考资料检索及实际访问日期2026-10-02。网页获取失败时改读同一固定版本的官方原文访问记录随验收保存。HuggingFaceTBSmolLM2-135M-Instruct 固定模型卡固定聊天模板与特殊符号。Richard Socher、Alex Perelygin、Jean Wu、Jason Chuang、Christopher D. Manning、Andrew Ng、Christopher Potts2013Recursive Deep Models for Semantic Compositionality Over a Sentiment TreebankEMNLP。本文使用数据不复现论文树模型。Stanford NLPSST-2 固定数据卡。Hugging FaceTransformers 4.49.0聊天模板入口、模型损失调用、移位与忽略标签源码原文。PyTorch 2.6.0SGD 单张量更新。
返回列表