调参这件事,很多工程师都干过:改学习率、启动一次训练、盯着损失曲线、再改 LoRA 秩,循环往复,直到模型变好或者人先睡着。有人干脆把这个循环交给机器,自己去睡觉。
![]()
他做的工具叫 LazyDecider,定位是一个“过夜实验室”:在笔记本上跑一整晚,自动微调一个决策模型。第二天早上打开 REPORT.md,就能读到这一夜试了什么、为什么试、哪个配置赢了。成本约 0 美元,没有云端计费表在夜里转。
整条链路由几个角色分工完成。本地运行的开源权重智能体 Gemma 4 E4B 充当研究员,读取实验日志,提出一个训练配置,并附上一行理由;ASHA 剪枝器负责训练,一旦发现这次跑输了就提前终止;只有跑赢当前最佳、且在冻结划分上验证通过的配置才会被保留,否则回滚。早上胜出的配置再训练一次,在密封测试集上打分,最后用 Tinker 跑一遍,确认这套配方能迁移到更大的模型。
Gemma 的提议在日志里留下了原文。第一次运行被保留,理由是“建立一个标准快速的头层基线,使用余弦调度、对软目标不做标签平滑”。第二次也被保留,理由是“在骨干上启用 LoRA 微调,看看适配后的编码器表示能否超越仅头层基线”。第三次被回滚,理由是“在解冻的骨干上引入标签平滑和更高的权重衰减,以在保持高准确率的同时改善校准”。
第二次运行是当晚最大的一次跃升:Gemma 决定用 LoRA 解冻骨干,验证损失从 1.04 降到 0.84。第三到第五次运行都在追校准,结果接近,全部被回滚。保留还是回滚的纪律,决定了这是一次搜索还是一次随机漫步。
Tinker(Thinking Machines)扮演独立裁判。它在云端用 LoRA 微调更大的 Qwen3.5-4B,设有硬性美元上限,并在同一个密封测试集上重新打分,结果明显高于零样本基线:0.601 对 0.483。不同的模型、不同的硬件、同一把尺子,用来证明这条流水线没有自欺欺人。
最终结果是一个 0.8B 的决策模型,在密封测试集上自主达到 0.770 准确率,与金标准的 KL 距离低至 0.094——在这个基准上,后者才是真正重要的指标。它训练得最强的领域是发票处理,得分 0.840。基础模型是 unsloth/Qwen3.5-0.8B 加一个 Clef 联合决策头,用 Unsloth 做 LoRA 微调。
“不能作弊”这部分值得单独说。早期还没有护栏时,循环异常快地找到了一个“很棒”的配置——验证子样本太小,让一次运气好的运行看起来像赢家。智能体并没有作弊,它只是在优化被交给它的那个数字。自主调参的教训是:你的智能体会优化你的指标,而不是你的意图。
于是他把口子全部锁死:
- 测试集密封,只提交它的 SHA-256,工作进程从字面上读不到用例;
- 打分器逐字复制数据集自带的评分算术;
- 工作进程从环境中剥离 TINKER_* 变量,让免费的本地循环一分钱也花不出去;
- 每个入围者的配置在它那一次性的密封读取之前,先提交进 git。
这套东西能成立,前提是组件开放。智能体和模型都是开放权重,整个实验室跑在笔记本上,每一次提议——包括模型把 JSON 搞砸后的重试——都是免费的本地推理调用,夜复一夜地跑搜索成本恰好为零;换成云端 API,这会变成一张月度账单。
产出的模型也归自己所有。它被推到了 Hugging Face(rahulkumar0612/lazydecider-0.8b),可以离线运行、检查,或者 fork 这套配方,没有东西被锁在别人的接口后面。开放权重还让护栏变得可审计:“不能作弊”只有在任何人都能读到密封逻辑和打分器、并自行核对时才可信。
一个闭源 API 给不了这三样东西:免费无限的过夜推理、一个完全拥有且能离线运行的模型、一条任何人都能验证其完整性的流水线。
复现整条流水线只需要几条命令:建虚拟环境、装 datasets、unsloth、tinker,跑数据准备脚本完成下载、密封与划分,再用一个脚本让 Gemma 整夜搜索。演示页面托管在 Render 上,回放的是提交日志里那次真实的过夜运行,读的就是实际的实验日志。
那个被自动化的十分钟工作——守着超参数扫描——从此不再发生。它在人睡觉的时候完成,免费,在自己的笔记本上。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.