Gemma 系列概览
Gemma 是 Google 基于 Gemini 技术推出的开源轻量级模型系列。与 Gemini 的闭源 API 不同,Gemma 面向开源社区,权重可下载、可本地部署、可商用。其定位是"开发者友好的 Gemini 同源技术"。
产品线演进
Gemma 1 (2024.02) Gemma 2 (2024.06) Gemma 3 (2025.03)
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 2B / 7B │ │ 2B / 9B / 27B│ │ 1B / 4B │
│ 文本 only │───→ │ 文本 only │───→ │ 12B / 27B │
│ 8K 上下文 │ │ 8K 上下文 │ │ 多模态(视觉) │
│ Gemma 许可 │ │ GQA 引入 │ │ 128K 上下文 │
└──────────────┘ └──────────────┘ └──────────────┘
Gemma 2 架构
Gemma 2 引入了多项与 Gemini 同源的架构改进:
关键创新
Sliding Window Attention(SWA):局部+全局注意力交替
- 奇数层使用 SWA(窗口大小 4096)
- 偶数层使用全局注意力
- 在保持长序列性能的同时降低计算复杂度
Logit Soft-Capping:防止注意力 logits 爆炸
# Gemma 2 的 soft-capping 机制 def soft_cap(logits, cap=50.0): return cap * torch.tanh(logits / cap) # 应用于 attention logits 和 final logits # 稳定训练,改善量化兼容性Knowledge Distillation:从更大模型蒸馏训练
规格对比
| 模型 | 参数量 | 层数 | 隐藏维度 | 注意力头数 | 上下文 | SWA窗口 |
|---|---|---|---|---|---|---|
| Gemma-2-2B | 2B | 26 | 2304 | 8 | 8K | 4096 |
| Gemma-2-9B | 9B | 42 | 3584 | 16 | 8K | 4096 |
| Gemma-2-27B | 27B | 46 | 4608 | 32 | 8K | 4096 |
Gemma 3:多模态与长上下文
Gemma 3 是系列中最大的飞跃,引入了多模态支持和超长上下文。
核心改进
- 原生多模态:4B 及以上版本集成视觉编码器(SigLIP)
- 128K 上下文:通过 RoPE 缩放实现
- 多语言增强:支持 140+ 语言
- 函数调用:原生支持 tool use
- 1B 超小模型:面向手机端
模型矩阵
| 模型 | 参数量 | 多模态 | 上下文 | 显存(FP16) | 显存(INT4) |
|---|---|---|---|---|---|
| Gemma-3-1B | 1B | 否 | 32K | ~2 GB | ~1 GB |
| Gemma-3-4B | 4B | 是 | 128K | ~8 GB | ~3 GB |
| Gemma-3-12B | 12B | 是 | 128K | ~24 GB | ~8 GB |
| Gemma-3-27B | 27B | 是 | 128K | ~54 GB | ~16 GB |
多模态架构
# Gemma 3 多模态前向传播示意
class Gemma3Multimodal(nn.Module):
def __init__(self, text_model, vision_encoder):
self.text_model = text_model
self.vision_encoder = vision_encoder # SigLIP-L/16
self.mm_projector = nn.Sequential(
nn.Linear(vision_dim, text_dim),
nn.GELU(),
nn.Linear(text_dim, text_dim)
)
def forward(self, images, input_ids):
# 1. 视觉编码
image_features = self.vision_encoder(images)
# 2. 投影到文本空间
image_embeds = self.mm_projector(image_features)
# 3. 替换 <image> 占位符 token
text_embeds = self.text_model.embed_tokens(input_ids)
# 将 image_embeds 插入到占位符位置
final_embeds = merge_embeddings(text_embeds, image_embeds, input_ids)
# 4. 文本模型处理
return self.text_model(inputs_embeds=final_embeds)
与 Llama 对比
| 维度 | Gemma-3-27B | Llama-3.1-70B | Gemma-3-4B | Llama-3.1-8B |
|---|---|---|---|---|
| 参数量 | 27B | 70B | 4B | 8B |
| MMLU | 79.2 | 82.9 | 68.1 | 73.0 |
| GSM8K | 85.4 | 85.0 | 72.3 | 77.7 |
| HumanEval | 74.6 | 80.5 | 62.0 | 70.3 |
| 多模态 | 是 | 否(需3.2) | 是 | 否 |
| 上下文 | 128K | 128K | 128K | 128K |
| 显存(INT4) | ~16 GB | ~40 GB | ~3 GB | ~6 GB |
关键发现: Gemma-3-27B 以不到 Llama-3.1-70B 一半的参数量,在多个基准上接近其性能。效率优势明显。
性能基准
通用能力
| 基准 | Gemma-3-4B | Gemma-3-12B | Gemma-3-27B |
|---|---|---|---|
| MMLU | 68.1 | 74.3 | 79.2 |
| GSM8K | 72.3 | 80.1 | 85.4 |
| HumanEval | 62.0 | 68.7 | 74.6 |
| GPQA | 33.8 | 41.2 | 49.1 |
视觉能力(MMMU)
| 模型 | MMMU | OCRBench | AI2D |
|---|---|---|---|
| Gemma-3-4B | 56.1 | 78.3 | 72.4 |
| Gemma-3-12B | 62.8 | 82.1 | 78.6 |
| Gemma-3-27B | 67.2 | 85.7 | 82.3 |
| Llama-3.2-11B-Vision | 50.7 | 68.2 | 67.1 |
Gemma 3 在视觉任务上显著优于同级别的 Llama 3.2 Vision。
部署方案
Ollama 一键部署
# 1B 模型(手机/树莓派级别)
ollama run gemma3:1b
# 4B 模型(消费级 GPU)
ollama run gemma3:4b
# 12B 模型(高端 GPU)
ollama run gemma3:12b
# 27B 模型(工作站)
ollama run gemma3:27b
vLLM 部署(生产环境)
python -m vllm.entrypoints.openai.api_server \
--model google/gemma-3-27b-it \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.9 \
--max-model-len 131072 \
--trust-remote-code \
--port 8000
Hugging Face Transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "google/gemma-3-4b-it"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# 多模态推理
from PIL import Image
image = Image.open("chart.png")
inputs = tokenizer(
text="描述这张图片的内容",
images=image,
return_tensors="pt"
).to(model.device)
output = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(output[0], skip_special_tokens=True))
边缘部署(MLC)
# 使用 MLC LLM 在手机上部署 Gemma 3 1B
# Android 示例
from mlc_llm import MLCEngine
engine = MLCEngine(
model="gemma-3-1b-q4f16-1",
model_lib="path/to/gemma-3-1b-q4f16-1-android.so"
)
response = engine.chat.completions.create(
messages=[{"role": "user", "content": "你好"}]
)
许可证
Gemma 使用 Gemma Terms of Use(基于 Apache 2.0 修改):
- ✅ 商用允许
- ✅ 修改允许
- ✅ 分发允许
- ⚠️ 需要遵守 Gemma 的 Acceptable Use Policy
- ⚠️ Google 保留品牌限制(不能叫 “Gemma” 作为产品名)
与 Llama 的 Community License 相比,Gemma 的限制更少(无月活用户限制)。
选型决策
| 场景 | 推荐 | 理由 |
|---|---|---|
| 手机/IoT | Gemma-3-1B | 超轻量、低延迟 |
| 消费级 GPU | Gemma-3-4B | 多模态、128K 上下文 |
| 工作站 | Gemma-3-12B | 性能/显存比优秀 |
| 服务器 | Gemma-3-27B | 接近 70B 模型性能 |
| 视觉任务 | Gemma-3-12B+ | SigLIP 编码器强 |
| 纯英文代码 | Llama 3.1 | 代码社区生态更好 |
总结
Google Gemma 系列以其出色的参数效率和多模态能力,在轻量级开源模型领域占据独特位置。Gemma 3 的 4B 模型可能是目前消费级硬件上最好的多模态开源模型。对于需要在 RTX 4090 上同时处理文本和图像的场景,Gemma-3-4B 是首选方案。许可证友好度也优于 Llama 系列,无月活限制使其更适合商业产品集成。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。
