Gemma概述
2024年,2月21日,谷歌正式对外发布开源大模型Gemma。谷歌发布的Gemma包含Gemma 2B 和 Gemma 7B,参数规模分别为20亿和70亿,参数规模并不大,谷歌将这两个模型归为轻量级开放模型系列,2B版本甚至可直接在笔记本电脑上运行。
在此之前,谷歌在2023年12月首次对外发布Gemini大模型时,对外公布了Ultra、Pro、Nano三个版本,并称“这些是进入Gemini时代第一个模型,也是Google DeepMind成立时的愿景。”
实际上,在2023年更早些时候谷歌发布的Pixel 8 Pro,已经因显著的AI特性被视为划时代的智能手机,站稳AI手机潮头后的谷歌,又将Gemini Nano放到了三星Galaxy S24中,帮助三星进入到了“Galaxy AI时代”。
从开源方面来看,谷歌Gemma并不是第一个开源大模型。Meta公司发布的Llama 系列,阿里发布的通义千问系列、百川发布的百川大模型系列等等都是开源且可商用的大语言模型。
Gemma评测
Gemma采用与Gemini模型相同的研究和技术,由Google DeepMind和谷歌其他团队开发,专为负责任的AI开发而打造。Gemma模型在18个语言理解、推理、数学等关键基准测试中,有11个测试分数超越了Meta Llama-2等更大参数的开源模型。相比 Gemini,Gemma 更加轻量,同时保持免费可用,模型权重也一并开源了,且允许商用。
Gemma 官方页面:https://ai.google.dev/gemma/
尽管体量较小,但谷歌表示 Gemma 模型已经「在关键基准测试中明显超越了更大的模型」,对比的包括 Llama-2 7B 和 13B,以及风头正劲的 Mistral 7B。
除了轻量级模型之外,谷歌还推出了鼓励协作的工具以及负责任地使用这些模型的指南。Keras 作者 François Chollet 对此直接表示:最强开源大模型的位置现在易主了。
在 HuggingFace 的 LLM leaderboard 上,Gemma 的 2B 和 7B 模型已经双双登顶。
在开源模型的同时,谷歌还公布了有关 Gemma 的性能、数据集组成和建模方法的详细信息的技术报告。在技术报告中,其他研究者发现了一些亮点,比如 Gemma 支持的词汇表大小达到了 256K,这意味着它对英语之外的其他语言能够更好、更快地提供支持。
开发工具和系统支持
谷歌还公布了Gemma对一系列开发工具和系统的支持,以及跨设备的兼容,具体Gemma的兼容和支持情况如下:
- 多框架工具:Gemma提供Keras 3.0、原生PyTorch、JAX和Hugging Face Transformers多个框架的参考实现;
- 跨设备兼容:Gemma模型可以在笔记本电脑、台式机、物联网、移动设备和云端等多个主流设备类型上运行;
- 硬件平台支持:谷歌与NVIDIA合作,可以使用NVIDIA GPU来优化Gemma模型;
- 基于Google Cloud的优化:Vertex AI提供广泛的MLOps工具集,其中包含一系列微调选项和内置推理优化的一键部署功能。
Gemma 技术细节
总体来说,Gemma 是一个轻量级的 SOTA 开放模型系列,在语言理解、推理和安全方面表现出了强劲的性能。技术报告链接:https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf
模型架构
Gemma 模型架构基于 Transformer 解码器,表 1 总结了该架构的核心参数。模型训练的上下文长度为 8192 个 token。此外,谷歌还在原始 transformer 论文的基础上进行了改进,改进的部分包括:
- 多查询注意力:7B 模型使用多头注意力,而 2B 检查点使用多查询注意力;
- RoPE 嵌入:Gemma 在每一层中使用旋转位置嵌入,而不是使用绝对位置嵌入;Gemma 还在输入和输出之间共享嵌入,以减少模型大小;
- GeGLU 激活:标准 ReLU 非线性被 GeGLU 激活函数取代;
- Normalizer Location:Gemma 对每个 transformer 子层的输入和输出进行归一化,这与仅对其中一个或另一个进行归一化的标准做法有所不同,RMSNorm 作为归一化层。
训练基础设施
谷歌使用了自研 AI 芯片 TPUv5e 来训练 Gemma 模型:TPUv5e 部署在由 256 个芯片组成的 pod 中,配置成由 16 x 16 个芯片组成的二维环形。
对于 7B 模型,谷歌在 16 个 pod(共计 4096 个 TPUv5e)上训练模型。他们通过 2 个 pod 对 2B 模型进行预训练,总计 512 TPUv5e。在一个 pod 中,谷歌对 7B 模型使用 16 路模型分片和 16 路数据复制。对于 2B 模型,只需使用 256 路数据复制。优化器状态使用类似 ZeRO-3 的技术进一步分片。在 pod 之外,谷歌使用了 Pathways 方法通过数据中心网络执行数据复制还原。
预训练
Gemma 2B 和 7B 分别在来自网络文档、数学和代码的 2T 和 6T 主要英语数据上进行训练。与 Gemini 不同的是,这些模型不是多模态的,也不是为了在多语言任务中获得最先进的性能而训练的。
为了兼容,谷歌使用了 Gemini 的 SentencePiece tokenizer 子集(Kudo 和 Richardson,2018 年)。它可以分割数字,不删除多余的空白,并遵循(Chowdhery 等人,2022 年)和(Gemini 团队,2023 年)所使用的技术,对未知 token 进行字节级编码。词汇量为 256k 个 token。
指令调优
谷歌通过在仅文本、仅英语合成和人类生成的 prompt 响应对的混合数据上进行监督微调(SFT),以及利用在仅英语标记的偏好数据和基于一系列高质量 prompt 的策略上训练的奖励模型进行人类反馈强化学习(RLHF),对 Gemma 2B 和 Gemma 7B 模型进行微调。
实验发现,监督微调和 RLHF 这两个阶段对于提高下游自动评估和模型输出的人类偏好评估性能都非常重要。
监督微调
谷歌根据基于 LM 的并行评估结果来选择自己的混合数据,以进行监督微调。给定一组留出的(heldout) prompt, 谷歌从测试模型中生成响应,并从基线模型中生成相同 prompt 的响应,并要求规模更大的高性能模型来表达这两个响应之间的偏好。
谷歌还构建不同的 prompt 集来突出特定的能力,例如指令遵循、真实性、创造性和安全性等。谷歌使用了不同的自动化 LM「judges」,它们采用了多种技术,比如思维链提示(chain-of-thought prompting)、对齐人类偏好等。
格式化
指令调优模型使用特定的格式化器进行训练, 该格式化器在训练和推理时使用额外的信息来标注所有指令调优示例。这样做有以下两个目的,1)指示对话中的角色,比如用户角色;2)描述对话轮次,尤其是在多轮对话中。为了实现这两个目的,谷歌在分词器(tokenizer)中保留了特殊的控制 token。
人类反馈强化学习(RLHF)
谷歌使用 RLHF 对监督微调模型进一步微调,不仅从人类评分者那里收集了偏好对,还在 Bradley-Terry 模型下训练了奖励函数,这类似于 Gemini。该策略经过训练,使用一个具有针对初始调优模型的 Kullback–Leibler 正则化项的 REINFORCE 变体,对该奖励函数进行优化。
与监督微调(SFT)阶段一样,为了进行超参数调优,并额外减轻奖励黑客行为,谷歌依赖高容量模型作为自动评估器,并计算与基线模型的比较结果。
评估
谷歌通过人类偏好、自动基准和记忆等指标,在广泛的领域对 Gemma 进行了全面的评估。