由机器之心报告。
编辑:陈平、杜伟
想知道 Google GEMMA 和 Llama 2 和 Mistral 之间的异同吗? 这篇文章值得一读。就在几天前,开源大模型领域的一个大新玩家迎来了:谷歌推出了一个新的开源模型系列,GEMMA。 与 Gemini 相比,GEMMA 更轻,同时可以免费使用,并且模型重量是开源和市售的。
谷歌发布了一款带有两个体重秤的型号:GEMMA 2B 和 GEMMA 7B。 尽管尺寸较小,但GEMMA在关键基准测试中的表现明显优于大型型号,包括LLAMA-2 7B和13B,以及崭露头角的Mistral 7B。 同时,发布了关于GEMMA的技术报告。
在本文中,著名的机器学习和人工智能研究人员 Sebastian Raschka 向我们介绍了与其他 LLM 相比,GEMMA 的一些独特设计原则。
Raschka从模型的性能开始,他说任何看过技术报告的人都可能会有一个问题,是什么让Gemma表现得如此出色? 原因没有明确说明,但塞巴斯蒂安·拉施卡(Sebastian Raschka)认为可以从以下两点得出结论:
首先是词汇量大,GEMMA达到256000个单词,而Llama为32000个单词;
紧随其后的是 6 万亿个代币的训练数据集,其中 Llama 只接受了三分之一的训练。
在架构方面,Raschka概述了GEMMA与LLAMA 2 7B和OLMO 7B的架构。
在模型大小方面,Raschka 表示 Gemma 2b 具有多个查询关注度,而 Gemma 7b 则没有。 此外,与 Llama 2 相比,Gemma 7B 的前馈层相对较大,虽然它的层数较少(28 对 32),但 Gemma 中的参数数量相当多。
Raschka猜测,Gemma 7b实际上总共有93亿个参数,如果考虑到重量捆绑,则为85亿个参数。 权重共享意味着模型在输入嵌入和输出投影层中共享相同的权重,类似于 GPT-2 和 OLMO 1B(OLMO 7B 在没有权重共享的情况下进行训练)。
归一化层
另一个引人注目的细节是杰玛的以下段落。
规范化位置。 Google 对每个 transformer 子层的输入和输出进行规范化,这与单独规范化输入或输出的标准做法不同。 Google 使用 rmsnorm 作为归一化层。乍一看,gemma 似乎在每个变压器块后面都有一个额外的 rmsnorm 层。 然而,看看 Keras-NLP 项目的官方 ** 实现,原来 GEMMA 只使用了 GPT-2、LLAMA 2 和其他 LLM 使用的常规预规范化方案,如下图所示。
GPT、LLAMA 2 和其他 LLM 中的典型层归一化位置,GEMMA 中没有什么新东西。 **
Geglu活化
GEMMA 与其他架构的一大区别是它使用了 Geglu 激活,这是在 2020 年谷歌的 Glu Variants Improve Transformer 中提出的。
*地址:Gelu代表高斯误差线性单位,这是一种激活函数,越来越多地被用作传统Relu的替代品。 Gelu之所以受欢迎,是因为它能够引入非线性特征,并允许对负输入值执行梯度传播,这解决了RELU的主要限制之一,即完全阻止负值。
现在,作为 Gelu 的栅极线性单元变体,Geglu 的激活分为两部分,sigmoid 单元和线性映射单元(根据 sigmoid 单元的输出逐个元素乘以),如下图所示。
gelu 和 relu 激活函数的图形比较,**
同时,GEGLU 类似于其他 LLM(如 Llama 2、Mistral 等)使用的 Swiglu 激活。 唯一的区别是 Geglu 使用的基础激活是 Gelu 而不是 Swish。
下图显示了 Gelu (GPT-2)、Swiglu (Llama 2) 和 Geglu (Gemma) 的伪**。
需要注意的是,使用 Swiglu 和 Geglu 的前馈模块比使用 Gelu 的常规前馈模块(仅线性)多了一个线性层(分别为 Linear 1 和 Linear 2)。 然而,在 Swiglu 和 Geglu 前馈模块中,线性 1 和线性 2 通常是通过将单个线性层分成两部分来获得的,因此参数大小不会增加。
Geglu 比 Swiglu 好吗? 没有消融实验来证实这一点。 Raschka 猜测 Google 选择使用 Geglu 只是为了让 Gemma 与 Llama 2 略有不同。
例如,GEMMA 向 RMSNORM 层添加偏移量 + 1,并通过隐藏层维度的开平方根来规范化嵌入。 这些细节在 gemma 中没有提及或讨论,因此它们的重要性尚不清楚。
结论
GEMMA 为开源 LLM 做出了巨大贡献,证明了 7B 参数规模也可以带来强大的模型,并有可能在现实世界的用例中取代 Llama 2 和 MISTRAL。
此外,已经有很多 7B 大小的开源模型,因此 Gemma 2B 更加有趣,因为它可以轻松运行在单个 GPU 上。 当然,gemma 2b 和 2 是一样的7b 尺寸 phi-2 之间的对比也会很有趣。
参考链接: