三值模型微调代理编程的实验
professormunchies · reddit · 2026-07-19
作者尝试把 **PrismML Bonsai 8B** 这类真·三值/二值低比特模型做后训练微调,目标是让它更像一个代理式编程模型,并在 **SWE-rebench-v1** 的 10 个 Python issue 上测试。 ### 关键背景 - Bonsai 不是从头按 BitNet 那种路线预训练,而是把已有的 **Qwen3** 模型转成三值/二值权重。 - 三值模型大约是 **1.7 bits/weight**,8B 版本大约只占 **2GB**。 - 这种模型不是普通 GGUF 量化,校准量化误差的 imatrix/AWQ/GPTQ 基本不起作用,因为 checkpoint 本身就是 `scale × {-1,0,+1}`。 ### 微调方法 - 继续训练采用的是标准 **QAT**:前向时把权重三值化,反向用 straight-through estimator。 - 训练在 Metal 上完成,不依赖 CUDA。 - 训练后再重新三值化、打包回 2-bit GGUF,保持原始体积。 ### 结果 | 运行 | patch rate | pass rate | 训练损失 | 备注 | |---|---:|---:|---:|---| | base 8B(未微调) | 50% | 0% | - | - | | QAT,只训最后 18 层 | 40% | 0% | ~1.0 | 会陷入重复循环 | | QAT,按“梯度影响层”训练 | 40% | 0% | ~1.0 | 循环问题修复,运行更稳定 | | QAT,训练全部 36 层 | 30% | 0% | 0.91 | 表现最稳,但 patch rate 最差 | ### 结论倾向 - 训练损失下降并不等于模型真的学会了代码能力。 - 作者强调要区分“权重代码真的翻转了”还是“只是 scale 变了”,否则看起来像学到了,实际上没改逻辑。