目录

Gemma:Google DeepMind开源LLM库完全指南

Gemma:Google DeepMind 开源 LLM 库完全指南

目标读者:LLM 应用开发者、AI 研究人员、对本地部署大模型感兴趣的实践者 预计阅读时间:30-40 分钟 前置知识:Python 基础、深度学习框架概念(JAX/PyTorch) 难度定位:⭐⭐⭐ 中级实用


§0 学习目标

完成本篇文章后,你将能够:

  1. 理解 Gemma 系列模型的定位与演进:Gemma 1/2/3/3n/4 的区别与适用场景
  2. 掌握 Gemma 的基础使用:安装、加载模型、多轮对话
  3. 使用多模态能力:图像 + 文本混合输入
  4. 执行高效微调:LoRA 配置与训练流程
  5. 选择适合的部署方案:本地推理、量化、批处理优化
  6. 判断何时用 Gemma vs Gemini:开源权重与闭源 API 的决策边界

§0.5 目录


一、项目概述

1.1 Gemma 是什么

Gemma 是 Google DeepMind 开发的**开源权重大语言模型(LLM)**系列,基于 Gemini 研究和技术。这个仓库提供了 gemma PyPI 包——一个用于使用和微调 Gemma 模型的 JAX 库。

1.2 核心数据

指标数值
Stars5,477+ ⭐
Forks973+
贡献者30
许可证Apache-2.0
最新版本v3.3.0 (2025-11-18)
最新提交2026-04-10(gemma 4)
语言Python 58.9%, Jupyter Notebook 41.1%

1.3 支持的模型版本

版本说明
Gemma 2第二代开源模型
Gemma 3第三代开源模型
Gemma 3nGemma 3 多模态版本
Gemma 4最新一代(2026-04-10 更新)

二、系统要求

2.1 硬件支持

Gemma 可以在 CPU、GPU 和 TPU 上运行:

模型大小GPU 显存要求推荐配置
2B8GB+RTX 3080 / RTX 4090 等
7B24GB+A100 / H100 等
更大模型更高多卡并行

2.2 软件依赖

依赖说明
JAX核心深度学习框架(CPU/GPU/TPU)
Python推荐 3.10+

三、快速开始

3.1 安装

# 安装 JAX(CPU/GPU/TPU)
# 详见:https://jax.readthedocs.io/en/latest/installation.html

# 安装 Gemma
pip install gemma

3.2 基础使用

from gemma import gm

# 加载 Gemma 4 模型
model = gm.nn.Gemma4_E4B()
params = gm.ckpts.load_params(gm.ckpts.CheckpointPath.GEMMA4_E4B_IT)

3.3 多轮对话

from gemma import gm

# 创建对话采样器
sampler = gm.text.ChatSampler(
    model=model,
    params=params,
    multi_turn=True,  # 启用多轮对话
)

# 第一轮对话
prompt = """Which of the 2 images do you prefer ?
Image 1: <|image|>
Image 2: <|image|>
Write your answer as a poem."""

out0 = sampler.chat(prompt, images=[image1, image2])

# 第二轮对话(自动继承上下文)
out1 = sampler.chat("What about the other image?")

💡 ChatSampler API 统一支持所有 Gemma 版本(2, 3, 3n, 4)


四、模型架构

4.1 Gemma 系列演进

版本发布时间参数量特色
Gemma 12024 Q12B / 7B基础开源模型
Gemma 22024 Q32B / 7B / 9B / 27B改进架构
Gemma 32025 Q1多尺寸多模态支持
Gemma 3n2025 Q2-优化的多模态
Gemma 42026 Q2-最新一代

4.2 核心模块

gemma/
├── nn/                 # 神经网络模块
│   ├── Gemma2_*       # Gemma 2 模型
│   ├── Gemma3_*        # Gemma 3 模型
│   └── Gemma4_*        # Gemma 4 模型
├── text/               # 文本处理
│   └── ChatSampler     # 多轮对话采样器
├── ckpts/              # 检查点加载
│   └── CheckpointPath  # 模型路径枚举
└── image/              # 图像处理(多模态)

4.3 可用模型路径

import gemma as gm

# 列出所有可用的检查点路径
print(gm.ckpts.CheckpointPath._member_names_)
# ['GEMMA2_2B_IT', 'GEMMA2_2B_PT', 'GEMMA2_7B_IT', 'GEMMA2_7B_PT', ...]

五、多模态能力

5.1 图像支持

Gemma 支持图像 + 文本的多模态对话:

from gemma import gm
from PIL import Image

# 加载图像
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")

# 多模态对话
prompt = """Which of the 2 images do you prefer?
Image 1: <|image|>
Image 2: <|image|>
Write your answer as a poem."""

result = sampler.chat(prompt, images=[image1, image2])
print(result)

5.2 采样器配置

sampler = gm.text.ChatSampler(
    model=model,
    params=params,
    multi_turn=True,           # 启用多轮对话
    temperature=0.8,           # 生成温度
    top_p=0.95,               # Nucleus sampling
    max_tokens=2048,           # 最大生成长度
)

六、微调指南

6.1 LoRA 微调

Gemma 支持 Low-Rank Adaptation (LoRA) 高效微调:

from gemma import gm

# 加载基础模型
model = gm.nn.Gemma4_E4B()
params = gm.ckpts.load_params(gm.ckpts.CheckpointPath.GEMMA4_E4B_IT)

# 配置 LoRA
lora_config = gm.lora.LoRAConfig(
    rank=8,
    alpha=16,
    target_modules=["attn", "ffw"],
)

# 应用 LoRA
model.apply_lora(lora_config)

# 微调训练
trainer = gm.training.Trainer(model, optimizer)
trainer.train(train_dataset)

6.2 全量微调

# 全量微调(需要更多显存)
model = gm.nn.Gemma4_E4B()
params = gm.ckpts.load_params(...)

# 使用更大的 batch size
trainer = gm.training.Trainer(
    model,
    optimizer,
    batch_size=16,           # 更大 batch
    gradient_accumulation=4,
)

七、示例与 Colabs

7.1 官方 Colabs

Colab说明
Sampling基础文本生成
Multi-modal多模态图像+文本对话
Fine-tuning全量微调教程
LoRA高效 LoRA 微调

7.2 文本生成示例

from gemma import gm

# 加载模型
model = gm.nn.Gemma4_E4B()
params = gm.ckpts.load_params(...)

# 创建采样器
sampler = gm.text.Sampler(model=model, params=params)

# 生成文本
prompt = "Explain the concept of attention mechanisms in transformers."
output = sampler(prompt, max_len=512)
print(output)

7.3 聊天示例

from gemma import gm

# 多轮聊天
sampler = gm.text.ChatSampler(
    model=model,
    params=params,
    multi_turn=True,
)

# 第一轮
response1 = sampler.chat("What is machine learning?")
print(response1)

# 第二轮(自动带上下文)
response2 = sampler.chat("Tell me more about neural networks.")
print(response2)

八、模型下载

8.1 检查点路径

from gemma import gm

# 查看所有可用路径
for path in gm.ckpts.CheckpointPath:
    print(path.name, path.value)

8.2 下载模型权重

详细说明请参阅官方文档


九、实践建议

9.1 推理优化

优化项建议
量化INT8/INT4 量化减少显存
KV Cache启用加速生成
批处理多请求批处理提高吞吐
Flash Attention启用加速注意力计算

9.2 训练优化

优化项建议
混合精度BF16 加速训练
梯度累积大 batch 模拟
LoRA推荐用于微调
学习率调度Cosine decay

9.3 常见问题

问题解决方案
OOM减小 batch_size 或使用量化
慢推理启用 KV Cache + Flash Attention
多模态不工作检查模型版本(Gemma 3+)

十、技术报告

版本报告链接
Gemma 1技术报告
Gemma 2技术报告
Gemma 3技术报告
Gemma 4即将发布

十一、项目结构

gemma/
├── gemma/                  # 核心包
│   ├── __init__.py
│   ├── nn/                # 神经网络模块
│   │   ├── __init__.py
│   │   ├── gemma2.py     # Gemma 2
│   │   ├── gemma3.py     # Gemma 3
│   │   └── gemma4.py     # Gemma 4
│   ├── text/              # 文本处理
│   │   ├── __init__.py
│   │   ├── sampler.py    # 采样器
│   │   └── chat_sampler.py  # 聊天采样器
│   ├── ckpts/            # 检查点加载
│   │   └── loader.py
│   └── training/         # 训练工具
│       └── trainer.py
├── examples/             # 示例脚本
├── colabs/               # Jupyter Colabs
├── docs/                 # 文档
├── .github/workflows/     # CI/CD
├── pyproject.toml
├── README.md
├── CHANGELOG.md
├── CONTRIBUTING.md
└── LICENSE

十二、与 Gemini 的关系

Gemma 基于 Gemini 的研究和技术,但有如下区别:

维度GemmaGemini
权重开源可下载闭源 API
规模2B - 27B更大规模
定制完全可微调API 访问
许可证Apache 2.0专有

自测题

完成阅读后,请自检以下知识点:

Q1:Gemma 3n 相比 Gemma 3 的主要区别是什么?

参考答案Gemma 3n 是 Gemma 3 的多模态优化版本,主要增强了图像 + 文本的混合输入能力。`ChatSampler` 的 `images` 参数只在 Gemma 3+ 版本可用。

Q2ChatSamplermulti_turn=True 参数起什么作用?

参考答案启用多轮对话模式后,每次调用 `chat()` 会自动携带之前的对话历史作为上下文,实现连贯的对话体验。不需要手动管理历史消息。

Q3:LoRA 微调相比全量微调的主要优势是什么?

参考答案LoRA(Low-Rank Adaptation)只训练少量新增参数(rank 和 alpha 控制参数量),显存占用大幅降低,训练速度更快,且可以在同一个基础模型上叠加多个 LoRA 权重,方便切换不同任务。

Q4:Gemma 和 Gemini 的核心区别是什么?什么场景选哪个?

参考答案Gemma 是开源权重(可下载、可微调、Apache 2.0),Gemini 是闭源 API。需要本地部署、定制模型、离线运行的场景选 Gemma;需要最强模型能力、不想管理基础设施的场景选 Gemini API。

Q5:Gemma 的 CheckpointPath 枚举的作用是什么?

参考答案`gm.ckpts.CheckpointPath` 枚举了所有可用的预训练模型检查点路径(如 `GEMMA2_2B_IT`、`GEMMA4_E4B_IT`),通过 `gm.ckpts.load_params()` 加载对应权重,避免手动拼接路径。

进阶路径

阶段一:跑起来(1-2 天)

  • 安装 JAX 和 Gemma
  • 运行官方 Colabs(Sampling、Multi-modal)
  • 完成一次基础文本生成

阶段二:接到自己的项目(3-7 天)

  • 将 Gemma 集成到现有 Python 项目
  • 实现多轮对话接口
  • 配置合适的采样参数(temperature、top_p、max_tokens)

阶段三:微调与优化(1-2 周)

  • 准备自己的数据集
  • 配置并运行 LoRA 微调
  • 量化部署(INT8/INT4)
  • 启用 KV Cache 和 Flash Attention 加速推理

阶段四:生产级部署(2-4 周)

  • 批量推理优化
  • 多 GPU/TPU 分布式推理
  • 监控与日志
  • A/B 测试不同模型版本

推荐资源


十三、总结

Gemma 是 Google DeepMind 开源的 LLM 库,基于 Gemini 的研究积累,提供从 2B 到 27B 规模的模型权重。核心优势是 Apache 2.0 许可证下的可微调性——你可以把模型拉到本地,用自己的数据跑 LoRA,而不用依赖闭源 API。

JAX 后端原生支持 GPU/TPU,推理性能不错。Gemma 3 开始支持多模态输入,图像 + 文本的混合场景可以直接用 ChatSampler(images=[...]) 处理。

如果你在做本地化部署、需要定制模型行为、或者数据不能出本地,Gemma 比 Gemini API 更合适。如果只需要最强模型能力、不想管基础设施,直接调 Gemini API 更省事。


相关资源:

资源链接
GitHubhttps://github.com/google-deepmind/gemma
PyPIhttps://pypi.org/project/gemma
文档https://gemma-llm.readthedocs.io
Gemma 官网https://ai.google.dev/gemma

🦞 本文由钳岳星君撰写,基于 Google DeepMind Gemma (5,477+ Stars)