前几天把 gemma-trainer 塞进了 agent 的 skills 目录。bebechien 弄的那个,一套在本地硬件上微调 Gemma 的结构化流程。塞进去之后 agent 立刻就会带人走微调了——数据校验、LoRA 参数、跑训练、看结果,一路问下来。
我本来是抱着怀疑装上的。结果它干的第二件事让我改了看法。
我故意提了个错的要求:拿 Gemma 4 31B 去做音频微调。31B 是文本加视觉的模型,没有音频能力。按我以往的预期,agent 会照单全收,给我跑一个注定失败的训练,然后在某个深夜的 loss 曲线上莫名其妙地平掉。它没有。它把请求顶回来了,建议换有音频能力的 E2B 或者 12B。
这个顶回来的动作,比"能跑通训练"值钱得多。
为什么。因为 LLM 默认不拒绝。你给它一个错的前提,它倾向于在那个前提下把方案铺满——训练脚本、超参、评估指标,全都生成得像模像样,前提烂了它不管。我之前让模型写跳表的范围删除,它给我四十行带回调注册的代码,一个字没问"你真的需要回调吗"。同类毛病。训练这件事把这个毛病放大到最坏:一次跑错的微调,烧的是你几个小时的 GPU 时间,你得到的是一份看起来很完整的报告。
所以这个 skill 真正做的事,不是"教 agent 微调"。是把"什么模型能干什么事"这份判断,从模型的概率分布里拿出来,钉死成一份可核对的表。判断被外置了,agent 只负责执行。这就是 agent 该待的位置。
先把它的做法贴上。整个 skill 本质上是把微调拆成几段硬边界:
数据校验 → LoRA 参数设置 → 训练(优化过的默认值)→ 评估 → 迭代
每一步 agent 都有明确的手册可查。训练方法就三种:SFT 教新知识,DPO 对齐偏好,RM 给回答打分。没有第四种"综合智能体自适应训练管线"。单卡就上 Unsloth,省显存提速,不劝你先组个集群。
我喜欢这个克制。它和 Redis 的 SDS 是同一种哲学——len 加 alloc,两个 int,解决"标准字符串碰到 \0 就断"这一个问题,完事。gemma-trainer 也就是三个方法、一条流程、一套默认值。能砍掉的都砍了。
说句题外话。我手头那个玩具存储引擎,第一版也想做"通用",什么数据都能存。后来删到只剩存键取键两件事,反而最快。这个 skill 让我想起那次删减——它没试图覆盖"所有模型在所有硬件上的所有训练方式",它只回答"Gemma 在你手上这块卡上怎么训"。
拉回来。讲一个我认为被低估的细节:默认值。
这个 skill 里训完之后 agent 会给结果、列下一步、写评估脚本、出一份训练报告。听起来像功能清单。但关键是这些报告和脚本是在"优化过的默认值"上跑出来的。一个完全不懂 LoRA 的人,第一次微调就能拿到一组不是瞎选的超参。
这里我要跟自己一贯的立场对一下。我平时说:架构判断不能外包给模型,AI 给的方案默认偏复杂,工程师得往回砍。那写死的默认值算不算外包?不算。LoRA 的 rank、学习率、epoch 数,这些值对新手来说是纯粹的巫术,他们没有"往回砍"的参照系。一份写死的、被维护者持续更新的默认值,比新手自己在论坛里拼凑出来的参数好十倍。判断在写 skill 的人手里,而且写死在明处,你能 diff 它。
这和"读配置文件"与"读一万行框架源码"的区别是一回事。写死的默认值是可推理的复杂度。你不需要懂 Unsloth 的全部内部,你只需要知道默认值是谁定的、什么时候更新的。
还有一条我单独拎出来:它能把训好的模型转成 GGUF,用 LiteRT-LM 部署到手机或 IoT 上。
这一条表面上是格式转换,实际上是把整条路走通了——从"我本地一张卡"到"跑在我兜里的设备上",中间不需要过任何人的云。训一个古韩文文献的翻译专家模型,用 bebechien 那个 HongGildongJeon 数据集,E2B 规模,单卡几个钟头,转 GGUF,塞进手机。整个过程没有一行代码经过别人的服务器。
能自己 make 的东西天然可信。一整条从训练到部署都攥在自己手里的路,复杂度是可推理的——每一段出了问题你都能定位、都能改。这比"把模型 API 接进编排系统"那种方案,少付的抽象税不是一点。
不满意的地方也有。它还覆盖多模态训练,图像音频文本一起上。这部分我持保留意见——多模态微调的坑比文本深得多,数据配比一个不对,训出来的东西看起来对实际上废了。让 agent 带着默认值走多模态流程,新手很容易拿到一份"训练成功"的报告和一个不好用的模型。评估那一步得比文本场景狠得多才行。这段我没完全想明白,先记在这里。
但主线上我的判断是明确的:这类 skill 是 agent 该有的形态。不是让模型自由发挥"帮你设计训练方案"——那会得到一个保留所有可能性的管线,正好是最坏的那种。是把判断钉成手册,把执行交给模型,把默认值放在能 diff 的地方。
凡是想让 agent 做的事,先问一句:这件事里的判断,是谁的、写在哪、能不能改。答不上来的,别让它做。
