Gemma 3 - 如何运行指南

使用我们的 GGUF 在 llama.cpp、Ollama、Open WebUI 上有效运行 Gemma 3,以及如何使用 Unsloth 微调!

Google 发布了 Gemma 3,新增 270M 模型,并保留之前的 1B、4B、12B 和 27B 尺寸。270M 和 1B 为仅文本模型,而更大模型支持文本与视觉。我们提供 GGUF 文件,并提供如何有效运行它的指南,以及如何微调与进行 强化学习 使用 Gemma 3!

circle-check

运行教程微调教程

Unsloth 是唯一在 float16 机器上支持 Gemma 3 推理与训练的框架。 这意味着带有免费 Tesla T4 GPU 的 Colab 笔记本也能工作!

circle-info

根据 Gemma 团队,推理的最佳配置是 temperature = 1.0,top_k = 64,top_p = 0.95,min_p = 0.0

Unsloth 为 Gemma 3 上传的最佳配置:

⚙️ 推荐的推理设置

根据 Gemma 团队,官方推荐的推理设置为:

  • Temperature 为 1.0

  • Top_K 为 64

  • Min_P 为 0.00(可选,但 0.01 效果很好,llama.cpp 默认是 0.1)

  • Top_P 为 0.95

  • 重复惩罚(Repetition Penalty)为 1.0。(在 llama.cpp 和 transformers 中 1.0 表示禁用)

  • 聊天模板:

    <bos><start_of_turn>user\nHello!<end_of_turn>\n<start_of_turn>model\nHey there!<end_of_turn>\n<start_of_turn>user\nWhat is 1+1?<end_of_turn>\n<start_of_turn>model\n
  • 带有以下内容的聊天模板 \n换行符被渲染(除最后一行外)

triangle-exclamation

✨在手机上运行 Gemma 3

要在手机上运行这些模型,我们推荐使用任何能在边缘设备(如手机)本地运行 GGUF 的移动应用。微调后可以导出为 GGUF,然后在手机上本地运行。确保你的手机有足够的内存/性能来处理这些模型,因为可能会过热,因此我们建议针对该使用场景使用 Gemma 3 270M 或 Gemma 3n 模型。你可以试试 开源项目 AnythingLLM 的arrow-up-right 移动应用,你可以在 此处下载 Android 版arrow-up-rightChatterUIarrow-up-right,它们是非常适合在手机上运行 GGUF 的应用。

circle-check

🦙 教程:如何在 Ollama 中运行 Gemma 3

  1. 安装 ollama 如果你还没有安装!

  1. 运行模型!注意如果失败你可以在另一个终端运行 ollama serve!我们在 Hugging Face 上传中包含了所有修复和建议参数(如 temperature 等),在 params 中!你可以将模型名称 'gemma-3-27b-it-GGUF' 改为任何 Gemma 模型,例如 'gemma-3-270m-it-GGUF:Q8_K_XL'。

📖 教程:如何在 llama.cpp 中运行 Gemma 3 27B

  1. 获取最新的 llama.cppGitHub 这里arrow-up-right。你也可以按照下面的编译说明。将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF 如果你没有 GPU 或者只想用 CPU 推理。

  1. 如果你想直接使用 llama.cpp 加载模型,可以按下面操作:(:Q4_K_XL) 是量化类型。你也可以通过 Hugging Face(第 3 点)下载。这与 ollama run

  1. 通过以下方式下载模型(在安装 pip install huggingface_hub hf_transfer 之后)。你可以选择 Q4_K_M,或其他量化版本(如 BF16 全精度)。更多版本见: https://huggingface.co/unsloth/gemma-3-27b-it-GGUFarrow-up-right

  1. 运行 Unsloth 的 Flappy Bird 测试

  2. 编辑 --threads 32 以设置 CPU 线程数, --ctx-size 16384 用于上下文长度(Gemma 3 支持 128K 上下文长度!), --n-gpu-layers 99 用于指定多少层进行 GPU 卸载。若 GPU 内存不足可尝试调整。如果只是 CPU 推理则移除此项。

  3. 对于会话模式:

  1. 用于非会话模式以测试 Flappy Bird:

我们在 https://unsloth.ai/blog/deepseekr1-dynamicarrow-up-right 1.58bit 博客中的完整输入为:

triangle-exclamation

🦥 在 Unsloth 中微调 Gemma 3

Unsloth 是唯一在 float16 机器上支持 Gemma 3 推理与训练的框架。 这意味着带有免费 Tesla T4 GPU 的 Colab 笔记本也能工作!

circle-exclamation

Unsloth 微调修复

我们在 Unsloth 的解决方案有三方面:

  1. 将所有中间激活保持为 bfloat16 格式 —— 也可以是 float32,但这会使用 2 倍的显存或内存(通过 Unsloth 的异步梯度检查点实现)

  2. 使用张量核在 float16 中完成所有矩阵乘法,但手动进行上转换/下转换,而不是依赖 PyTorch 的混合精度 autocast。

  3. 将所有不需要矩阵乘法的其它操作(如 layernorm)上转换为 float32。

🤔 Gemma 3 修复分析

Gemma 3 的 1B 到 27B 超出 float16 的最大值 65504

首先,在我们微调或运行 Gemma 3 之前,我们发现使用 float16 混合精度时,梯度和 激活会变为无穷大 不幸的是会发生这种情况。这在仅有 float16 张量核的 T4、RTX 20x 系列和 V100 GPU 上会出现。

对于较新的 GPU,如 RTX 30x 或更高、A100、H100 等,这些 GPU 有 bfloat16 张量核,因此不会发生这个问题! 但为什么会这样?

Float16 只能表示最大到 65504,而 bfloat16 能表示高达 10^38!但请注意这两种数值格式都只使用 16 位!这是因为 float16 分配了更多位以更好地表示更小的小数,而 bfloat16 无法很好地表示小数部分。

但为什么不用 float32?我们就用 float32 吧!但不幸的是,GPU 上的 float32 在矩阵乘法上非常慢 —— 有时慢 4 到 10 倍!所以我们无法这样做。

最后更新于

这有帮助吗?