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) 也同样可行。
🐛 错误修复 + 提示
如果你看到 Gemma-4 E2B 和 E4B 的 loss 为 13-15,这是完全正常的 ——这是多模态模型的常见特性。这在 Gemma-3N、Llama Vision、Mistral vision 等模型上也发生过。
Gemma 26B 和 31B 的 loss 更低,通常在 1-3 或更低。视觉任务会高 2 倍,因此约为 3-5
🍇梯度累积可能会抬高你的 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 的生成结果是乱码
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 提示
如果你想要 保留推理 能力,你可以将推理风格样本与直接答案混合(至少保留 75% 的推理)。否则你也可以让它完全输出。 使用
gemma-4用于非 thinking 聊天模板,使用gemma-4-thinking用于 thinking 变体。 较大的 26B 和 31B 建议使用 thinking 模板,小模型则使用非 thinking 模板。要启用 thinking 模式,请使用
enable_thinking = True / False在tokenizer.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|>Gemma 4 非常适合多语言微调,因为它支持 140 种语言。
推荐训练 E4B QLoRA 而不是 E2B LoRA 因为 E4B 更大,而量化带来的精度差异微乎其微。Gemma 4 E4B LoRA 甚至更好。
微调后,你可以导出为 GGUF (用于 llama.cpp/Unsloth/Ollama 等)
⚡快速开始
🦥 Unsloth Studio 指南
Gemma 4 可以在 Unsloth Studio中运行和微调,这是我们面向本地 AI 的全新开源 Web 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 配方。这仅适用于文本——更多细节也请参见我们的 视觉微调 部分。
如果你发生 OOM:
降低
per_device_train_batch_size到 1 并/或降低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, Ollama 或 SGLang.
保存为 GGUF
Unsloth 支持直接保存为 GGUF:
或者将 GGUF 推送到 Hugging Face:
如果导出的模型在另一个运行时中表现更差,Unsloth 标记了最常见的原因: 推理时使用了错误的聊天模板 / EOS token (你必须使用与你训练时相同的聊天模板)。
更多详细信息请阅读我们的推理指南:
Gemma 4 数据最佳实践
Gemma 4 有一些你需要牢记的格式细节。
1. 使用标准聊天角色
Gemma 4 使用标准的:
systemuserassistant
这意味着你的 SFT 数据集应采用常规聊天格式编写,而不是较旧的 Gemma 特定角色格式。
2. 思考模式是显式的
如果你想在 SFT 期间保留思考风格行为:
保持格式一致
决定你是否要训练 可见的思考块 或者 仅最终答案
请 勿 在同一数据集中混合多种不兼容的思考格式
对于大多数生产助手,最简单的设置是微调 仅最终可见答案.
3. 多轮规则
对于多轮对话,只保留 最终可见答案 在对话历史中。不要 勿 把较早的思考块再次输入到后续轮次中。
最后更新于
这有帮助吗?




