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 训练错误 (并非源自 Unsloth)。

  • Gemma 4 E2B 可在 8GB 显存上训练。E4B 需要 10GB 显存。

快速开始错误修复 + 提示

微调 Gemma 4 通过我们的 免费 Google Colab 笔记本:

你可以在我们的以下界面中免费运行和训练 Gemma 4: Unsloth Studio✨ 笔记本:

你可以查看更多 笔记本在这里.

  • 你也可以用以下方式训练 Gemma 4: 强化学习 (RL),在 9GB 显存上运行。

  • Gemma 4 E2B LoRA 可在 8-10GB 显存上运行。E4B LoRA 需要 17GB 显存。

  • 31B QLoRA 可在 22GB 下运行 而 26B-A4B LoRA 需要 >40GB

  • 导出/将模型保存为 GGUF 等。 以及 完整微调 (FFT) 也同样可行。

🐛 错误修复 + 提示

🍇梯度累积可能会抬高你的 loss

如果你看到高于 13-15 的 loss(比如 100 或 300),很可能是梯度累积没有被正确处理——我们已经 在 Unsloth 和 Unsloth Studio 中修复了这个问题。

要进一步了解梯度累积,请参阅我们的梯度累积错误修复博客: 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-0 == 0 layer_types[:-0] 会退化为 layer_types[:0] == []。缓存会以零层槽位构建,而第一次 attention forward 就会在 Cache.update.

use_cache = True E2B、E4B 的生成结果是乱码

见问题 "[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 会变成垃圾,训练 loss 会发散。

修复前(unsloth/gemma-4-E2B-it,提示词为“1+1 等于多少?”):

在我们的修复后:

📻音频 float16 溢出

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 用于非 thinking 聊天模板,使用 gemma-4-thinking 用于 thinking 变体。 较大的 26B 和 31B 建议使用 thinking 模板,小模型则使用非 thinking 模板。

  2. 要启用 thinking 模式,请使用 enable_thinking = True / Falsetokenizer.apply_chat_template

    已启用 thinking:

    将输出 <bos><|turn>system\n<|think|><turn|>\n<|turn>user\n2+2 等于多少?<turn|>\n<|turn>model\n

    已禁用 thinking:

    将输出 <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 的全新开源 Web 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

监控训练进度

点击开始训练后,你将能够监控并观察模型的训练进度。训练 loss 应该会稳定下降。 完成后,模型会自动保存。

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 推理即可。请参考我们的 Vision RL 笔记本示例。

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

如果你发生 OOM:

  • 降低 per_device_train_batch_size1 并/或降低 max_seq_length.

  • 保持 use_gradient_checkpointing="unsloth" 开启(其设计目的是减少 VRAM 使用并扩展上下文长度)。

MoE 的加载器示例(bf16 LoRA):

加载完成后,你将附加 LoRA 适配器,并像上面的 SFT 示例那样进行训练。

强化学习(RL)

你现在可以用 RL、GSPO、GRPO 等来训练 Gemma 4,配合 我们的免费笔记本.

Gemma 4 E2B RL 可在 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 如果内存允许

  • 先从较短的上下文和较小的秩开始

  • 仅在流水线稳定后再扩大规模

如果你的目标是最高质量并且拥有更多内存,请改用 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, OllamaSGLang.

保存为 GGUF

Unsloth 支持直接保存为 GGUF:

或者将 GGUF 推送到 Hugging Face:

如果导出的模型在另一个运行时中表现更差,Unsloth 标记了最常见的原因: 推理时使用了错误的聊天模板 / EOS token (你必须使用与你训练时相同的聊天模板)。

更多详细信息请阅读我们的推理指南:

Gemma 4 数据最佳实践

Gemma 4 有一些你需要牢记的格式细节。

1. 使用标准聊天角色

Gemma 4 使用标准的:

  • system

  • user

  • assistant

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

2. 思考模式是显式的

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

  • 保持格式一致

  • 决定你是否要训练 可见的思考块 或者 仅最终答案

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

对于大多数生产助手,最简单的设置是微调 仅最终可见答案.

3. 多轮规则

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

最后更新于

这有帮助吗?