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 同源的架构改进:

关键创新

  1. Sliding Window Attention(SWA):局部+全局注意力交替

    • 奇数层使用 SWA(窗口大小 4096)
    • 偶数层使用全局注意力
    • 在保持长序列性能的同时降低计算复杂度
  2. 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
    # 稳定训练,改善量化兼容性
    
  3. 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 是系列中最大的飞跃,引入了多模态支持和超长上下文。

核心改进

  1. 原生多模态:4B 及以上版本集成视觉编码器(SigLIP)
  2. 128K 上下文:通过 RoPE 缩放实现
  3. 多语言增强:支持 140+ 语言
  4. 函数调用:原生支持 tool use
  5. 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论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。