个人 AI 项目 · 小模型微调与落地
FeedLens 反馈透镜
把一句零散的中文用户反馈,整理成类别、情感、紧急度和一句话摘要。背后是一个在开源小模型 MiniMind 上微调得到的 64M 参数模型,可以在笔记本的 CPU 上运行。这个项目完整记录了它是怎么做出来的,以及它在哪些地方没有达到预期。
它解决什么问题
小团队的用户反馈散落各处、没有结构、轻重混杂。FeedLens 在人工阅读之前先做一遍预整理。
问题
每周几十到几百条评论和留言,靠人读会漏。一条“被重复扣费”夹在二十条“希望加深色模式”里,很容易被晚看到。
做法
定义一个边界清晰、可量化的任务:短反馈进,四个字段出。为它造数据、微调小模型,并和关键词规则放在同一份测试集上比较。
产出
一个有名称、版本和说明卡的模型;一套可复现的数据、训练、评测流程;一个能实际输入并得到结果的网页应用;以及一份不回避问题的评测报告。
模型实际输出
FeedLens-MiniMind v0.1.0 · 全参数微调 · 训练运行 ft-full-v1
更新完之后一点开就闪退,重装了两次都没用
启动时闪退
明明取消了自动续费,这个月又扣了我25块
取消自动续费
希望能加个深色模式,晚上用太亮了
希望增加深色模式
以上是构建本页时(2026-10-12 19:58)FeedLens-MiniMind v0.1.0 在 CPU 上的实际输出,未经挑选或修改。
效果如何
所有数字读取自仓库中的评测输出文件,页面生成时自动填入。
最重要的一条结果
在“类别、情感、紧急度三项全对”这个指标上,微调后的模型没有超过一份约 90 行的关键词规则:同分布测试集 66.8% 对 71.9%,手写的分布外测试集 58.1% 对 58.1%。按核心表达聚类计算的置信区间下,两者没有可分辨的差别。模型明确更好的是情感判断(91.1% 对 79.6%)和同分布数据上的摘要(ROUGE-L 62.2 对 29.3)。原因分析与下一步见 评测报告。
预先写下的验收标准
- 达成A1 同分布测试集格式合规率 ≥ 99% 100.0%
- 未达成A2 同分布测试集三标签全对率 ≥ 90% 66.8%
- 未达成A3 分布外测试集三标签全对率高于关键词规则 58.1% 对 58.1%
- 未达成A4 同分布测试集摘要 ROUGE-L ≥ 0.80 0.622
- 达成A5 CPU 单条请求 P95 延迟 < 500 ms 176 ms
这五条是在看到任何微调结果之前定下的。
同分布测试集 · 三标签全对率(977 条)
合成语法生成;测试集里的核心说法在训练集中没有出现过。
分布外测试集 · 三标签全对率(117 条)
逐条手写,不经过合成语法。样本少,置信区间宽,小差距不足以下结论。
一次迭代:照着失败案例改数据
第一轮训练后,我阅读了模型在分布外开发集上的全部失败案例,归纳出四类问题,据此扩充了合成语法(新增 44 个问题类型),用完全相同的训练设置重新训练。
| 数据 | 性质 | 第一轮 | 第二轮 | 变化 |
|---|---|---|---|---|
| 分布外开发集 | 第二轮就是照着它改的,不独立 | 54.0 | 90.5 | +36.5 |
| 新增问题类型的留出集 | 新增类型里训练未见的说法 | 58.3 | 89.0 | +30.7 |
| 同分布测试集 | 对两轮都独立 | 66.8 | 73.7 | +6.9 |
| 分布外测试集 | 手写,对两轮都独立 | 58.1 | 53.0 | -5.1 |
数值为三标签全对率(%)。补进去的内容确实学会了,但改进没有迁移到独立的手写测试集上。结论是:继续手工扩充语法是在打地鼠,下一步应当换一种造数据的方式并拿到真实数据。这一轮的模型没有发布。
怎么做出来的
五个环节,每一步都有对应的脚本和实际运行记录。
数据
训练 5146 条、验证 969 条、测试 977 条,外加 180 条手写分布外样本。按“核心表达”分组划分,并实测了训练集与测试集的相似度。
训练
在 Apple M5 上实际训练了四次:全参数微调、LoRA、随机初始化的对照组,以及第二轮换数据的全参数微调。对照组用来回答“预训练权重贡献了多少”。
评测
预先写下验收标准。规则基线、训练前的模型、各种训练方式,使用同一批样本、同一个解析器、同一套指标。
开源基础与我的工作
来自开源项目 MiniMind
- 模型结构、分词器与对话模板
- LoRA 的实现
- 作为微调起点的官方权重
- 以只读方式引用,未修改,固定在提交
f659b55
本项目新增
- 任务定义、标注规范、合成数据语法与手写测试集
- 数据清洗、去重、分组划分与泄漏检查流水线
- 支持验证集选模和精确续训的训练脚本
- 评测脚本、指标实现与规则基线
- 网页应用、模型说明卡与全部文档
当前完成情况
已完成并实际运行
- 已完成固定并记录上游 MiniMind 提交,下载官方权重并核对 SHA256
- 已完成数据流水线:合成语法生成、清洗、去重、按核心表达分组划分、泄漏检查
- 已完成本机实际训练四次:全参数微调、LoRA、随机初始化对照、第二轮换数据的全参数微调
- 已完成训练可续训,并用测试验证“中断后续训”与“一次跑完”权重逐位相同
- 已完成九个系统的评测,逐条预测、指标、失败案例全部保存;系统间差距做了聚类自助法检验
- 已完成一轮完整的迭代:读失败案例 → 提出假设 → 改数据 → 重新训练 → 在独立测试集上检验
- 已完成网页应用:真实模型推理、批量分诊、演示模式、移动端适配
- 已完成模型说明卡、PRD、架构、数据、训练、评测、复盘等文档
尚未完成
- 未完成让模型在标签准确率上超过关键词规则基线:目前没有做到
- 未完成真实用户反馈数据:目前训练集和测试集全部是合成数据
- 未完成合成数据的人工抽样复核:待填写的表格已生成,尚无人填写
- 未完成用户访谈与可用性测试:提纲和记录模板已备好,尚未执行
- 未完成NVIDIA GPU 上的训练、从零预训练、“从仅预训练权重微调”的对照:只有配置、命令与估算
- 未完成按生成准确率选检查点、多随机种子:发现了问题,还没有改
- 未完成线上部署与真实使用数据