mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
4866 字
14 分钟
Gemini:Google 多模态大模型
2025-02-01

2023 年 12 月,Google 正式发布 Gemini,一个从设计之初就面向多模态的大模型。和之前将视觉模块「嫁接」到语言模型上的做法不同,Gemini 让文本、图像、音频、视频在同一个 Transformer 中联合训练,实现了真正的多模态原生理解。

本文要点#

  • Gemini 的多模态原生架构设计
  • 三种规模的模型规格与定位
  • TPU v5 训练基础设施与优化策略
  • Gemini 1.5 的百万 token 上下文突破
  • 与 GPT-4V 的架构和性能对比
  • Gemini 的安全对齐与实际部署

一、多模态原生架构#

1.1 为什么需要「原生」多模态#

在 Gemini 之前,主流的多模态方案是「拼接式」的:先用 CLIP 或 Vision Transformer 把图像编码成向量,再通过投影层映射到语言模型的 embedding 空间。这种方式有几个问题:

  • 图像信息在映射过程中会丢失空间关系
  • 视觉和语言模块分别预训练,无法实现深层语义对齐
  • 新增模态需要额外的适配器训练

Gemini 的思路不同:从预训练阶段就让所有模态共享同一个 Transformer,图像、音频、视频 token 和文本 token 在同一个注意力层中交互。

flowchart TB subgraph 拼接式方案 A1["图像"] --> B1["ViT 编码器"] B1 --> C1["投影层"] C1 --> D1["LLM"] A2["文本"] --> D1 end subgraph Gemini 原生方案 E1["图像 Token"] --> F1["统一 Transformer"] E2["文本 Token"] --> F1 E3["音频 Token"] --> F1 E4["视频 Token"] --> F1 F1 --> G1["多模态表示"] end D1 -->|"升级"| F1

1.2 模态编码方式#

Gemini 对不同模态采用不同的 token 化策略:

模态编码方式Token 消耗
文本SentencePiece 分词(32K 词表)1 token ≈ 0.7 词
图像ViT 编码 + 空间池化每张图约 256 token
音频通用语音模型编码1 秒音频 ≈ 4 token
视频逐帧图像编码 + 时间位置编码每秒 1-2 帧

图像编码的关键设计:Gemini 没有使用固定分辨率的图像输入,而是支持可变分辨率。图像被分割为不同大小的 patch,每个 patch 通过 ViT 编码后与文本 token 拼接。这种设计让模型能同时处理缩略图和高分辨率照片。

1.3 视频理解机制#

Gemini 的视频理解不是简单的「逐帧分析」,而是引入了时间维度建模:

# Gemini 视频处理流程(简化)
def encode_video(video_frames, fps=1):
"""将视频编码为多模态 token 序列"""
tokens = []
for i, frame in enumerate(video_frames):
# 每帧编码为图像 token
frame_tokens = image_encoder(frame) # [1, 256, d]
# 添加时间位置编码
time_pos = temporal_position_encoding(i, fps)
frame_tokens = frame_tokens + time_pos
tokens.append(frame_tokens)
# 拼接为完整视频序列
return torch.cat(tokens, dim=1) # [1, num_frames*256, d]

时间位置编码让 Transformer 区分视频帧的前后顺序,从而理解动作的先后关系、因果逻辑。这是 Gemini 能回答「视频中的人先做了什么再做了什么」这类问题的关键。

1.4 多模态联合训练目标#

Gemini 的多模态训练不是简单地将不同模态的损失函数相加,而是设计了统一的训练目标,让所有模态在同一个优化过程中共同进步。

# Gemini 多模态联合训练目标(简化)
def gemini_training_loss(multimodal_batch, model):
total_loss = 0.0
for sample in multimodal_batch:
# 统一 token 序列(文本 + 图像 + 音频)
tokens = sample["tokens"] # 混合模态 token
modality_mask = sample["mask"] # 标记每个 token 的模态
# 前向传播:所有模态共享同一个 Transformer
logits = model(tokens[:, :-1])
# 下一个 token 预测损失(统一目标)
loss = cross_entropy(logits, tokens[:, 1:])
# 可选:对不同模态施加不同的损失权重
# 图像 token 的预测通常更难,可以适当提高权重
loss = apply_modality_weights(loss, modality_mask[:, 1:])
total_loss += loss
return total_loss / len(multimodal_batch)

关键设计决策:

统一下一个 token 预测:Gemini 没有为不同模态设计独立的损失函数,而是让所有模态都参与下一个 token 预测。这意味着模型不仅要预测「下一个词是什么」,还要预测「下一个图像 patch 是什么」「下一个音频片段是什么」。这种统一的训练目标让不同模态的表示自然对齐。

模态交错训练:训练数据不是按模态分批的(先训文本、再训图像),而是将文本、图像、音频 token 混合在同一条样本中。一条训练样本可能是「文字描述 + 产品图片 + 用户语音评论」的组合。这迫使模型在注意力层中学习跨模态的语义关联。

图像 token 的掩码策略:对于图像 token,Gemini 可能采用了块级掩码(block masking),而不是逐 token 掩码。一张 256 token 的图像,可以按 16x16 的 patch 块进行掩码预测,减少计算量的同时保留空间结构信息。

flowchart TB subgraph Gemini 联合训练 A["文本: '这张图展示了'"] --> D["统一 Transformer"] B["图像: 256 tokens"] --> D C["音频: 128 tokens"] --> D D --> E["下一个 Token 预测"] E --> F["'一座' | patch_47 | audio_23"] end

这种设计的优势在于,模型不需要额外的跨模态对齐阶段。传统方案中,视觉编码器和语言模型分别训练后,需要一个「对齐微调」阶段让两者的表示空间协调。Gemini 跳过了这个步骤,因为在预训练阶段两种模态已经在同一参数空间中学习。

二、模型规格#

2.1 三种规模#

Gemini 1.0 发布时提供三个版本,覆盖从设备端到数据中心的全部场景:

版本参数量上下文长度训练硬件典型场景
Gemini Ultra~1.5T32KTPU v5复杂推理、多模态分析
Gemini Pro~100B32KTPU v5通用对话、API 服务
Gemini Nano 11.8B32K端侧手机端实时推理
Gemini Nano 23.25B32K端侧更高精度的端侧任务
flowchart TB subgraph Gemini 1.0 模型家族 A["Ultra ~1.5T<br>最强性能"] --> A1["数据中心部署<br>复杂推理任务"] B["Pro ~100B<br>平衡性能"] --> B1["云端 API 服务<br>Google AI Studio"] C["Nano 1.8B/3.25B<br>端侧部署"] --> C1["Pixel 手机<br>Android 系统 AI"] end

Nano 版本的设计理念值得关注。Google 不是简单缩小模型,而是通过知识蒸馏从 Ultra 模型中提取能力,同时优化 Transformer 层数和注意力头数以适配移动端内存限制。Nano 1.8B 可以在 4GB 内存的设备上运行。

2.2 架构细节#

虽然 Google 没有公开完整的架构参数,但从论文和后续信息可以推断:

# Gemini Ultra 推测架构参数
gemini_ultra_config = {
"num_layers": 64, # Transformer 层数
"hidden_size": 18432, # 隐藏维度
"num_attention_heads": 48, # 注意力头数
"num_kv_heads": 8, # GQA 的 KV 头数
"head_dim": 256, # 每头维度
"intermediate_size": 73728, # FFN 中间维度
"vocab_size": 32000, # 词表大小
"max_position_embeddings": 32768, # 最大上下文
"activation": "SwiGLU", # 激活函数
}

Gemini 使用了 GQA(Grouped Query Attention),KV 头数远少于查询头数,这在推理时大幅降低 KV Cache 的内存占用。SwiGLU 激活函数在 LLaMA 和 PaLM 2 中已被验证优于标准 ReLU。

三、训练基础设施#

3.1 TPU v5 集群#

Gemini 在 Google 自研的 TPU v5 上训练。TPU v5 的核心优势在于高带宽互联(ICI),可以让数千个芯片协同训练一个模型:

特性TPU v5TPU v4
峰值算力 (BF16)197 TFLOPS275 TFLOPS (稀疏)
芯片间互联带宽4.8 Tbps3.2 Tbps
内存容量95 GB HBM32 GB HBM

更大的片上内存意味着可以放下更多的模型参数,减少跨芯片通信。这对 Ultra 级别的大模型训练至关重要。

3.2 并行策略#

训练 1.5T 参数的模型需要精心设计的并行策略:

# Gemini 训练并行配置
training_config = {
"data_parallelism": 64, # 数据并行
"model_parallelism": 16, # 张量并行(层内切分)
"pipeline_parallelism": 8, # 流水线并行(层间切分)
"total_chips": 64 * 16 * 8, # = 8192 TPU v5
"mixed_precision": "BF16", # 主训练精度
"gradient_accumulation": 4, # 梯度累积步数
}

混合精度训练策略:

  • BF16 用于矩阵乘法和注意力计算
  • FP32 用于梯度归约和优化器状态
  • 选择性使用 FP8 对部分卷积操作加速

3.3 训练数据#

Gemini 的训练数据涵盖多种模态和语言:

# Gemini 训练数据组成(推测)
data_composition = {
"网页文本": "约 50%(多语言)",
"代码": "约 15%(GitHub + 代码文档)",
"图像": "约 15%(网页图像 + 标注数据集)",
"音频": "约 5%(语音 + 音乐)",
"视频": "约 5%(YouTube 片段 + 描述)",
"书籍/论文": "约 10%(学术文献 + 电子书)",
}
total_tokens = "~4T tokens(含多模态 token)"
languages = "100+ 语言,英语、中文、日语、韩语为主"

多模态数据的关键处理:图像和视频不是单独训练的,而是与描述文本配对后一起输入模型。这种配对数据让模型学习视觉和语言的对应关系,而不是事后对齐。

3.4 数据质量与过滤管道#

训练数据的质量直接决定模型的上限。Gemini 的数据管道涉及多层过滤和质量控制:

flowchart TB subgraph Gemini 数据管道 A["原始数据源<br>网页/书籍/代码/图像"] --> B["第一层:格式清洗"] B --> C["第二层:质量评分"] C --> D["第三层:安全过滤"] D --> E["第四层:去重"] E --> F["第五层:模态配对验证"] F --> G["高质量训练数据"] end

去重策略:Gemini 采用了多级去重。URL 级别去重移除完全相同的网页,段落级 MinHash 去重去除近似重复内容,文档级嵌入去重消除语义高度相似的文本。论文实验表明,去重可以减少约 30% 的训练数据,同时提升模型的泛化能力,因为模型不再记忆重复内容。

质量评分:使用一个轻量级分类器对每条训练样本打分。评分维度包括:信息密度、事实准确性、语言流畅度。低分样本被过滤掉。对于代码数据,额外评估代码的可执行性和测试覆盖率。

多模态配对验证:图文配对数据需要验证图像描述是否真正对应图像内容。Gemini 使用 CLIP 模型计算图像和文本的相似度,过滤掉相似度低于阈值的配对。这一步确保模型不会从错误的图文关联中学到错误的映射。

安全过滤:移除包含仇恨言论、暴力内容、个人身份信息(PII)的数据。PII 检测使用了专门的命名实体识别模型,覆盖姓名、地址、电话号码、邮箱等多种类型。

四、基准测试与能力#

4.1 文本理解#

Gemini Ultra 在纯文本基准上与 GPT-4 正面竞争:

基准GPT-4Gemini UltraClaude 2
MMLU86.4%90.0%78.5%
MATH42.5%53.2%-
GSM8K92.0%94.4%88.0%
HumanEval67.0%74.4%56.0%
Hellaswag95.3%87.8%85.2%

在 MMLU 和数学推理上,Gemini Ultra 超过了 GPT-4。但 Hellaswag 等常识推理基准上仍有差距,说明不同模型的「智力分布」各有所长。

4.2 多模态基准#

Gemini 的核心优势在多模态理解:

基准模态GPT-4VGemini Ultra
MMMU图文推理56.8%62.4%
VQAv2视觉问答77.2%79.0%
DocVQA文档理解88.4%90.9%
ChartQA图表推理78.1%80.8%
AI2D科学图表78.2%82.3%

文档理解(DocVQA)和图表推理(ChartQA)是 Gemini 的强项,这和训练数据中大量图文配对数据直接相关。模型能理解图表的坐标轴、图例和数据趋势,而不只是描述图表的外观。

4.3 多语言能力#

Gemini 在多语言基准上表现出色:

语言MMLU 得分翻译质量
英语90.0%基准
中文83.5%接近专业翻译
日语80.2%高质量
韩语79.8%高质量
法语85.1%接近专业翻译

多语言能力得益于训练数据中非英语内容的高比例,以及 Google 在翻译领域的长期积累。

五、Gemini 1.5:百万 token 上下文#

5.1 MoE 架构#

2024 年 5 月发布的 Gemini 1.5 Pro 采用了 Mixture of Experts(MoE)架构,这是实现百万 token 上下文的关键:

flowchart TB subgraph Gemini 1.5 MoE 架构 A["输入 Token"] --> B["Router 路由"] B -->|"Expert 1"| C1["FFN Expert 1"] B -->|"Expert 2"| C2["FFN Expert 2"] B -->|"Expert 8"| C8["FFN Expert 8"] C1 --> D["加权合并"] C2 --> D C8 --> D end

MoE 的优势在于:每次前向传播只激活部分 Expert,总参数量大但计算量可控。Gemini 1.5 Pro 的总参数量可能超过 1T,但每个 token 只激活约 10% 的参数。

5.2 百万 token 的技术实现#

实现 1M token 上下文需要解决三个核心问题:内存、计算和位置编码。

内存优化:1M token 的 KV Cache 需要约 64GB 内存(以 100B 模型、BF16 精度估算)。Gemini 使用 GQA 将 KV 头数压缩到 8 个,同时采用分页注意力(Paged Attention)管理 KV Cache 内存。

计算优化:标准注意力的计算复杂度是 O(n²),1M token 的注意力矩阵需要 10¹² 次运算。Gemini 可能采用了稀疏注意力和滑动窗口注意力的组合:

# 长上下文注意力策略
def long_context_attention(query, key, value, window=4096):
# 1. 滑动窗口注意力(局部上下文)
local_attn = sliding_window_attention(query, key, value, window)
# 2. 全局注意力(稀疏采样关键位置)
global_keys = sparse_sample(key, ratio=0.01) # 采样 1%
global_attn = standard_attention(query, global_keys, value)
# 3. 融合局部和全局表示
return merge(local_attn, global_attn)

位置编码:RoPE 位置编码在长序列上会退化。Gemini 可能采用了动态位置插值或 YaRN 扩展方法,让模型在 1M token 上仍能区分不同位置。

5.3 Needle-in-a-Haystack 测试#

Gemini 1.5 Pro 的长上下文能力通过了 Needle-in-a-Haystack 测试:在 1M token 的文本中随机插入一条信息,模型能以 99% 以上的准确率找到并回忆这条信息。这个表现优于 GPT-4 Turbo 在 128K 上下文上的表现。

实际意义:1M token 相当于同时处理约 7000 页文档、1 小时视频或 11 小时音频。用户可以把整个代码库或整本书丢给模型,不需要预先切分和检索。

六、与 GPT-4V 对比#

6.1 架构差异#

维度GPT-4VGemini
图像处理独立 ViT + 投影层原生多模态 Transformer
训练方式视觉和语言分别预训练后融合多模态联合预训练
上下文长度128K (GPT-4 Turbo)32K → 1M (1.5 Pro)
推理硬件NVIDIA GPUGoogle TPU
模型规模~1.8T (推测)~1.5T (Ultra)

核心区别在于「拼接」vs「原生」。GPT-4V 的视觉能力来自后期融合(post-hoc fusion),而 Gemini 从预训练阶段就让视觉和语言在同一参数空间中学习。理论上,原生方案能学到更深的跨模态表示。

6.2 各有所长#

任务类型GPT-4VGemini Ultra
复杂逻辑推理略强
代码生成
多语言
文档理解更强
长上下文极强
实时多模态交互

GPT-4V 在代码生成上仍然领先,这可能和 OpenAI 在代码训练数据上的积累有关。Gemini 在长上下文和多模态理解上的优势来自架构设计。

七、安全对齐#

7.1 对齐方法#

Gemini 的安全对齐采用了多层次的策略:

flowchart TB subgraph Gemini 安全对齐流程 A["预训练数据过滤"] --> B["SFT 监督微调"] B --> C["RLHF 人类反馈"] C --> D["红队测试"] D --> E["安全分类器"] end
  • 预训练过滤:移除有害内容、个人信息和低质量数据
  • RLHF:训练奖励模型对安全和不安全的回复打分
  • 红队测试:专门团队尝试让模型产生有害输出,发现并修补漏洞
  • 安全分类器:在推理时实时检测输入和输出的安全风险

7.2 多模态安全#

多模态模型面临独特的安全挑战:图像中可能包含不当内容,而模型需要在理解图像语义的同时遵守安全规则。Gemini 在图像输入端和文本输出端都设置了安全过滤器。

7.3 红队测试与对抗评估#

Google 为 Gemini 组建了专门的红队(Red Team),由安全研究人员、领域专家和外部合作者组成,系统性地测试模型的安全边界。

红队测试覆盖的关键维度:

维度测试内容示例攻击策略
有害内容生成诱导模型生成暴力、歧视性内容角色扮演绕过、多轮对话渐进诱导
隐私泄露试图让模型输出训练数据中的个人信息补全式提问、前缀引导
多模态越狱通过图像编码隐藏恶意指令图像中嵌入文字提示、QR 码攻击
代码安全生成恶意代码或攻击脚本将恶意意图包装为安全研究
事实性错误诱导模型生成看似可信的错误信息假设性前提引导

多模态越狱是 Gemini 独有的挑战。攻击者可以将文字指令嵌入图像中(例如在白色背景上写黑色文字),或者利用图像的视觉特征触发模型的不安全行为。Gemini 的防御策略包括:OCR 预处理(检测图像中的文字内容)、图像语义分析(识别可能含有恶意意图的视觉模式),以及多模态一致性检查(确保模型对图像的理解和生成的回复不冲突)。

八、实际部署与应用#

8.1 Google 产品集成#

Gemini 已经深入 Google 的产品矩阵:

产品使用版本功能
Google Search (AI Overview)Gemini Pro搜索摘要生成
Gemini (原 Bard)Gemini Pro / Ultra对话 AI
Pixel 8 ProGemini Nano端侧智能回复、录音摘要
Android 14Gemini Nano系统级 AI 功能
Google WorkspaceGemini ProGmail、Docs、Sheets AI 助手

Pixel 手机上的 Nano 模型是端侧 AI 的标杆:1.8B 参数的模型可以在手机 SoC 上以 20 tokens/秒的速度运行,实现 Gboard 智能回复和 Recorder 应用摘要。

8.2 API 使用#

import google.generativeai as genai
# 文本 + 图像输入
model = genai.GenerativeModel('gemini-1.5-pro')
# 多模态输入
response = model.generate_content([
"详细分析这张图表中的数据趋势",
genai.Image.upload_from_path("chart.png")
])
# 长上下文处理
doc = open("paper.pdf", "rb").read()
response = model.generate_content([
"总结这篇论文的核心贡献和方法",
genai.FileData(mime_type="application/pdf", data=doc)
])

Gemini API 的独特功能是直接上传文件(PDF、图片、视频、音频),不需要预先转换为文本。这体现了多模态原生的设计理念。

8.3 Gemma:Gemini 技术的开源延伸#

2024 年 2 月,Google 发布了 Gemma 系列开源模型,基于 Gemini 的技术和训练基础设施构建,但以开源形式提供给社区:

模型参数量上下文长度特点
Gemma 2B2B8K轻量级,适合端侧部署
Gemma 7B7B8K通用开源模型
Gemma 2 2B2B8K第二代,性能大幅提升
Gemma 2 9B9B8K对标 LLaMA 3 8B
Gemma 2 27B27B8K开源旗舰,接近闭源水平

Gemma 的架构和训练方法继承了 Gemini 的核心设计:GQA 注意力、SwiGLU 激活函数、RMSNorm 归一化。但训练数据规模远小于 Gemini,约 2T tokens(Gemma 2 为 8T),且不包含多模态数据。

flowchart TB subgraph Gemini → Gemma 技术传承 A["Gemini 技术"] --> B["GQA 注意力"] A --> C["SwiGLU + RMSNorm"] A --> D["训练数据管道"] A --> E["TPU 训练基础设施"] B --> F["Gemma 模型"] C --> F D --> F end subgraph 差异 G["Gemini: 闭源<br>多模态<br>1.5T 参数"] H["Gemma: 开源<br>纯文本<br>2B-27B 参数"] end

Gemma 的意义在于,它让研究者和开发者能在本地运行和微调基于 Gemini 技术的模型,降低了使用门槛。Gemma 2 27B 在 MMLU 上达到 75.2%,接近 GPT-3.5 的水平,是同等规模开源模型中的佼佼者。

九、版本演进#

版本发布时间核心升级
Gemini 1.02023.12初始多模态能力
Gemini 1.5 Pro2024.05MoE 架构、1M 上下文
Gemini 1.5 Flash2024.05轻量高速版本
Gemini 2.0 Flash2024.12Agent 原生能力
Gemini 2.0 Pro2024.12更强推理
Gemini 2.5 Pro2025.02思考模型(Extended Thinking)
flowchart LR A["Gemini 1.0<br>2023.12"] --> B["Gemini 1.5<br>2024.05<br>MoE + 1M 上下文"] B --> C["Gemini 2.0<br>2024.12<br>Agent 原生"] C --> D["Gemini 2.5<br>2025.02<br>思考模型"] style B fill:#4caf50,color:#fff

从 1.0 到 2.5 的发展轨迹清晰地展示了 Google 的战略:先用 1.0 验证多模态原生架构,用 1.5 突破上下文长度瓶颈,再用 2.0 走向 Agent 和工具调用,最终在 2.5 引入类似 o1 的深度推理能力。

常见问题 FAQ#

Q1:Gemini 和 GPT-4 谁更好?

没有简单答案。在多模态理解和长上下文上 Gemini 更强,在代码生成和复杂逻辑推理上 GPT-4 仍有优势。选择取决于具体应用场景。

Q2:Gemini 的 1M 上下文实际能用吗?

可以。Gemini 1.5 Pro 的 Needle-in-a-Haystack 测试显示在 1M token 范围内信息检索准确率超过 99%。但 1M 上下文的推理成本和延迟都较高,日常使用建议根据实际需要选择上下文长度。

Q3:Nano 模型能做什么?

1.8B 参数的 Nano 可以处理智能回复、文本摘要、简单问答等任务。它不能处理复杂的推理和长文档,但在端侧实时场景下表现出色。

Q4:Gemini 是开源的吗?

不是。Gemini 的模型权重不开放,但提供 API 访问。Google 基于 Gemini 技术发布了开源的 Gemma 系列模型(2B/7B)。


小结#

Gemini 代表了 Google 在 LLM 领域的全面反击。

flowchart TB subgraph Gemini 的核心贡献 A["多模态原生"] --> A1["联合预训练<br>深层跨模态对齐"] B["超长上下文"] --> B1["1M token<br>超越检索式方案"] C["全场景覆盖"] --> C1["Ultra/Pro/Nano<br>云端到端侧"] D["Google 生态"] --> D1["Search/Workspace/Android<br>深度集成"] end

核心认识:Gemini 的多模态原生架构证明了一件事,把视觉、听觉和语言能力从预训练阶段就统一学习,比事后拼接的方案更高效也更强大。这个思路正在影响整个行业,包括 GPT-4o 和 Claude 3 的多模态设计。


参考资料#

支持与分享

如果这篇文章对你有帮助,欢迎支持作者或分享给更多人

Gemini:Google 多模态大模型
https://blog.souloss.com/posts/machine-learning/llm-paper-history/gemini-multimodal-model/
作者
Souloss
发布于
2025-02-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时