Gemma 4 微调指南
使用 Unsloth 训练 Google 的 Gemma 4。
你现在可以训练 Google 的 Gemma 4 12B、E2B、E4B、26B-A4B 和 31B,使用 Unsloth。Unsloth 支持 Gemma 4 的所有视觉、文本、音频和 RL 微调。
Unsloth 训练 Gemma 4 快约 1.5 倍 替换为 显存占用减少约 60% 相比 FA2 配置(无精度损失)
我们修复了许多通用的 Gemma 4 训练相关 bug (并非源自 Unsloth)。
Gemma 4 E2B 在以下配置下训练: 8GB 显存。E4B 需要 10GB 显存。
微调 Gemma 4 通过我们的 免费 Google Colab 笔记本:
你可以在我们的 Unsloth Studio✨ 笔记本中免费运行和训练 Gemma 4:
你可以在这里查看更多 笔记本.
你也可以使用 强化学习 (RL)在 9GB 显存上训练 Gemma 4。
Gemma 4 E2B LoRA 可在 8-10GB 显存上运行。E4B LoRA 需要 17GB 显存。
31B QLoRA 可在 22GB 上运行,而 26B-A4B LoRA 需要 >40GB
导出/将模型保存为 GGUF 等格式。 和 完整微调 (FFT) 也可以。
🐛 修复 bug + 提示
🍇梯度累积可能会抬高你的损失


如果你看到的损失高于 13-15(比如 100 或 300),大概率是梯度累积没有被正确计入——我们已经 在 Unsloth 和 Unsloth Studio 中修复了这一问题。
要了解更多关于梯度累积的信息,请查看我们的梯度累积 bug 修复博文: https://unsloth.ai/blog/gradient
⁉️Gemma-4 31B 和 26B-A4B 推理中的 IndexError
在使用 31B 和 26B 进行推理时,你可能会看到此错误:
罪魁祸首如下:
Gemma-4 31B 和 26B-A4B 附带 num_kv_shared_layers = 0。在 Python 中, -0 == 0,因此 layer_types[:-0] 会退化为 layer_types[:0] == []。缓存会在没有任何层槽位的情况下构建,第一次注意力前向传播就会在 Cache.update.
⛔ use_cache = True 对 E2B、E4B 来说,生成结果一团糟
见 issue "[Gemma 4] use_cache=False 会破坏注意力计算,产生垃圾 logits #45242"
Gemma-4 E2B 和 E4B 在各层之间共享 KV 状态(num_kv_shared_layers = 20 和 18)。缓存是早期层为后续层复用而存放 KV 的唯一位置。当 use_cache=False (正如每个 QLoRA 教程都会设置的那样,而且 gradient_checkpointing=True 强制启用时), Gemma4TextModel.forward 会跳过缓存构建,因此共享 KV 的层会退回到基于当前隐藏状态在本地重新计算 K 和 V。logits 会变成垃圾,训练损失会发散。
之前(unsloth/gemma-4-E2B-it,提示“1+1 是多少?”):
修复后:
📻音频 fp16 溢出
Gemma4AudioAttention 使用 config.attention_invalid_logits_value = -1e9 在 masked_fill 调用中。在 fp16(Tesla T4)上,-1e9 会溢出 fp16 的最大值 65504,导致:
这是由于 self.config.attention_invalid_logits_value :
💡Gemma-4 提示
如果你想 保留推理 能力,你可以将推理风格示例与直接回答混合使用(保持至少 75% 为推理内容)。否则你可以全部输出。 使用
gemma-4用于非思考的聊天模板,以及gemma-4-thinking用于思考变体。 较大的 26B 和 31B 请用思考版,小型号请用非思考版。要启用思考模式,请使用
enable_thinking = True / False在tokenizer.apply_chat_template已启用思考:
将打印
<bos><|turn>system\n<|think|><turn|>\n<|turn>user\n2+2 等于多少?<turn|>\n<|turn>model\n已禁用思考:
将打印
<bos><|turn>user\n2+2 等于多少?<turn|>\n<|turn>model\n<|channel>thought\n<channel|>Gemma 4 支持 140 种语言,因此在多语言微调方面非常强大。
建议训练 E4B QLoRA 而不是 E2B LoRA ,因为 E4B 更大,而且量化精度差异微乎其微。Gemma 4 E4B LoRA 甚至更好。
微调后,你可以导出为 GGUF (用于 llama.cpp/Unsloth/Ollama 等)
⚡快速开始
🦥 Unsloth Studio 指南
Gemma 4 可以在 Unsloth Studio中运行和微调,这是我们新的本地 AI 开源网页 UI。
使用 Unsloth Studio,你可以在 MacOS、Windows、Linux 上本地运行模型并训练 NVIDIA GPU。Intel、MLX 和 AMD 训练支持将于本月推出。

🦥 Unsloth Core(基于代码)指南
我们为 Gemma 4 制作了免费笔记本:
以及用于强化学习(RL)的: E2B (RL GRPO)
我们还为更大的 Gemma 4 模型制作了笔记本,但它们需要 A100:
Gemma-4-26B-A4B - A100 GPU
Gemma-4-31B - A100 GPU
下面是一个独立的 Gemma-4-26B-A4B-it 文本 SFT 配方。这仅限文本——另请参见我们的 视觉微调 部分以了解更多细节。
MoE(bf16 LoRA)加载示例:
加载后,你会附加 LoRA 适配器,并像上面的 SFT 示例一样训练。
强化学习(RL)
你现在可以使用 我们的免费笔记本.
用 RL 训练 Gemma 4 E2B 可在 9GB 上运行。
这个笔记本的目标是让 Gemma 4 学会使用 GRPO.
模型将制定一种填充空白单元格的策略,我们会对正确放置以及完成有效谜题给予奖励。
即使 vLLM 不支持,你也可以通过设置以下内容,使用 Unsloth 运行 Gemma 4 RL fast_inference=False 在加载模型时:

MoE 微调(26B-A4B)
“ 26B-A4B 模型是 Gemma 4 系列中速度 / 质量的折中选择。由于它是一个 MoE 模型,并且每个 token 只有一部分参数激活,因此更稳妥的微调方式是:
使用 LoRA 而不是完整微调
优先使用 16 位 / bf16 LoRA 如果显存允许
先从更短的上下文和更小的 rank 开始
只有在流水线稳定后再扩大规模
如果你的目标是最高质量,并且你有更多显存,请使用 31B 。
多模态微调(E2B / E4B)
由于 E2B 和 E4B 支持 图像 和 音频,它们是 Gemma 4 多模态微调的主要变体。
使用以下方式加载多模态模型
FastVisionModel保持
finetune_vision_layers = False首先只微调语言层、注意力层和 MLP 层
如果你的任务需要,再稍后启用视觉或音频层
Gemma 4 多模态 LoRA 示例:
图像示例格式
请记住:对于 Gemma 4 多模态提示,将图像放在 之前 文本指令。
音频示例格式
音频仅用于 E2B / E4B 。请保持片段简短,并且与任务相关。
保存 / 导出微调后的模型
你可以查看我们针对以下内容的特定推理 / 部署指南: Unsloth Studio, llama.cpp, vLLM, llama-server, Ollama 或 SGLang.
保存为 GGUF
Unsloth 支持直接保存为 GGUF:
或者将 GGUF 推送到 Hugging Face:
如果导出的模型在另一个运行时中的表现更差,Unsloth 会指出最常见的原因: 推理时使用了错误的聊天模板 / EOS 标记 (你必须使用与你训练时相同的聊天模板)。
更多细节请阅读我们的推理指南:
Gemma 4 数据最佳实践
Gemma 4 有几个格式细节需要你注意。
1. 使用标准聊天角色
Gemma 4 使用标准的:
systemuserassistant
这意味着你的 SFT 数据集应写成常规聊天格式,而不是旧版 Gemma 特定的角色格式。
2. 思考模式是显式的
如果你想在 SFT 期间保留思考式行为:
保持格式一致
决定你想训练的是 可见的思考块 还是 仅最终答案
要 不要 在同一数据集中混用多种不兼容的思考格式
对于大多数生产级助手来说,最简单的设置是只对 最终可见答案.
3. 多轮规则
对于多轮对话,只保留 最终可见答案 在对话历史中。不要 不要 把更早的思考块再喂回后续轮次。
最后更新于
这有帮助吗?




