unsloth sticker logounsloth main Logounsloth AboutBlogContactDocumentation Blog 6 cute pastel coloured sloths staring at their computer screens happy

微调并运行 Gemma 3

2025年3月10日 • 作者:Daniel & Michael 2025年3月14日 • 作者:Daniel & Michael

Gemma 3 是 Google 最新的多模态(文本+图像)模型,有 1B、4B、12B 和 27B 四种尺寸。现在 Unsloth 已经支持 Gemma 3,它拥有 128K 的上下文窗口,并支持多语言。

2025年3月19日更新: 请阅读我们关于新的 Gemma 3 训练修复的文章

Unsloth 现在还支持所有内容*,包括:完整微调、8-bit 量化、预训练、所有 transformer 风格的模型(Mixtral、MOE、Cohere 等)以及任何训练算法,例如带有 VLMs 的 GRPO。 多 GPU 支持也将在未来几周内推出 - 因此请加入我们的 newsletter 以便在发布时收到通知! 非常感谢 Gemma 团队与我们合作,并在他们的 Gemma 3 Blogpost 中推荐 Unsloth。

通过以下命令获取最新的稳定版 Unsloth:

pip install --upgrade --force-reinstall --no-cache-dir unsloth unsloth_zoo

✨Gemma 3 训练修复

首先,在我们微调或运行 Gemma 3 之前,我们发现当使用 float16 混合精度时,梯度和激活会变成无穷大。这发生在只有 float16 tensor core 的 T4 GPU、RTX 20x 系列和 V100 GPU 中。

Unsloth 中的解决方案有三个方面:

这意味着 Unsloth 是唯一可以在 float16 机器上运行 Gemma 3 的框架! 这也意味着带有免费 Tesla T4 GPU 的 Colab Notebook 也可以使用!

Gemma 3 (27B) 的微调在 Unsloth 中可以在 22GB 以下的 VRAM 中进行! 它的速度也提高了 1.6 倍,并且默认使用 Unsloth dynamic 4-bit 量化以获得卓越的准确性! 您还可以直接将 Gemma 3 与 Unsloth 的 GRPO 一起使用来训练您自己的推理模型。

尝试在我们的免费 Google Colab Notebook 中使用 Unsloth 微调 Gemma 3 (4B)。 要查看我们所有的 notebook 和模型上传,请访问我们的 documentation

我们还与 Hugging Face 合作开设了 R1 Reasoning 课程

✨Gemma 3 的怪癖 - 无限激活

首先,在我们微调或运行 Gemma 3 之前,我们发现当使用 float16 混合精度时,梯度和激活会变成无穷大。这发生在只有 float16 tensor core 的 T4 GPU、RTX 20x 系列和 V100 GPU 中。

下图:Gemma 3 1B 到 27B 超过了 float16 的最大值 65504

对于较新的 GPU,例如 RTX 30x 或更高版本、A100、H100 等,这些 GPU 具有 bfloat16 tensor core,因此不会发生此问题! 但为什么?!

Float16 只能表示高达 65504 的数字,而 bfloat16 可以表示高达 10^38 的巨大数字! 但请注意,两种数字格式都只使用 16 位! 这是因为 float16 分配了更多的位,因此它可以更好地表示较小的十进制数,而 bfloat16 不能很好地表示分数。

但为什么要使用 float16? 让我们只使用 float32! 但不幸的是,float32 在 GPU 中对于矩阵乘法来说非常慢 - 有时慢 4 到 10 倍! 所以我们不能这样做。

性能基准

| 模型 | VRAM | 🦥 Unsloth 速度 | 🦥 VRAM 减少 | 🦥 更长的上下文 | 🤗 Hugging Face+FA2 | | -------- | ----- | --------------- | ----------- | ------------- | ------------------ | | Gemma-3-12B | 24GB | 1.7x | >60% | 6x 更长 | 1x |

我们使用 Alpaca 数据集进行了测试,批量大小为 2,梯度累积步数为 4,rank = 32,并在所有线性层(q、k、v、o、gate、up、down)上应用了 QLoRA。

🦥 所有内容支持 + 更新

初步支持完整微调和 8-bit 微调 - 分别设置 full_finetuning = Trueload_in_8bit = True。 两者将在未来得到进一步优化! 提醒您,您将需要更强大的 GPU!

新的 Unsloth Auto Model 支持 - 现在支持几乎所有模型! Unsloth 现在开箱即用地支持视觉和文本模型,无需自定义实现(并且所有模型都经过优化)。 这允许更快、更少出错、更稳定/简化的微调体验。

我们还支持:Qwen 的 QwQ-32B、Mistral 的 Mixtral、IBM 的 3.2 Granite、Microsoft 的 Phi-4-mini、Cohere 的 c4ai-command-a、AllenAI 的 OLMo-2 以及所有其他 transformer 风格的模型! 我们还为这些模型上传了动态 4-bt 和 GGUF。

Unsloth 中的多项优化使 VRAM 使用量进一步减少 +10%,4-bit 的速度提高了 >10%(在我们最初的 2 倍速度、70% 更少的内存使用量之上)。 8-bit 和完整微调也受益。

现在应该可以通过 pip install unsloth 支持 Windows! 利用 'pip install triton-windows',它为 Triton 提供了一个可通过 pip 安装的路径。

现在 16bit 和 8bit 转换为 llama.cpp GGUF 不需要编译! 这解决了许多问题,这意味着无需安装 GCC、Microsoft Visual Studio 等。

视觉微调: 仅针对支持的视觉模型训练完成/响应! Pixtral 和 Llava 微调现在已修复! 事实上,几乎所有视觉模型都开箱即用! 视觉模型现在自动调整图像大小,这可以防止 OOM 并允许截断序列长度。

Unsloth 中的 GRPO 现在允许非 Unsloth 上传的模型也采用 4bit - 大大减少了 VRAM 使用量! (即使用您自己对 Llama 的微调)

新的训练日志和信息 - 训练参数计数、总批量大小

完全覆盖所有模型的梯度累积错误修复

🔮 Gemma 3 分析

这是我们对 Gemma 3 架构进行的深入分析:

  1. 1B 纯文本,4、12、27B 视觉 + 文本。 14T tokens
  2. 128K 上下文长度,从 32K 进一步训练
  3. 移除 attn softcapping。 替换为 QK norm
  4. 5 sliding + 1 global attn
  5. 1024 sliding window attention
  6. RL - BOND, WARM, WARP

详细分析

  1. Gemma 2 的架构差异:添加了更多滑动窗口以减少 KV 缓存负载! 发现 5:1 的比例效果很好,并且消融研究表明 7:1 甚至也可以! SWA 是 1024 - 消融研究表明 1024 到 2048 的效果很好。
  2. 训练,后训练 Gemma-3 使用 TPU,以及带有 JAX 的 Zero-3 like algos。 27B 在 14 万亿个 tokens 上进行训练。 12B = 12T,4B = 4T,1B = 2T tokens。 所有人在 RL/后训练阶段都使用了 distillation。 从更大的 instruct 模型中采样了每个 token 256 个 logits(不确定是哪个 - 也许是闭源的?)。 使用了 RL 算法,如 BOND、WARM 和 WARP。
  3. Chat template 现在强制使用 BOS token! 使用 <start_of_turn>user<start_of_turn>model。 262K 词汇大小。 SentencePiece 分词器,带有拆分数字、保留空格和字节回退。
  4. 长上下文 & 视觉编码器:从 32K 上下文训练,然后扩展到 128K 上下文。 使用了 RoPE Scaling 为 8。 Pan & Scan 算法用于视觉编码器。 视觉编码器以 896 * 896 的固定分辨率运行。 在推理时使用窗口化以允许其他尺寸。

🦥 Dynamic BnB 4-bit 量化

我们上传了适用于 Gemma 3 的 Unsloth Dynamic 4-bit 量化,与标准 4-bit 相比,可显着提高准确性 - 尤其是在视觉模型中,差异最为明显。 正如我们之前的 Qwen2-VL 实验 中所示,我们的动态量化仅增加了 10% 的 VRAM 使用量,就提供了显着的准确性提升。

一个很好的基准示例是我们提交给 Hugging Face OpenLLM Leaderboard 的 Phi-4 的动态 4-bit 量化。 它的得分几乎与我们的 16-bit 版本一样高,并且在 MMLU 上优于标准 BnB 4-bit 和 Microsoft 的官方 16-bit 模型。

另请参见下方 Gemma 3 (27B) 与 Unsloth Dynamic 量化相比的激活和权重误差分析图:

💕 谢谢!

非常感谢 Google 团队的支持,以及感谢大家使用和分享 Unsloth - 我们非常感谢。 🙏

与往常一样,请务必加入我们的 Reddit pageDiscord 服务器寻求帮助或只是为了表达您的支持! 您也可以在 Twitter 上关注我们并加入我们的 newsletter

感谢您的阅读!

Daniel & Michael Han 🦥 2025年3月14日

现在免费 Fine-tune Gemma 3!

免费开始

Company AboutLinkedInPrivacy PolicyTerms of Service Product IntroductionPricingDownloadDocumentation🦥 Models Community Twitter (X) Reddit Hugging Face Discord LinkedIn unsloth sticker logounsloth support@unsloth.ai © 2025 unsloth. All rights reserved. Join Our Discord