拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

微调前先测什么:给小模型建立能力与格式基线——SST-2 的 64 条开发样本

微调前先测什么:给小模型建立能力与格式基线——SST-2 的 64 条开发样本

微调前先测什么:给小模型建立能力与格式基线——SST-2 的 64 条开发样本

  • 系列:从最小复现到可检验的科研问题
  • 日期:2026-10-01
  • 读者:研究生、科研新人和工程型研究者
  • 范围:真实 SmolLM2-135M-Instruct、英语情感分类、两种固定输出约定;无训练,不是完整基准评测。

一、复现价值:给后续微调留下可比较的起点

上一单元研究检索方法的排名与迁移,087 已完成冻结配置的跨集合评测。从本篇开始,研究对象改为小模型的任务微调;复用环境、版本锁定和逐例审计方法,不把检索分数接到分类分数上。新增问题是:回答格式变化会怎样影响我们测到的任务能力?新增产物是一份能重放的原始回答账本。

选择 Instruct 版本意味着模型已经接受过官方指令训练。这里“微调前”指我们即将开展的任务微调之前,不能解释成从未做过监督微调。模型卡报告该系列使用公开及整理的数据进行指令训练,并指向 smol-smoltalk。[1] 这不等于本次重现了官方训练过程,也不构成数据没有污染的证明。

大纲中的 smol-smoltalk 适合后续研究数据混合,但开放式回答缺少本篇需要的简单、确定的正确性标签。因此本篇采用有来源标签的 SST-2 二分类影评,smol-smoltalk 暂未下载或训练。SST 论文研究情感组合性;我们仅使用其公开二分类导出,不复现原论文树模型。[2][3] 英语实验也不能外推为中文能力。

二、核心思想:把合规、答对和联合成功拆开

对第 i 条样本,令 F_i 表示回答是否满足格式,C_i 表示从回答抽出的唯一情感标签是否等于来源标签:

F = 1 N ∑ i F i , C = 1 N ∑ i C i , J = 1 N ∑ i F i C i . F=\frac{1}{N}\sum_i F_i,\qquad C=\frac{1}{N}\sum_i C_i,\qquad J=\frac{1}{N}\sum_i F_iC_i.F=N1​i∑​Fi​,C=N1​i∑​Ci​,J=N1​i∑​Fi​Ci​.

这里 N 是所有被评测样本数,本次每个条件都是 64;F、C、J 分别是格式合规率、标签正确率和联合成功率。失败回答不能从分母里消失。另报合规回答中的正确率,但合规数为零时应记“未定义”,不能把零除零写成零分。

纯标签要求去除两端空白后恰好是小写 positive 或 negative。JSON 要求完整解析成功、只含 sentiment 一个键、值为上述小写标签;重复键、额外字段、代码围栏都不合格。内容抽取则忽略大小写,查找完整单词;只有一种情感词时才给出预测,缺失或两种都出现均计错。

这个 C 是“显式标签正确”的自动代理指标,不是人工语义判断。例如带否定的解释可能误导抽取器。因此四种组合都值得保留:格式对但标签错、格式错但标签对、两者都对和两者都错。评价器本身也需要检查,不能自动升级为真值。

三、官方代码阅读路线:从角色边界追到下一个词

先读固定模型的 config 与 tokenizer_config,再读 Transformers 的三个入口,具体行号及许可证见源码地图。[1][4] 分词器把文本切成 token;聊天模板则把 system、user、assistant 等角色组织成模型熟悉的序列。本篇显式给出同一个 system 消息,并设置 add_generation_prompt,让输入结束在助手回答起点。模板默认补入的 system 文本因此不会被隐式采用。

随后追踪 LlamaForCausalLM:输入 token ID 经模型得到隐藏表示,再由语言模型输出头投影到词表。首例实际形状为 [1,72] → [1,72,576] → [1,72,49152],三个轴依次是批量、序列长度和隐藏维度或词表大小。形状来自真实前向记录,不是按模型名称推测。

最后读 generate 中的贪心分支:每一步选当前分数最大的 token,直到结束标记或生成上限。本次关闭采样、设一束搜索,首个生成 token 还与直接前向的 argmax 核对一致。官方源码中的函数名虽然叫_sample,关闭采样时走的仍是 argmax 分支,不能只凭函数名判断协议。[4]

本地程序直接调用官方实现;三份关键安装源码与固定提交逐字节一致。评分、划分与审计是独立教学实现,源码地图没有把这些自定义规则包装成官方评测器。

四、最小实验与评测协议:先冻结,再看回答

模型与 tokenizer 固定在同一 revision12fd25f77366fa6b3b4b768ec3050bf629380bac;SST-2 固定在8d51e7e4887a4caaa95b3fbebbf53c0490b58bbb。下载文件逐个记录 SHA-256。数据原有 validation 共 872 条,按种子 88 与原始 idx 组成字符串的哈希排序,前 64 条作开发,后 128 条保留确认,其余不使用。确认部分只登记 ID,没有运行模型或挑选案例;官方 test 未下载。

两条件保持样本、任务描述、标签顺序、权重和模板不变,只替换输出要求;没有示例。CPU、float32、四线程、批量一,最多新生成 32 token。输入不做截断,超过 512 token 就报错;本次全部未触发。模型有 134515008 个实际参数,权重文件约 269 MB。

首次命令误漏试跑开关,提前完成了开发集。我们保留这次记录,再做两条样本乘两条件的正确试跑:总计约 0.91 秒,峰值约 1.25 GB,按线性估算在预定 900 秒、4 GiB 内存预算内,随后正式复跑。原始与正式预测、评分一致,但它们不是两次独立抽样实验;全部结果均保持“开发探索”身份。

正式运行记录总计 13.05 秒,推理阶段约 12.69 秒,峰值常驻内存 1252720640 字节。计时从第三方库导入后开始,含缓存校验与模型加载,不含下载及进程启动;没有测 GPU 内存。环境、命令、退出码和分阶段状态均保存,不能用这个小实验的速度保证其他机器的耗时。

五、本次实际验证:格式零分不等于没有任务信号

指标,同一组 64 条样本纯标签JSON 要求
格式合规 F64/640/64
显式标签正确 C57/64(89.06%)50/64(78.13%)
联合成功 J57/640/64
无法抽出唯一标签01
达到生成长度上限01

恒定预测正类能得到 33/64。这不是强模型对照,但能防止把类别比例当成可用信号。纯标签明显高于这个样本内参照,说明存在值得继续测的行为;尚未计算置信区间,不据此宣布总体显著性。

逐例配对更有解释力:JSON 条件的标签正确性有 4 条改善、49 条不变、11 条变差。对负类答对数从 26/31 变为 29/31,对正类则从 31/33 变为 21/33。均值下降并不是所有样本一起下降,也不宜称为整齐的“能力退化”。这些分组来自保存记录,没有据此重新选择提示。

两组生成 token 总量分别为 128 和 422,均含结束标记;输入总量为 4546 和 5250。JSON 每条提示多 11 token,因此这次估计的是改变输出约定的整体效果,不是严格等 token 成本的比较,更没有隔离词序、长度和语法复杂度各自的因果贡献。

尤其要避免只保留能解析的回答再算正确率:那会悄悄换掉被测人群,也可能让更常拒绝作答的方法显得更强。本篇所有原始样本都进入分母,联合成功衡量整个回答是否可直接使用,标签正确则提供更宽松的诊断视角。两者回答的问题不同,应并列呈现。后续即使新增自动修复器,也要保存修复前的回答,并把修复成本与评价规则变化写清楚,否则无法辨认提升来自模型还是后处理。

六、失败排查:保留回答,再提出解释

案例按事先规则选择每个非空格子中 idx 最小的一例。idx 34 在 JSON 条件下回答了一个包含 negative 的英文解释句:标签与来源一致,但整个字符串不是要求的对象。idx 123 回答大写 Negative,既未遵守结构,标签也不符合该样本来源。纯标签 idx 322 则输出合法的 positive,却判错类别。三例对应不同失败,不能都归因于“模型太小”。

排查次序应先看输入角色边界、标签映射、只截取新生成部分、结束条件,再看任务错误。本次独立审计从原数据核对标签和样本 ID,从输出 token 重建回答,重算指标,并检查重复键、围栏、双标签等八个边界用例。没有人工新增标注,也没有把程序审计写成人工金标。

JSON 的 64 次失败中只有一次达到长度上限,因此“都是预算太短”无法解释全部现象;它仍可能解释个别失败。至于模型是否偏好直接回答、是否需要结构示例,目前只是作者推断。缺乏对照时,不能把一个看起来合理的故事当作机制结论。

七、从基线提出可检验的科研问题

下一篇先检查监督位置:训练损失究竟覆盖了提示、标签、结构符号还是结束标记?如果仅加强格式监督就提高 F,但 C 未改善,证据更支持输出约定适配;若在冻结格式后标签正确率也提高,才有理由继续研究任务学习。两种解释需要不同监督掩码的受控实验来区分,现在没有训练结果。

后续必须沿用这些开发 ID、模板和评价器,记录任何变更;训练样本量与有效监督 token 另行控制。若根据本篇错误调整提示,调整后的成绩属于开发选择,不能借保留确认集反复试验。最终方案冻结后才能使用那 128 条确认样本;公开数据可能进入过上游训练的限制仍然存在。

源码与复现入口

本篇已发布固定版本:完整源码目录、README 运行说明、SOURCE_MAP 官方源码地图。47 个文件已匿名拉取并与本地逐字节哈希核对,公开副本的审计和真实试跑通过;这些链接固定在同一提交,不随主分支更新。

安装 README 中的固定依赖并运行下载器后,最小命令为python run.py --cache ./cache --out smoke-new --smoke。它运行真实两条样本、两种回答约定,产生逐例回答、聚合、形状和资源记录;去掉试跑开关可重做全部 64 条开发实验。独立审计入口为audit.py。本次实际完成了资源获取、试跑、完整开发推理及原始输出重算,没有训练或保留集推理。

SST-2 数据卡将许可标为未知,源码包不重分发原始影评;下载路径、revision 与哈希均可查。缓存身份还包括模型、tokenizer、提示、解码及执行源码,换配置不能误用旧回答。

总结

一份有研究价值的微调基线,应当让之后的提升可以被拆解和质疑。本篇已经得到任务信号,也保留了结构化要求下的负结果。下一步不是立即寻找更漂亮的分数,而是把“学会格式”和“学会判断”转成能够分别检验的监督实验。

参考资料

检索与实际访问日期:2026-10-01。论文报告、上述实际运行与作者推断分开陈述;未运行的后续训练待人工核验。

  1. HuggingFaceTB:SmolLM2-135M-Instruct 固定模型卡;smol-smoltalk 官方数据卡。用于确认检查点及官方训练材料,本次未复现其训练。
  2. Richard Socher、Alex Perelygin、Jean Wu、Jason Chuang、Christopher D. Manning、Andrew Ng、Christopher Potts,2013:Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank,EMNLP。
  3. Stanford NLP:SST-2 固定数据卡原文。固定原文实际下载核验;网页渲染入口曾失败,不据此猜测许可。
  4. Hugging Face,Transformers 4.49.0:聊天模板源码、Llama 输出头、贪心生成分支。
返回列表