Wink Pings

0.8B 模型写 bash 命令,卡了四天的地方在训练数据的写法

一位开发者把 Qwen3.5-0.8B 微调成离线 bash 助手,DPO、蒸馏、调参轮番上阵都停在 74%,最后发现问题出在训练请求和测试请求的写法不一样。补了约 9k 条同分布数据,准确率从 348 涨到 375。

终端里想要一个完全离线的助手:输入 dale "show the 5 largest files in this folder",一个小模型把英文写成命令,再由一个确定性的风险检查器标成 safe、caution、danger,确认之后才执行。这是开发者 Manuel 的项目 dale,代码 MIT,模型是 Apache-2.0 的 GGUF,能直接在 llama.cpp 上跑。整个东西是一个 51MB 的二进制,里面塞了 llama.cpp,没有 Python,没有服务端。

在 471 条留出的英文和西班牙语请求上测了一轮,所有模型都跑同一个 llama.cpp,统一 Q4_K_M:

模型GGUF正确数准确率95% CI
dale-9b(GPU)5.6 GB42089.2%86.0–91.7
dale-4b(GPU)2.7 GB41087.0%83.7–89.8
dale-2b1.3 GB38581.7%78.0–85.0
dale-0.8b(CPU)529 MB37479.4%75.5–82.8
Qwen3.5-9B,原版5.7 GB29662.8%58.4–67.1
Gemma 4 E4B-it,原版5.0 GB29662.8%58.4–67.1
Qwen3.5-4B,原版2.7 GB25754.6%50.0–59.0
Gemma 4 E2B-it,原版3.1 GB25453.9%49.4–58.4
Qwen3.5-2B,原版1.3 GB15232.3%28.2–36.6
Qwen3.5-0.8B,原版533 MB7014.9%11.9–18.4

速度方面,2020 年的无 GPU 笔记本上,0.8B 的中位响应是 1.7 秒。4B 在 16GB GPU 上走 Vulkan 是 1.2 秒。

微调模型与原版模型的对比

具体差在哪,看几组测试里的真实回答,左边是 dale-0.8b,右边是原版 Qwen3.5-9B:

请求dale-0.8b原版 Qwen3.5-9B
临时冻结 PID 22601,别结束它kill -STOP 22601往 /proc/22601/oom_score_adj 写值,什么也没冻住
把 offer.pdf 复制到 /mnt/usb/,已有的 offer.pdf 保持不动cp -n …/offer.pdf /mnt/usb/sudo cp …/offer.pdf /mnt/usb/,直接覆盖
在终端里给出 1234567890 的质因数分解factor 1234567890一条 180 字符的 python3 -c 单行命令,还是语法错误
只想要 /opt/model-cache 的总磁盘占用,人类可读du -sh /opt/model-cache对目录调 os.path.getsize(),拿到的是目录项大小,不是内容大小
锁定本地账户 archivebot 的密码sudo passwd -l archivebotsudo passwd archivebot,反而设了个新密码
当前 Bash 会话里,把 ll 设成 ls -alF 的别名alias ll='ls -alF'拒绝,说单条 shell 命令做不到

这些是挑出来的例子,作者自己说得很清楚。全量里还有 120 条只有 dale 做对、42 条只有 9B 做对的用例。原版 9B 还有个习惯,爱加 sudo,35 条命令根本不需要,dale 只有 5 条。

失败案例对比

真正让作者难受的一段在后面。四轮数据之后,0.8B 卡在 74%。他试过对模型自己的失败样本做 DPO,试过用微调过的 27B 当 teacher 做五种不同的蒸馏,试过第三轮 epoch,试过 lr sweep。测试分数一动不动。他自己的原话是,几天就这么没了。

然后他回头去看请求本身是怎么写的。训练请求短、干净;测试请求更长,约束是叠着来的,比如“只要名字,按日期排序,不要子目录”。

训练请求与测试请求的统计差异

他照着这个统计分布重新生成请求,往数据集里加了约 9k 条,重新训练。正确数从 348 变成 375,p = 0.001。

补数据后的准确率变化

所以窄任务上小模型一旦平台期,先去看看数据是怎么写的,再去碰更花的方法。这是作者花了几天换来的经验。

需要说清楚的边界:基线模型没做微调,但给了 8-shot prompt,所以这组数字比较的是“微调过的小模型”和“带提示的大模型”,不能当模型排名看。测试集是合成的,判分由两家不同供应商的 LLM 完成。训练用的是租来的 RTX 5090 和 RTX Pro 6000。

作者在帖子最后留了个问题:有没有人真的在 1B 以下把大 teacher 的蒸馏做成了?他自己没做成,欢迎建议。

发布时间: 2026-11-08 23:26