Google 发布 gemma-trainer 技能:在自己电脑上,让 AI 帮你微调一个专属的 Gemma

开源的训练说明书,把监督微调、偏好对齐、奖励打分三条路和 LoRA 参数全写死,配 Unsloth,一张 8GB 显存的消费级显卡就能起步。
作者:DEV · Google AI07-18 · 8 分钟⚑ 方法教程
🎧 听播客版0:00 / --:--
0:00 / --:--
工具教程 · 小互解读
一分钟速览
  • Google 在开源的 gemma-skills 仓库里新加了一个叫 gemma-trainer 的技能,专门教 AI 助手怎么在你自己的电脑上微调 Gemma 模型。
  • 它的本体是一份写给 AI Agent 读的说明书(SKILL.md),外加 5 个现成的 Python 脚本。你说人话,助手照着选参数、跑训练。
  • 覆盖三条训练路线:SFT 教新知识、DPO 调风格偏好、RM 训一个打分器,每条路的数据格式和关键参数都写死了。
  • 优先用 Unsloth,官方称省最多 70% 显存、快 2 倍,单张消费级显卡就能微调 12B 甚至更大的模型,还能训图像和音频。
  • 训完能转成 GGUF 这类轻量格式,用 LiteRT-LM 塞进手机和 IoT 设备里跑。
⚑这是 Google 官方在 DEV 社区发布的自家工具介绍,性能数字(省 70% 显存、快 2 倍)为 Unsloth 官方宣称。下文机制细节来自其开源仓库 google-gemma/gemma-skills 的代码。
你能做什么

在自己电脑上,调一个只懂你那行的 Gemma

你想要一个专属模型:会翻你那个冷门领域的行话、按你的口味回话、只做你这一摊事。开源的 Gemma 本来就为这种可定制而生,可真要动手微调,一直得先趟一遍复杂的环境配置和一堆看不懂的指南。

Google 的 Gemma 团队最近把这一步铺平了:在开源的 gemma-skills 仓库里,新加了一个叫 gemma-trainer 的技能。

有了它,你对 AI 助手说一句「用某个数据集微调 Gemma 4 E2B」,它就知道该先验证你的数据、选合适的 LoRA 参数、用省资源的默认配置开训、再评估结果。整套本地微调流程,变成了助手能直接读懂并执行的说明书。
💡为什么值得看:它把本地微调 Gemma 的整套决策(选哪种训练方法、配什么 LoRA 参数、怎么防爆显存、训完怎么转端侧格式)固化成一份技能文件,配 Unsloth,一张 8GB 显存的消费级显卡就能起步,还一并覆盖了文本、图像和音频三种训练。
📦 开源仓库 · 免费
github.com/google-gemma/gemma-skills
它到底是什么

它的本体是一份写给 AI 的说明书

gemma-trainer 的本体是一个 SKILL.md 文件,加上 5 个现成的 Python 脚本模板。它不带界面、也不是要你直接上手调用的训练库。

SKILL.md 是一份专门写给 AI Agent 读的蓝图。里面把「本地微调该怎么做」的最佳实践、每个参数该取什么值、有哪些坑要避开,全部写死。你的助手读了它,就从「大概知道怎么训练」变成「知道这台机器上该调哪个脚本、每个旋钮拧到几」。仓库里的 5 个脚本各管一摊:一个跑监督微调,一个跑偏好对齐,一个训打分器,一个专门验证数据格式,还有一个用来做数据蒸馏。

你说人话「微调 Gemma 4 E2B」
→
Agent 读
gemma-trainer
→
选对脚本
定好参数
→
跑训练
→
评估
迭代

这套技能不挑门派,和具体的 AI 工具无关,从 Gemini 到 Claude 都能用,配 Google 自己的 Antigravity 命令行工具(agy)也行。用法简单到一句话:把 gemma-trainer 文件夹拷进你 AI 助手的技能目录,助手立刻就知道怎么带你走。

更有意思的是,助手不只是照单执行,它会按技能里写的能力约束帮你拦错。有一个真实例子:一次训练请求手误写成了用 Gemma 4 31B 做音频任务,助手当场提醒,31B 是个只管文字和图像的模型,根本没有音频能力,建议改用 E2B 或者 12B。

Agent 提示 Gemma 4 31B 没有音频能力,建议改用 E2B 或 12B
你要求用一个没有音频能力的模型做音频微调,助手会拦下来并给出可行的替代型号。来源:DEV / Google AI
三条训练路

教知识、调偏好、学打分,三条路怎么选

技能里把微调分成三种方法,对应三种不同的目标。想清楚你要模型学会什么,就知道该走哪条路。

SFT
监督微调
干什么教它新领域知识、专门的任务、固定的输出格式
喂什么一问一答的对话数据
产出一个挂在原模型上的适配器
DPO
直接偏好优化
干什么调它的风格、语气、安全边界,对齐人的偏好
喂什么一个提问,配一个更好的回答和一个更差的回答
前提必须先做过 SFT,否则容易训崩
RM
奖励建模
干什么训一个专门给回答打分的评审模型
喂什么格式和 DPO 一样的好坏成对数据
产出在模型上加一个输出分数的头

DPO 有个硬规矩:一定要先在你的领域上做完 SFT,再来做 DPO。直接拿一个没见过你数据的基础模型跑 DPO,通常会失败,或者把输出格式搞坏。

三种方法的学习率,差了好几个量级

一个容易被忽略、却很能说明问题的细节:三条路建议的学习率(每一步把参数往前挪多大)差得非常远,而且不是「教得越多步子越大」这么简单。DPO 只在模型已经会的基础上轻轻校正风格,步子稍微一大就会毁掉之前学好的格式,所以要小到 SFT 的两百分之一。RM 训练的是一个新加上去、从零学起的打分头,反而是三者里步子最大的。

RM训打分器
1e-3
SFT教新知识
2e-4
DPO调偏好
1e-6

条形只示意量级高低,不是线性比例。真实数值:RM 用 1e-3、SFT 用 2e-4、DPO 用 1e-6,DPO 比 SFT 还小两百倍。

这两种数据长什么样,技能里给了标准范例,你可以照着准备自己的数据集。

SFT 数据格式 · 一条对话就是一问一答
{
  "messages": [
    {"role": "user", "content": "Tell me a joke."},
    {"role": "model", "content": "Why did the computer go to the doctor? It had a virus!"}
  ]
}
DPO 数据格式 · 一个提问配一好一坏两个回答
{
  "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)就是模型答得对不对的扣分。只对回复部分扣分,模型就只学「该怎么回」,不会去背用户的提问,用户提问那半直接跳过。这样模型学到的是「遇到这类问题该怎么回答」,而不是把你的问题也一并背下来。

用户提问
模型回复
Why did the computer go to the doctor? It had a virus!
跳过,不计入学习只学这半
失败头号原因

数据格式没弄对,是训练效果差的第一大原因。所以技能配了一个专门的验证脚本 dataset_prep.py,动手训练前先帮你把数据过一遍:SFT 数据会检查最后一句必须是模型的回复;DPO 数据会检查「更好」和「更差」两个回答不能一模一样,否则模型学不到任何偏好;它还会把提问单独分词,核对这段前缀在「好回答」和「坏回答」里出现的字词完全一致,专门堵住那种一分词就对不齐、训练悄悄跑偏的坑。

没有现成数据?让大模型帮你造

微调最缺的往往是数据。技能里还带了一个数据蒸馏(distillation)脚本 distill_dataset.py,思路是让一个大块头的「老师」模型(比如 Gemma 4 31B)生成高质量的训练数据,再拿这些数据去训一个小巧的「学生」模型(比如 E2B)。它给了两种造数据的方式:

response 模式
补答案
你给一批问题,老师模型负责逐个补上高质量答案,凑成一份问答数据集
synthesize 模式
自己出题
更省事:老师模型自己头脑风暴出一批指令和对应回答,直接生成整份数据集

老师模型可以挂在本地的 Ollama 上跑,从造数据到训练全程不出你这台电脑。

怎么塞进显卡

怎么把一个大模型塞进你的显卡

在自己电脑上微调,最怕的就是显存不够、训练直接崩掉(爆显存,英文叫 OOM)。gemma-trainer 靠三样东西把大模型塞进消费级显卡:LoRA、QLoRA,和一个叫 Unsloth 的引擎。

打个比方

微调一个大模型,不是把整本书重写一遍。LoRA 的做法是原书原封不动,只在旁边挂一小叠可训练的便签,改动都写在便签上。QLoRA 更省:先把原书用更省纸的方式(4-bit 压缩)重印一份缩小体积,再往上挂便签训练。这样原模型冻着不动,你训练的只是那一小叠便签,显存自然省下来。

冻结的大模型 🧊 原参数不动 4-bit 压缩省显存 LoRA 适配器 这一小叠 才是你训练的
原模型冻结压缩,只训练旁边挂的一小叠适配器,显存需求大幅下降

具体分工是这样:单张显卡优先用 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 E4B10–17 GB中端消费级显卡
Gemma 4 31B约 22 GB高端消费级,如 RTX 4090 / 3090(24G)
Gemma 4 26B-A4B40 GB 以上要上 A100 这类专业卡

显存数字来自 Unsloth 官方 Gemma 4 训练文档,为 QLoRA / LoRA 微调的参考值;全量微调(不压缩)要几倍于此,通常得多卡。

可以直接抄的 LoRA 参数配方

技能把常用的 LoRA 参数默认值都写好了,你准备训练时可以照着填:

参数建议值它管什么
rank(r)16 或 32便签的「厚度」。越高能学越复杂的行为,也越吃显存
lora_alpha32 或 64缩放系数,经验法则是设成 rank 的两倍
lora_dropout0.05逼模型学更稳健的特征,别只依赖固定套路
学习率SFT 2e-4
DPO 1e-6
RM 1e-3
每一步挪多大。三种方法量级差很远,别用错
上下文长度2048–8192本地训练防爆显存,别开满 256K

参数定好,跑起来就是一条命令。想自己动手、不经过 AI 助手也行,直接调脚本,比如用默认设置对 E2B 做一次监督微调:

跑一次 SFT · 直接调脚本
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 就行。

教它听声音 · 把 type 从 text 换成 audio(图像同理换成 image)
{
  "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 的硬件加速。「本地微调,本地部署」在一条链子上就走通了。

站内相关
Google 在 Pixel 10 上跑 Gemma 4:把 AI 装进手机的端侧实践
想知道微调好的 Gemma 塞进手机后跑得怎么样,这篇讲的正是端侧那一段。
实战 · 上手

实战:把 Gemma 调成古朝鲜文学翻译家

一个跑通的真实例子:把 Gemma 4 E2B 微调成《洪吉童传》(一部古朝鲜文学)的翻译专家。整个过程,你要做的就是对助手说一句话。

跑一次真实微调 · 你只需要说这一句
用 bebechien/HongGildongJeon 这个数据集,微调 Gemma 4 E2B。
Fine-tune Gemma 4 E2B on the dataset bebechien/HongGildongJeon.

接下来助手会陪你走完四步:先用验证脚本核对你的数据合不合格式,再挑一组既能教会模型语言细微差别、又不会撑爆显存的 LoRA 参数,然后用省资源的默认配置开训,最后评估结果、根据表现调参再来一轮。你还可以让它现写一个自定义的评估脚本,比如一个专门查转写相似度的脚本。训练跑完,助手会给你一份完整报告,把这轮的表现和下一轮能往哪改说清楚。

训练完成后的综合报告,指出下一轮可改进处
训练跑完,助手给出一份综合报告,标明表现和下一轮的改进方向。来源:DEV / Google AI

怎么开始?把 gemma-trainer 文件夹拷进你 AI 助手的技能目录,助手立刻就懂怎么带你走。整个 gemma-skills 仓库在 GitHub 上开源:github.com/google-gemma/gemma-skills。

站内相关
Gemma 4 技术报告:开源模型怎么用小参数把活干好
想先搞懂被微调的 Gemma 4 本身是什么水平,这篇是官方技术报告的解读。
✅ 在自己电脑上微调 Gemma 的决策清单
三种训练路的数据格式、一句触发 prompt、一张 LoRA 参数速查表,加一份本地微调决策清单,抄走就能上手。
来源:bebechien《Master Local Fine-Tuning with "gemma-trainer"》,DEV Community,2026-07-07。机制细节来自开源仓库 google-gemma/gemma-skills 的 SKILL.md 与训练脚本。性能数字为 Unsloth 官方宣称。
来源
DEV · Google AIDEV · Google AI·查看主材料
↑ 正文结束
✓ 本篇全文免费开放

会员可复制、下载全文 Markdown,还能让你的 AI 订阅和提问。

阅读原文 ↗
📮 新解读第一时间进邮箱

读完觉得有用?留个邮箱,每篇新解读发布就送达,随时退订。