跳到主要内容
EvilOm
作品工具游戏笔记故事关于

EvilOm

作品、工具、游戏、知识笔记与故事创作。

作品工具游戏笔记故事关于
GitHub Email
© 2026 EvilOmevilom.vip
全部笔记

知识笔记

MiniMind 进阶:别急着把所有方法都跑一遍

LoRA、DPO、RAG 和量化各自处理不同的缺口。训练以前,要分清模型缺知识、缺格式、缺偏好,还是卡在部署成本。

2025-12-108 min笔记LLMAI
MiniMind 进阶:别急着把所有方法都跑一遍

基础 SFT 跑通以后,实验清单很容易突然变长:LoRA、DPO、RAG、量化,全都像是“下一步”。

整理实验时才看清,这些方法各自处理不同的麻烦。模型可能缺知识、不会按格式回答、不合口味,也可能只是装不进目标设备。没把缺口说清楚以前,方法越多,实验越乱。

先说清楚哪里不够

缺某类文本分布,可以考虑继续预训练;不会按指令或固定格式回答,先回到 SFT;基础能力已经够用,只想低成本适配窄任务,再看 LoRA。知识经常变化并且需要出处,放进检索系统更合适。模型已经能用,只是显存、内存或速度过不了线,才进入量化和部署优化。

偏好训练处理的是另一件事:两个回答都能用,但语气、边界或取舍不合适。

无论走哪条路,都先留下未训练基线。没有基线,后面的“变好了”很容易只是印象。

LoRA 省下的是训练成本

全参数微调直接修改原权重 W。LoRA 冻结 W,只学习低秩增量:

W' = W + ΔW,ΔW = B × A × 缩放系数

若原矩阵为 d_out × d_in,rank 为 r,可训练参数大约是:

r × (d_in + d_out)

参数和优化器状态会轻很多,但日志不能只写 rank。适配器挂在哪些模块、缩放系数、dropout、学习率、数据版本、基础模型版本、适配器名称,以及推理时实际加载了哪份权重,都得放在一起。

比较时固定基础模型和测试题,从零训练基线开始,先跑小 rank;之后每轮只动模块、学习率或数据子集中的一项。效果差时先回查数据和模板,习惯性把 rank 往上堆,通常只会让原因更难找。

个人材料别整包倒进去

语气、判断习惯、个人事实和长期记忆混在聊天记录里,看起来都像“关于自己”,实际不适合用同一种方式处理。

相对稳定的表达习惯和判断方式,在边界清楚时可以整理成训练样本;会变化的事实、需要撤回的内容和长期记忆,更适合放在外部存储里,保留时间与来源。写进权重以后很难精确修改,也无法轻易证明已经删除。

聊天记录不能整包倒进去。凭证、地址、账号信息和密钥要先清掉,没有授权使用的他人内容也不能留下;临时情绪和已经变化的旧观点,要和真正稳定的材料分开。随后按文档和会话去重,清理乱码、模板残片与断掉的上下文,再区分事实、意见和随口一说。统一格式与数据增强放到最后。少量认真挑过的样本,通常比大量来路混乱的聊天更容易解释。

测试集不能按行随手切

同一份文档的不同切片、同一场对话的上下句,或者一句话的轻微改写,如果分别落进训练集和测试集,最后会得到一个很好看的假分数。

更稳的办法,是先按来源、文档、会话或时间分组,再以整组为单位切分,最后检查精确重复和近重复。测试集也不能天天盯着调数据;看得太多,它实际上已经变成验证集,还得另留一份从没碰过的终测集。

评估要能看见退步

平均分只说明整体有变化,看不见哪类错误刚刚出现。测试时应把基线输出与新输出放在一起,保留人工判断和失败类型,尤其留意原本会做的通用任务有没有退步。

除了目标任务,还要看基础语言有没有复读、断句和跑题,指令与长度边界是否遵守,换一种问法后能不能成立,不知道时是否硬编,私密片段会不会被续写。数字、代码和严格格式这些容易被平均分遮住的地方,也要单独留题。

评分规则要在看答案以前写好。先知道哪个是新模型,再替它解释优点,很容易把愿望当成结果。

DPO 放到能力够用以后

SFT 教模型什么回答可以接受;DPO 一类训练处理可接受答案之间的偏好。

chosen 和 rejected 最好只在目标偏好上有差别,例如表达是否直接、格式是否遵守、拒答边界是否合适。如果一个答案很长、另一个很短,或者一个正确、一个明显胡说,模型会把别的差异一起学进去。

模型连任务都不会时,先回 SFT。偏好训练绕不过能力缺口,也不会替脏数据收尾。

量化以后再答一次

量化文件能够加载,只代表程序能跑。部署前后的文件大小、峰值内存或显存、首 Token 延迟和稳定生成速度,要用同一套环境记录;长输入下的变化、固定测试集输出、数字、代码与严格格式任务,也要重新跑一遍。

平均质量只掉一点,也可能刚好打坏最重要的任务,所以严重失败的数量也要单独记。压缩率和速度只是结果的一部分,是否接受量化还得看目标任务能不能承受这些变化。

实验日志里只认对照

那段 MiniMind 实验没有把所有方法都跑一遍。日志里保留下来的顺序是:先保存基线,指出具体缺口,选择成本最低的办法,再用同一套测试检查新增失败。训练数据和测试集要隔开,量化后的版本要重新评估,配置、权重和结果都要能退回上一版。

内容停在 2025 年 12 月。当时能确认的写到当时,后续仓库和方法变化没有倒回来补写。

继续浏览
全部笔记
较早笔记MiniMind 基础:把训练链路摊开检查