For the complete documentation index, see llms.txt. This page is also available as Markdown.

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 显存。

快速入门修复 bug + 提示

微调 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 提示

  1. 如果你想 保留推理 能力,你可以将推理风格示例与直接回答混合使用(保持至少 75% 为推理内容)。否则你可以全部输出。 使用 gemma-4 用于非思考的聊天模板,以及 gemma-4-thinking 用于思考变体。 较大的 26B 和 31B 请用思考版,小型号请用非思考版。

  2. 要启用思考模式,请使用 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|>

  3. Gemma 4 支持 140 种语言,因此在多语言微调方面非常强大。

  4. 建议训练 E4B QLoRA 而不是 E2B LoRA ,因为 E4B 更大,而且量化精度差异微乎其微。Gemma 4 E4B LoRA 甚至更好。

  5. 微调后,你可以导出为 GGUF (用于 llama.cpp/Unsloth/Ollama 等)

⚡快速开始

🦥 Unsloth Studio 指南

Gemma 4 可以在 Unsloth Studio中运行和微调,这是我们新的本地 AI 开源网页 UI。

使用 Unsloth Studio,你可以在 MacOS、Windows、Linux 上本地运行模型并训练 NVIDIA GPU。Intel、MLX 和 AMD 训练支持将于本月推出。

1

安装 Unsloth

在你的终端中运行:

MacOS、Linux、WSL:

Windows PowerShell:

2

启动 Unsloth

MacOS、Linux、WSL 和 Windows:

然后打开 http://localhost:8888 在你的浏览器中。

3

训练 Gemma 4

首次启动时,你需要创建一个密码来保护你的账户,并在之后重新登录。然后你会看到一个简短的引导向导,用于选择模型、数据集和基本设置。你可以随时跳过。

在搜索栏中搜索 Gemma 4,并选择你想要的模型和数据集。接下来,按需调整你的超参数和上下文长度。

4

监控训练进度

点击开始训练后,你就可以监控并观察模型的训练进度。训练损失应该稳步下降。 完成后,模型会自动保存。

5

导出你的微调模型

完成后,Unsloth Studio 允许你将模型导出为 GGUF、safetensor 等格式。

6

比较微调模型与原始模型

点击 比较模式 以比较 LoRA 适配器和原始模型。

🦥 Unsloth Core(基于代码)指南

我们为 Gemma 4 制作了免费笔记本:

以及用于强化学习(RL)的: E2B (RL GRPO)

我们还为更大的 Gemma 4 模型制作了笔记本,但它们需要 A100:

Gemma-4-26B-A4B - A100 GPU

Gemma-4-31B - A100 GPU

如果你想做 GRPO,在 Unsloth 中可行,但你需要禁用快速 vLLM 推理并改用 Unsloth 推理。请参考我们的 视觉 RL 笔记本示例。

下面是一个独立的 Gemma-4-26B-A4B-it 文本 SFT 配方。这仅限文本——另请参见我们的 视觉微调 部分以了解更多细节。

如果你 OOM:

  • 降低 per_device_train_batch_size 改为 1 和/或减少 max_seq_length.

  • 保持 use_gradient_checkpointing="unsloth" 开启(它旨在减少显存使用并延长上下文长度)。

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 使用标准的:

  • system

  • user

  • assistant

这意味着你的 SFT 数据集应写成常规聊天格式,而不是旧版 Gemma 特定的角色格式。

2. 思考模式是显式的

如果你想在 SFT 期间保留思考式行为:

  • 保持格式一致

  • 决定你想训练的是 可见的思考块 还是 仅最终答案

  • 要 不要 在同一数据集中混用多种不兼容的思考格式

对于大多数生产级助手来说,最简单的设置是只对 最终可见答案.

3. 多轮规则

对于多轮对话,只保留 最终可见答案 在对话历史中。不要 不要 把更早的思考块再喂回后续轮次。

最后更新于

这有帮助吗?