Google 发布 gemma-trainer 技能:在自己电脑上,让 AI 帮你微调一个专属的 Gemma
- Google 在开源的 gemma-skills 仓库里新加了一个叫 gemma-trainer 的技能,专门教 AI 助手怎么在你自己的电脑上微调 Gemma 模型。
- 它的本体是一份写给 AI Agent 读的说明书(
SKILL.md),外加 5 个现成的 Python 脚本。你说人话,助手照着选参数、跑训练。 - 覆盖三条训练路线:SFT 教新知识、DPO 调风格偏好、RM 训一个打分器,每条路的数据格式和关键参数都写死了。
- 优先用 Unsloth,官方称省最多 70% 显存、快 2 倍,单张消费级显卡就能微调 12B 甚至更大的模型,还能训图像和音频。
- 训完能转成 GGUF 这类轻量格式,用 LiteRT-LM 塞进手机和 IoT 设备里跑。
在自己电脑上,调一个只懂你那行的 Gemma
你想要一个专属模型:会翻你那个冷门领域的行话、按你的口味回话、只做你这一摊事。开源的 Gemma 本来就为这种可定制而生,可真要动手微调,一直得先趟一遍复杂的环境配置和一堆看不懂的指南。
Google 的 Gemma 团队最近把这一步铺平了:在开源的 gemma-skills 仓库里,新加了一个叫 gemma-trainer 的技能。
github.com/google-gemma/gemma-skills
它的本体是一份写给 AI 的说明书
gemma-trainer 的本体是一个 SKILL.md 文件,加上 5 个现成的 Python 脚本模板。它不带界面、也不是要你直接上手调用的训练库。
SKILL.md 是一份专门写给 AI Agent 读的蓝图。里面把「本地微调该怎么做」的最佳实践、每个参数该取什么值、有哪些坑要避开,全部写死。你的助手读了它,就从「大概知道怎么训练」变成「知道这台机器上该调哪个脚本、每个旋钮拧到几」。仓库里的 5 个脚本各管一摊:一个跑监督微调,一个跑偏好对齐,一个训打分器,一个专门验证数据格式,还有一个用来做数据蒸馏。
gemma-trainer
定好参数
迭代
这套技能不挑门派,和具体的 AI 工具无关,从 Gemini 到 Claude 都能用,配 Google 自己的 Antigravity 命令行工具(agy)也行。用法简单到一句话:把 gemma-trainer 文件夹拷进你 AI 助手的技能目录,助手立刻就知道怎么带你走。
更有意思的是,助手不只是照单执行,它会按技能里写的能力约束帮你拦错。有一个真实例子:一次训练请求手误写成了用 Gemma 4 31B 做音频任务,助手当场提醒,31B 是个只管文字和图像的模型,根本没有音频能力,建议改用 E2B 或者 12B。
教知识、调偏好、学打分,三条路怎么选
技能里把微调分成三种方法,对应三种不同的目标。想清楚你要模型学会什么,就知道该走哪条路。
DPO 有个硬规矩:一定要先在你的领域上做完 SFT,再来做 DPO。直接拿一个没见过你数据的基础模型跑 DPO,通常会失败,或者把输出格式搞坏。
三种方法的学习率,差了好几个量级
一个容易被忽略、却很能说明问题的细节:三条路建议的学习率(每一步把参数往前挪多大)差得非常远,而且不是「教得越多步子越大」这么简单。DPO 只在模型已经会的基础上轻轻校正风格,步子稍微一大就会毁掉之前学好的格式,所以要小到 SFT 的两百分之一。RM 训练的是一个新加上去、从零学起的打分头,反而是三者里步子最大的。
条形只示意量级高低,不是线性比例。真实数值:RM 用 1e-3、SFT 用 2e-4、DPO 用 1e-6,DPO 比 SFT 还小两百倍。
这两种数据长什么样,技能里给了标准范例,你可以照着准备自己的数据集。
{
"messages": [
{"role": "user", "content": "Tell me a joke."},
{"role": "model", "content": "Why did the computer go to the doctor? It had a virus!"}
]
}
{
"prompt": "Write a python function to compute factorial.",
"chosen": "def factorial(n):\n return 1 if n <= 1 else n * factorial(n - 1)",
"rejected": "factorial is computed using recursion or loops. Just import math."
}
训练时它只学「该怎么回」,不背你的提问
还有一个藏在脚本里的讲究。喂进去的是一整段「用户提问加模型回复」,但训练时并不会两半都学。脚本会先找到模型回复的起点,只对回复那半计算损失损失(loss)就是模型答得对不对的扣分。只对回复部分扣分,模型就只学「该怎么回」,不会去背用户的提问,用户提问那半直接跳过。这样模型学到的是「遇到这类问题该怎么回答」,而不是把你的问题也一并背下来。
数据格式没弄对,是训练效果差的第一大原因。所以技能配了一个专门的验证脚本 dataset_prep.py,动手训练前先帮你把数据过一遍:SFT 数据会检查最后一句必须是模型的回复;DPO 数据会检查「更好」和「更差」两个回答不能一模一样,否则模型学不到任何偏好;它还会把提问单独分词,核对这段前缀在「好回答」和「坏回答」里出现的字词完全一致,专门堵住那种一分词就对不齐、训练悄悄跑偏的坑。
没有现成数据?让大模型帮你造
微调最缺的往往是数据。技能里还带了一个数据蒸馏(distillation)脚本 distill_dataset.py,思路是让一个大块头的「老师」模型(比如 Gemma 4 31B)生成高质量的训练数据,再拿这些数据去训一个小巧的「学生」模型(比如 E2B)。它给了两种造数据的方式:
老师模型可以挂在本地的 Ollama 上跑,从造数据到训练全程不出你这台电脑。
怎么把一个大模型塞进你的显卡
在自己电脑上微调,最怕的就是显存不够、训练直接崩掉(爆显存,英文叫 OOM)。gemma-trainer 靠三样东西把大模型塞进消费级显卡:LoRA、QLoRA,和一个叫 Unsloth 的引擎。
微调一个大模型,不是把整本书重写一遍。LoRA 的做法是原书原封不动,只在旁边挂一小叠可训练的便签,改动都写在便签上。QLoRA 更省:先把原书用更省纸的方式(4-bit 压缩)重印一份缩小体积,再往上挂便签训练。这样原模型冻着不动,你训练的只是那一小叠便签,显存自然省下来。
具体分工是这样:单张显卡优先用 Unsloth,它原生支持 Gemma 4,官方称比标准的 Hugging Face 训练省最多 70% 显存、快 2 倍;只有到了多张显卡的环境,或者装不了 Unsloth,才回退到 Hugging Face 的 TRL 加 PEFT。不管哪条路,都建议开 QLoRA(4-bit 量化)把模型参数从常见的 16 位精度压到 4 位存储,体积和显存占用直接降到约四分之一,代价是极小的精度损失,这是把 12B、31B 这种大号 Gemma 塞进消费级显存的关键。
还有一个坑要注意:Gemma 4 本身支持到 256K 的超长上下文,但本地训练别贪这个,技能建议压到 2048 到 8192,否则很容易爆显存。
到底要什么样的电脑
开了 QLoRA 加 Unsloth 之后,门槛比很多人想的低。按 Unsloth 官方给的数字,微调不同大小的 Gemma 4,一张消费级显卡就能起步,小模型甚至能在免费的 Google Colab 上跑:
| 模型 | 微调显存(QLoRA) | 什么显卡够用 |
|---|---|---|
| Gemma 4 E2B | 约 8 GB | 入门消费级,如 RTX 3060 12G,或免费 Colab 的 T4 |
| Gemma 4 E4B | 10–17 GB | 中端消费级显卡 |
| Gemma 4 31B | 约 22 GB | 高端消费级,如 RTX 4090 / 3090(24G) |
| Gemma 4 26B-A4B | 40 GB 以上 | 要上 A100 这类专业卡 |
显存数字来自 Unsloth 官方 Gemma 4 训练文档,为 QLoRA / LoRA 微调的参考值;全量微调(不压缩)要几倍于此,通常得多卡。
可以直接抄的 LoRA 参数配方
技能把常用的 LoRA 参数默认值都写好了,你准备训练时可以照着填:
| 参数 | 建议值 | 它管什么 |
|---|---|---|
rank(r) | 16 或 32 | 便签的「厚度」。越高能学越复杂的行为,也越吃显存 |
lora_alpha | 32 或 64 | 缩放系数,经验法则是设成 rank 的两倍 |
lora_dropout | 0.05 | 逼模型学更稳健的特征,别只依赖固定套路 |
| 学习率 | SFT 2e-4 DPO 1e-6 RM 1e-3 | 每一步挪多大。三种方法量级差很远,别用错 |
| 上下文长度 | 2048–8192 | 本地训练防爆显存,别开满 256K |
参数定好,跑起来就是一条命令。想自己动手、不经过 AI 助手也行,直接调脚本,比如用默认设置对 E2B 做一次监督微调:
python sft_train.py \ --model google/gemma-4-E2B \ --dataset your_data.json \ --lora-r 16 --lora-alpha 32 \ --epochs 3 --lr 2e-4
DPO 和奖励建模各有对应的 dpo_train.py、reward_train.py,参数风格一样。装不了 Unsloth 时加 --force-hf 会自动回退到 Hugging Face 那套。
再深一点:DPO 怎么省下一整份模型的显存
DPO 训练理论上要同时装两份模型:一份在训练的,一份当「参照物」(reference,判断新模型有没有跑偏)。这会吃双份显存。gemma-trainer 里的做法是把参照模型直接设成空,需要参照输出时,临时把正在训练的那叠 LoRA 便签关掉、让模型退回原始状态现算一遍,用完再打开。一份模型当两份用,省下的显存相当可观。用 Unsloth 时还会额外打一个补丁给 DPO 训练器提速。
还能教它看图、听声,再装进手机
Gemma 4 天生就是多模态的,能处理图像和音频。想训它看图或听声,改动比想象中小:把数据格式里 content 块的类型从 text 换成 image 或者 audio 就行。
{
"messages": [
{"role": "user", "content": [
{"type": "text", "text": "Describe this audio."},
{"type": "audio", "url": "path/to/audio.wav"}
]},
{"role": "assistant", "content": [
{"type": "text", "text": "This is an audio file of a bird chirping."}
]}
]
}
音频有些讲究:要用 16kHz 单声道的采样,脚本里还专门打了个补丁,修一个音频数据类型对不上导致训练报错的老毛病,省得你自己去踩。图像和音频微调支持的型号也标清楚了,音频只有 E2B、E4B、12B 这几个能做,31B 就不行,也正是前面助手拦你的那个原因。
训完之后,模型能一路走到你的口袋里。用 Unsloth 原生导出、或者用 llama.cpp,把模型转成 GGUF 这类轻量格式,再交给 LiteRT-LM,就能塞进手机、网页和 IoT 设备里跑,还能吃上 CPU、GPU、NPU 的硬件加速。「本地微调,本地部署」在一条链子上就走通了。
实战:把 Gemma 调成古朝鲜文学翻译家
一个跑通的真实例子:把 Gemma 4 E2B 微调成《洪吉童传》(一部古朝鲜文学)的翻译专家。整个过程,你要做的就是对助手说一句话。
Fine-tune Gemma 4 E2B on the dataset bebechien/HongGildongJeon.
接下来助手会陪你走完四步:先用验证脚本核对你的数据合不合格式,再挑一组既能教会模型语言细微差别、又不会撑爆显存的 LoRA 参数,然后用省资源的默认配置开训,最后评估结果、根据表现调参再来一轮。你还可以让它现写一个自定义的评估脚本,比如一个专门查转写相似度的脚本。训练跑完,助手会给你一份完整报告,把这轮的表现和下一轮能往哪改说清楚。
怎么开始?把 gemma-trainer 文件夹拷进你 AI 助手的技能目录,助手立刻就懂怎么带你走。整个 gemma-skills 仓库在 GitHub 上开源:github.com/google-gemma/gemma-skills。
本地微调 Gemma:从「先啃环境配置和天书指南」→「对 AI 说一句话就跑」
Google 开源了一份写给 AI 读的训练说明书 gemma-trainer,把选方法、配参数、防爆显存全写死,一张消费级显卡就能起步,一页带图讲完。
↓ 一页读完 · 有一张会动的图
Gemma 是 Google 免费开源的 AI 模型,本意就是让你改造成只懂你那一行的专属版本。可真要自己动手改,一直卡在门口。
✘ 但你自己动手微调,先被复杂的环境配置和一堆看不懂的技术指南挡在门外
微调 = 拿你自己的数据把模型再训练一下,让它学会你要的知识或说话方式。难的从来不是想法,是这一整套技术门槛。
Google 在开源仓库里加了 gemma-trainer。它不是又一个训练软件,而是一份写给 AI 助手读的说明书(把最佳做法和参数全写死)加 5 个现成脚本。你说人话,助手照着选脚本、定参数、跑训练。
自己拼训练脚本 · 猜 LoRA 参数
还得手动防着爆显存
Fine-tune Gemma 4 E2B on the
dataset bebechien/HongGildongJeon
但这句话背后,助手到底替你做了哪几件技术活?下面一张图看懂。
小互 只说一句「用《洪吉童传》数据集微调 Gemma 4 E2B」,助手读完说明书就替他挑路(这次要教新知识、走 SFT),再定好参数、开训、评估,你出一句话,选脚本、拧参数、防出错这些技术活它包了。三条路:教新知识走 SFT、调说话风格走 DPO、训一个打分员走 RM。
怎么让一张几千块的家用显卡也训得动这么大的模型?靠 LoRA,不重训整个模型,只在旁边挂一小叠可训练的「便签」,原模型冻着不动;再把它压成 4 位精度(QLoRA)、交给专为单显卡优化的 Unsloth 引擎跑。省下的显存(显卡上的内存,训练全靠它,不够就崩)是这样:
标准训练
Unsloth+QLoRA
训完还能转成轻量格式塞进手机、IoT 设备里跑;想让它看图、听声,也只是把数据里一个字段从「文字」换成「图像」或「声音」,本地训练、本地部署,一条链子上走通。
就撞上一堵墙。
- × 复杂的环境配置
- × 一堆看不懂的指南
- × 还得手动防爆显存
要放弃时,
微调 Gemma 4 E2B。
我显卡塞得下?!
QLoRA:再压成 4 位存
显存
从「文字」换成
「图像」或「声音」。
