找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5164

积分

1

好友

710

主题
发表于 昨天 18:53 | 查看: 21| 回复: 0

Google DeepMind 近日正式发布了 Gemma 4 模型家族。这个系列共包含四个不同规模的模型,旨在满足从云端到边缘设备的各种应用需求。

Gemma 4系列模型架构对比图

Gemma 4 家族的四名成员分别是:

  • Gemma 4 - E2B:一个包含“每层嵌入”的密集型模型,其有效参数量为 20 亿。
  • Gemma 4 - E4B:一个包含“每层嵌入”的密集型模型,其有效参数量为 40 亿。
  • Gemma 4 - 31B:一个拥有 310 亿参数的密集型模型。
  • Gemma 4 - 26B A4B:一个基于“专家混合”的模型,总参数量为 260 亿,但在推理时仅激活其中的 40 亿参数。

通过提供广泛的模型尺寸,你可以根据实际用例和硬件条件选择最合适的模型。

Gemma 4模型与推荐硬件对应表

这些模型主要采用两种架构:密集型(Dense)和专家混合型(Mixture-of-Experts, MoE)。

Gemma 4三种模型架构对比示意图

除了尺寸上的差异,所有 Gemma 4 模型都具备多模态能力,能够对输入的图像进行推理。它们经过训练,可以处理各种尺寸的图像。特别值得一提的是,小型模型(E2B/E4B)不仅支持图像和文本输入,还支持音频输入。

Gemma 4模型多模态输入配置对比图

在深入探讨不同型号和架构的细节之前,让我们先来了解所有 Gemma 4 模型的共同架构基础。

Gemma 4 的通用架构

Gemma 4 的架构在许多方面与 Gemma 3 系列相似,但也进行了一些关键性改进。以下是相比 Gemma 3,所有尺寸模型都做出的改变:

  • 交错层:最后一层始终是全局注意力层。
  • K=V:仅在全局注意力层中,将键设置为与值等价。
  • p-RoPE:对嵌入应用了低频剪枝的旋转位置编码。

当然,某些模型也有其独特之处(例如,只有小型模型使用了“每层嵌入”)。在介绍每个模型的具体细节前,我们先深入探讨它们的共同点。

交错层(局部与全局注意力)

与 Gemma 3 类似,Gemma 4 交错使用了局部注意力层(也称“滑动窗口注意力”)和全局注意力层(即常规的“完全注意力”)。

全局注意力中,每个词元会关注它之前的所有词元。而滑动窗口注意力则只关注限定窗口内的词元,这显著减少了计算完全注意力所需的算力。

全局注意力与滑动窗口注意力对比图

在实践中,这意味着当使用滑动窗口处理文本时,模型可能只看到整个序列的一部分。“滑动”指的是随着词元的不断生成,可见窗口在序列上持续移动。

滑动窗口注意力在序列处理中的应用示意图

通常会固定模型能“看到”的前序词元数量。对于 Gemma 4,小型模型(E2B/E4B)的滑动窗口为 512 个词元,大型模型(26B A4B/31B)则为 1024 个词元。

我们以一个滑动窗口为 4 个词元的例子,来观察每个词元生成时发生了什么:

滑动窗口注意力工作流程示例图

在这个例子中,注意力只给到了最后四个词元,在生成过程的某个时刻,它会开始“忽略”更早的词元。然而,它其实并没有忘记在之前步骤中计算出的表示。隐藏状态允许注意力信息通过注意力机制,从之前的层和步骤一直传递到当前词元。

多层滑动窗口注意力信息传递示意图

尽管信息可以通过堆叠滑动窗口来传播,但这并非完美的记忆或注意力机制。可以把它想象成“传话游戏”,信息每经过一层就会被稀释一些!

因此,与 Gemma 3 类似,局部注意力层和全局注意力层被交错使用,使得模型有时能关注整个序列,从而更好地捕获全局结构。

在 Gemma 3 中,这种交错通常是 4:1 的模式,即 4 层局部注意力后接 1 层全局注意力。但 Gemma 3 - 4B 有 34 层,这意味着它的最后一层是局部注意力而非全局注意力。Gemma 4 改变了这一点,确保最后一层总是全局注意力。

Gemma 3与Gemma 4在注意力层模式上的对比图

不过,4:1 的模式仅适用于 E2B 模型。其他变体都采用 5:1 的模式,即先有 5 层局部注意力,然后是 1 层全局注意力。我们可以通过并排可视化来展示这些模型的深度。

Gemma 4各型号模型层数与注意力模式对比图

需要注意的是,局部注意力层的上下文窗口从 1024 个词元减少到了 512 个,以进一步提升效率。

提升全局注意力的效率

交错使用局部和全局注意力是提升大语言模型效率的一种有趣方法,但这并非没有代价。全局注意力层仍需关注整个上下文,这是一个计算成本高且缓慢的过程。接下来,我们探讨 Gemma 4 为使这些全局注意力层更高效而使用的几种技巧。

分组查询注意力

与 Gemma 3 类似,这些模型使用了分组查询注意力,允许查询头共享键值对,从而减少了需要缓存的数据量。局部注意力层使用 GQA,每 2 个查询头共享 1 个 KV 头。

在 Gemma 4 中,全局注意力层通过让每 8 个查询头共享 1 个 KV 头来提升效率。这极大地减少了需要缓存的 KV 值,因为全局注意力本身(需要存储整个上下文)相比局部注意力层的小上下文就需要存储更多内容。

局部与全局注意力中分组查询配置对比图

减少每个头的键值数量可能会影响性能,为此,Gemma 4 将键的维度扩大了一倍作为补偿。

扩大键的维度确实会占用不少 KV 缓存空间,因此让我们看看另一个减少 KV 缓存的有趣技巧。

K=V

尽管分组查询注意力有所改进,但由于需要关注整个序列,全局注意力层仍会占用相当多的内存。将查询分组为 8 个有一定帮助,但为了效率还可以做得更多。

一个巧妙且对性能影响不大的技巧是,仅在全局注意力层中使用键等于值。实际上,这意味着所有键都与值等价,这进一步降低了 KV 缓存(或许更准确地说,是全局注意力层的 K 缓存)的内存需求。

全局注意力层中键与值等价示意图

p-RoPE(低频剪枝旋转位置编码)

大语言模型的一个关键组件是如何跟踪序列中单词的顺序。最常见的技术之一是旋转位置编码。RoPE 将查询和键向量切割成一对对的两个值。每一对现在可以被视为二维空间中的一个指向某个方向的向量。RoPE 以递减的速度为每一对值略微旋转这个方向。第一对的旋转幅度比最后一对大。这种旋转允许模型跟踪单词之间的相对距离。

RoPE旋转原理示意图

让我们仔细看看旋转一个查询嵌入会发生什么。它首先被切成一对对的两个值,随后每一对都被旋转。旋转的幅度随着每一对而变小。这被称为频率,高频意味着旋转幅度相当大,而低频则导致较小的旋转。

查询向量旋转过程示意图

高频对由于其最初被赋予的信息量(大旋转),对位置的微小变化非常敏感,非常适合跟踪单词的位置。然而,低频对被赋予的旋转非常轻微,几乎不在单词间移动。由于这些低频对只包含极少的位置信息,并且最接近原始的 KQ 值,它们更适合跟踪语义内容。因此,它们最忠实于其原始状态(不含位置信息)。

旋转信息随频率变化示意图

然而,事实证明,高频对已经包含了足够的位置信息。低频对只包含一点点位置信息,少到几乎没有意义。它甚至可能有害,因为模型倾向于使用低频对来获取语义信息,因此添加的位置信息只是噪声。此外,对于长上下文,小的旋转会累积起来,最终可能导致相距很远的词元变得错位,从而妨碍模型连接长序列中单词的能力。

一个优雅的解决方案是只对向量的部分维度应用 RoPE,这被称为 p-RoPE。如果 p 是 0.25,那么只有前 25% 的对获得位置信息,所有其他对都被设置为 0。这使得低频对能够保留语义。

部分旋转的p-RoPE示意图

Gemma 4 在全局注意力层上使用 p-RoPE,因为那里的上下文窗口比局部注意力层大得多。此外,p-RoPE 在全局注意力层中特别有用,因为大的上下文窗口可能导致模型以前从未见过的词元间距离。与局部注意力相比,全局注意力中所有可能的 RoPE 旋转空间相当大,通过限制旋转的数量,模型可以更好地处理大上下文。

当我们把所有改进放在一起时,就得到了应用于 全局注意力层 的以下优化:

  • 最后一层始终是全局注意力层。
  • 每 8 个查询共享一个键。
  • 键的维度扩大了一倍。
  • 键等于值。
  • 使用 p=0.25 的 p-RoPE。

Gemma 4全局注意力层优化汇总图

视觉编码器

Gemma 4 版本的一个重要组成部分是其多模态能力。所有变体都支持图像输入,并能处理可变的宽高比和分辨率!

实现这一点的核心是一个基于视觉 Transformer 的视觉编码器来处理图像。ViT 的工作原理与常规的大语言模型类似,它不是将文本分词成单词序列,而是将输入图像分割成一系列图像块。每个图像块(输入图像的一个子集)随后被送入一个 Transformer 模型,该模型为每个块输出一个嵌入向量。

ViT处理图像流程示意图

每个图像块是原始图像的一个片段,通常是 16x16 像素。原论文恰当地命名为“一张图像值 16x16 个单词:用于大规模图像识别的 Transformers”。

可变宽高比

ViT 假设原始图像是一个正方形,可以被分成 16x16 像素的块。然而,这种方法有一个缺点。当你处理图像块序列时,原始图像可能有各种不同的尺寸,特定图像块的位置(例如第 4 块)可能根据原始图像的比例意味着不同的事情。例如,如果我们假设原始图像总是一个 3x3 的图像块网格,那么第 4 块将总是在中间。然而,如果网格是动态的,例如可以是 2x4 块,那么第 4 块就不在中间了。

不同宽高比下图像块位置含义变化示意图

因此,应用 RoPE 不再那么简单,因为位置的含义(“第 4 块”)现在完全取决于原始图像的宽高比。

Gemma 4 应用的一项有趣技术是用 2D RoPE 取代 RoPE,它试图将图像块的二维位置信息注入到位置嵌入中,而不是将其视为一维的图像块序列。为此,首先将图像块的嵌入分成两个大小相等的部分。对嵌入的两个部分独立应用 RoPE,但现在使用宽度和高度来添加位置信息,而不是使用位置编号 m。这样,一半的嵌入现在包含关于其相对宽度位置的信息,另一半包含关于其相对高度位置的信息。

2D RoPE原理示意图

支持可变宽高比不仅需要 2D RoPE。例如,原始的 ViT 会调整输入图像的大小,使其成为正方形,以便处理的输入能很好地适应 16x16 像素的块。想象一下,你有一张宽幅图像,却要强行将其变成正方形……那看起来要么很奇怪,要么会裁剪掉大部分内容!

Gemma 4 通过自适应地调整输入图像的大小来支持不同的宽高比,同时仍支持 16x16 像素的块。为了保持原始的宽高比,它会在无法完美贴合 16x16 像素框时对图像进行填充。

固定与自适应调整图像尺寸的对比图

原始的 ViT 通常假设正方形有固定尺寸,因此总是返回固定数量的图像块(在我们的例子中是 9 块)。自适应调整大小方法返回可变数量的图像块,其数量可能迅速增长。因此,ViT 生成的图像块会根据它们的空间位置进行池化处理。彼此接近的图像块嵌入会被合并,直到剩下固定数量的图像块嵌入。

可变分辨率

虽然可变宽高比解决了一系列问题,但我们如何决定使用多少图像块呢?两张具有相同宽高比的图像可能具有不同的分辨率。想象你有两张宽高比都是 3:2 的图像,但一张的分辨率较低(272x176),另一张分辨率较高(544x352)。

一种方法是始终决定一个固定的图像块数量,并相应地调整图像大小。然而,对于某些任务,我们可能希望支持更高的分辨率,例如目标检测和分割;而对于视频,为了加速分析后续帧,较小的分辨率可能就足够了。

相同宽高比不同分辨率图像对比图

Gemma 4 通过引入一个软标记预算来支持不同的分辨率。这个预算代表了传递给 LLM 处理的图像块嵌入的最大数量。用户可以在 70、140、280、560 或 1120 个标记的预算大小之间进行选择。

根据预算,输入图像会被调整大小。如果你有较高的预算,那么你的图像可以保持较高的分辨率,因此将需要处理更多的图像块。如果你有较低的预算,那么你的图像需要被缩小,你将需要处理更少的图像块。较高的预算意味着更多的标记,从而能够捕获比低预算更多的信息。

这个预算决定了图像被调整大小的程度。假设你的预算是 280 个标记,那么最大的图像块数量将是 9 x 280 = 2,520。为什么乘以 9?因为在下一步中,每个 3x3 的相邻图像块块会通过平均合并成一个单一的嵌入。

预算大小大致对应以下分辨率:

软标记预算与对应分辨率配置表

为简化起见,这里假设是正方形,但在可变宽高比下,它可以采用不同的比例,因此,图像块的维度也会不同。同时请注意,软标记数量小于实际的池化后嵌入数量,这是因为考虑到 3 个 16 像素的图像块被池化为一个嵌入,分辨率应该是 48 的倍数。

下面是一个示例,展示了最初大量的图像块如何通过平均池化变成数量较少的图像块嵌入。

图像块池化过程示意图

池化后的图像块数量通常小于标记预算,因为并非每张图像都能完美达到最大图像块数量。

线性投影

图像编码器生成的图像块嵌入不能直接输入给 Gemma 4。像所有语言模型一样,它期望输入嵌入具有特定的维度才能处理。理想情况下,你还会希望其嵌入以与词元嵌入类似的方式占据维度空间,以便于比较。

下图展示了一个很好的例子,可以看到给定的图像编码器创建的嵌入与文本编码器创建的词元嵌入有很大不同。

图像编码器与文本编码器嵌入差异对比图

为了确保图像块嵌入与词元嵌入正确对齐,通常使用一个小型神经网络对图像块嵌入进行投影,使其具有与语言模型期望相同的维度和数值分布。在 Gemma 4 中,这个投影之后会进行 RMSNorm,以匹配后续 Transformer 模块的尺度期望。

图像嵌入线性投影与处理流程图

这就是 Gemma 4 处理图像的方式!需要注意的是,为了执行这个线性投影,它需要与 Gemma 4 一起训练,以确保投影后的图像块嵌入与 Gemma 4 的期望紧密匹配。

此外,小型模型(E2B/E4B)都使用一个 1.5 亿参数的视觉编码器,而所有其他模型使用一个 5.5 亿参数的视觉编码器。

架构总结

当我们把所有部分放在一起时,所有 Gemma 4 变体共享的架构可以总结为三个主要方面:

  • 局部注意力与全局注意力的交错层。
  • 密集型或专家混合型。
  • 视觉编码器。

Gemma 4通用架构汇总图

请注意,前馈神经网络与专家混合层并非交错使用。任何 Gemma 4 变体在所有层中要么使用前者,要么使用后者。

现在我们已经介绍了每个变体的主要原理,接下来让我们更深入地探讨每一组模型:

  • Gemma 4 - 31B
  • Gemma 4 - 26B A4B
  • Gemma 4 - E2BE4B

Gemma 4 - 31B:密集型模型

尽管专家混合模型很受欢迎,Gemma 4 家族仍包含一个拥有 310 亿参数的密集型变体。这个模型在 Gemma 4 变体中是一个更“经典”架构的代表。

该模型在架构上与 Gemma 3 的 270 亿参数变体非常相似。它们都交错使用局部和全局注意力,并具有相同的前后 RMSNorm。其不同之处在于我们之前讨论的方面,例如 K=V 和使用 p-RoPE。具体来说,Gemma 4 - 31B 层数更少(60 对 62),但模型宽度更大。

Gemma 4 31B模型详细架构图

与专家混合模型和小型模型的“每层嵌入”不同,这个变体没有我们可以探索的“魔法”成分。我认为它是一个很好的“经典”Gemma 4 架构的代表,并允许我们在此基础上探索其他模型。

Gemma 4 - 26B A4B:专家混合模型

Gemma 4 有一个名称中包含“A”的变体,即 26B A4B 模型。“A”代表“激活参数”,以区别于它们包含的参数总数。具体来说,26B A4B 模型总共包含 260 亿参数,但在推理期间只使用其中的 40 亿参数。这些被称为“激活参数”。通过只激活一部分参数,这些模型的运行速度比其总参数数量所暗示的要快得多。

Gemma 4 26B A4B模型架构图

实现这一点的架构被称为专家混合。它不使用一个大的前馈神经网络,而是使用多个较小的 FFNN,并动态选择由哪些专家来处理给定的输入。

因此,MoE 有两个主要组成部分:

  • 专家 —— 一组可以处理词元的 FFNN,但每次只激活其中的一个子集。它们通常比密集型模型中的 FFNN 要小。
  • 路由器 —— 决定哪些词元由哪些专家处理。

给定的词元嵌入在 MoE 层中是这样被处理的:首先传递给路由器,路由器选择一个或多个专家来激活。为此,路由器会生成专家概率,以便路由词元嵌入。被选中的专家会像普通的前馈神经网络那样更新词元嵌入。

概率允许某些专家比其他专家对处理后的嵌入产生更大或更小的影响。因此,处理后的嵌入会乘以专家概率。

专家混合层工作原理示意图

虽然示意图显示的是单个专家,但大多数 MoE 至少会激活几个专家并组合结果。在 Gemma 4 中,MoE 变体有 128 个专家供路由器选择,每次将激活 8 个。

此外,还有一个共享专家。这个专家将始终被激活并用于处理输入嵌入。拥有共享专家的基本思想是,它包含了许多应始终被激活的通用知识,而选中的专家则包含更细粒度的知识。在 Gemma 4 中,这个共享专家的尺寸是其他专家的三倍,以确保它包含了必要的通用知识。

Gemma 4 MoE层详细架构图

MoE层数据流示意图

现在你已经了解了 Gemma 4 中专家混合的概貌,让我们更深入地探讨拥有包含稀疏参数和激活参数的高效架构意味着什么。稀疏参数是模型的所有参数,当你想要加载模型时,它们都需要被加载到内存中。例如,Gemma 4 的 260 亿参数模型相当大,你可能会认为它会因为体积大而运行缓慢。然而,当你运行模型时,并非所有稀疏参数都会被你的设备实际使用。在 Gemma 4 的专家混合中,实际上只有 8 个专家和 1 个共享专家被用于中间计算。其他 119 个专家可以“退居二线”。这些是激活参数,代表了“26B A4B”中的“A”。这意味着尽管这个模型很大,但它运行起来几乎和一个 40 亿参数的模型一样快!

MoE模型中稀疏参数与激活参数对比图

我曾试用过这个模型,它确实表现出色。但如果你想在手机等设备上运行,可能还是需要选择更小的模型。

Gemma 4 - E2B & E4B:密集型模型

Gemma 4 有一个名称中包含“E”的变体,即 E2B 和 E4B 模型。“E”代表“有效参数”,以区别于它们包含的参数总数。

Gemma 4 E2B与E4B模型架构对比图

这些模型非常高效,非常适合在设备端使用。更令人兴奋的是,这些模型除了文本和图像外,还包含一个额外的音频编码器来处理音频。

在深入探讨音频编码器的细节之前,让我们先了解一下这个“E”的含义。

每层嵌入

小型 Gemma 4 模型的一个有趣组件是“E2B”和“E4B”中的“E”。它代表“有效”,在某种程度上类似于我们在专家混合中探讨的稀疏参数与激活参数。“有效”本质上意味着这些参数用于计算并加载到你的 RAM 中,而其他参数(一个包含嵌入的查找表)仅用于快速查找相关嵌入。

为了在实践中理解这意味着什么,让我们先看看词元嵌入层发生了什么。每当它收到一个给定的词元时,它会使用一个查找表来查找其嵌入。这个表可能相当大,因为它必须为整个词汇表中的每个单词存储一个嵌入。例如,Gemma 4 E2B 有 262,144 个词元,每个词元嵌入的维度为 1536。

Token Embedding层原理示意图

然后,每个词元的嵌入被送入堆叠的解码器块并进行迭代处理。为了提升模型能力,你通常会添加几层或更多参数。更大的模型往往表现更好。

与其向模型本身添加参数,一个巧妙的技巧是在每一层创建一组额外的嵌入。这有点简化,但想象一下词元“猫”的嵌入可能强调:

  • 第 2 层 - “我是一个名词,通常后面跟动词。”
  • 第 18 层 - “我是一种小动物,与‘宠物’或‘猫科动物’等术语相关。”

这些嵌入的维度比原始查找表小得多(E2B中是256对1536,E4B中是256对2560),以节省存储空间。因此,我们现在有一个 262,144 个词元 x 256 维度 x N 层的查找表。拥有更大查找表的好处是,我们可以将重要信息存储在闪存上,而不是浪费在用于模型计算的内存上。

这些被称为每层嵌入,顾名思义,是用于特定层的嵌入。

每层嵌入查找表示意图

在推理开始时,模型会为每个输入词元抓取其对应的嵌入集。每个输入词元将有一个在该特定层使用的每层嵌入。请注意,这个查找只在推理期间进行一次,使得这个操作在计算上非常高效,因为不需要在每次激活层时都查找嵌入。

从查找表中获取每层嵌入示意图

这些嵌入在每组解码器块之间被处理。这里,使用了一个门控函数来决定如何对所选嵌入中的每个值进行加权。这使得模型能够额外关注从查找表中检索到的嵌入的某些部分。得到的嵌入(维度仍为 256)随后被投影到与原始嵌入大小匹配的维度。

经过一个归一化层后,这个加权的表示与上一个解码器块的原始输出相结合。这使得处理后的信号能够被“提醒”该词元嵌入所代表的内容,而不是让它经过多层混合并添加大量上下文信息。

每层嵌入的处理与集成流程图

现在,模型可以将其内部维度集中在理解词元上,而不需要从底层携带信息。这使得现有层比它们单独存在时更加高效和富有表现力。

但更重要的是,这些每层嵌入,尽管相当大,但被存储在闪存中。将它们存储在内存中是一种浪费,因为在推理过程中我们只需要几个嵌入。因此,“E2B”和“E4B”中的“E”指的是除每层嵌入之外的所有参数。

这是一项优雅的技术,使得这些模型能够在手机等小型设备上运行。在这些设备上,RAM 极其宝贵且有限,因此任何能最小化其使用的方法都是受欢迎的补充。

音频编码器

小型模型(E2B/E4B)也可以处理音频输入,非常适合自动语音识别和翻译等任务。与视觉编码器类似,音频编码器将原始音频输入转换为 Gemma 4 可以处理的嵌入。

这个过程有几个步骤,让我们从头开始。将原始音频转换为标记及其嵌入的常见过程分为三步:

  1. 提取特征 – 通过梅尔频谱图从原始音频中提取特征,这是原始音频的二维视觉表示。它代表时间(横轴)和频带(纵轴)。
  2. 分组为块 – 将梅尔特征分组为块,作为标记序列的起点。
  3. 下采样块 – 这些块被重叠,并由两个二维卷积层处理以缩短序列长度。这样,它将二维块转换为一系列嵌入(也称为“软”标记,以表示标记的连续性质)。

音频分词器处理流程示意图

这个过程与创建图像块嵌入的线性投影非常相似。它们仍然需要随后由编码器处理,以便嵌入充满上下文信息。Gemma 4 中使用的音频编码器称为 Conformer,它类似于常规的 Transformer 编码器,但也使用卷积模块来处理软标记。一个很好的对比是密集型的 Gemma 4 31B 与 Conformer 的实现方式。注意它是如何产生嵌入而不是词元的。

Gemma 4 31B与Conformer音频编码器架构对比图

与视觉编码器类似,Conformer 产生的嵌入被投影到 Gemma 4 所期望的维度空间。否则,嵌入大小不匹配,Gemma 4 将无法处理。

音频处理完整流程图

这为我们提供了一个流程,感觉与我们探索的视觉编码器非常相似!

希望这篇关于 Gemma 4 系列模型的解析,能帮助你理解这个强大 深度学习 模型家族背后的设计哲学与技术创新。如果你想了解更多前沿 AI 技术讨论和资源,欢迎访问 云栈社区




上一篇:SDIO总线硬件原理详解:引脚定义、4-bit模式与初始化时序
下一篇:基于Java+Claude Code的多Agent股票分析系统搭建心得
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 15:22 , Processed in 0.578584 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表