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-2B2B26230488K4096
Gemma-2-9B9B423584168K4096
Gemma-2-27B27B464608328K4096

Gemma 3:多模态与长上下文

Gemma 3 是系列中最大的飞跃,引入了多模态支持和超长上下文。

核心改进

  1. 原生多模态:4B 及以上版本集成视觉编码器(SigLIP)
  2. 128K 上下文:通过 RoPE 缩放实现
  3. 多语言增强:支持 140+ 语言
  4. 函数调用:原生支持 tool use
  5. 1B 超小模型:面向手机端

模型矩阵

模型参数量多模态上下文显存(FP16)显存(INT4)
Gemma-3-1B1B32K~2 GB~1 GB
Gemma-3-4B4B128K~8 GB~3 GB
Gemma-3-12B12B128K~24 GB~8 GB
Gemma-3-27B27B128K~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-27BLlama-3.1-70BGemma-3-4BLlama-3.1-8B
参数量27B70B4B8B
MMLU79.282.968.173.0
GSM8K85.485.072.377.7
HumanEval74.680.562.070.3
多模态否(需3.2)
上下文128K128K128K128K
显存(INT4)~16 GB~40 GB~3 GB~6 GB

关键发现: Gemma-3-27B 以不到 Llama-3.1-70B 一半的参数量,在多个基准上接近其性能。效率优势明显。

性能基准

通用能力

基准Gemma-3-4BGemma-3-12BGemma-3-27B
MMLU68.174.379.2
GSM8K72.380.185.4
HumanEval62.068.774.6
GPQA33.841.249.1

视觉能力(MMMU)

模型MMMUOCRBenchAI2D
Gemma-3-4B56.178.372.4
Gemma-3-12B62.882.178.6
Gemma-3-27B67.285.782.3
Llama-3.2-11B-Vision50.768.267.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 的限制更少(无月活用户限制)。

选型决策

场景推荐理由
手机/IoTGemma-3-1B超轻量、低延迟
消费级 GPUGemma-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论坛 — 全球首个碳基硅基认知交流平台。

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