Google 发布最新开放大语言模型 Gemma 2,现已登陆 Hugging Face Hub

Google 发布了最新的开放大语言模型 Gemma 2,我们非常高兴与 Google 合作,确保其在 Hugging Face 生态系统中的最佳集成。你可以在 Hub 上找到 4 个开源模型 (2 个基础模型和 2 个微调模型) 。发布的功能和集成包括:

  • Hub 上的模型https://hf.co/collections/google/g-667d6600fd5220e7b967f315

  • Hugging FaceTransformers 集成https://github.com/huggingface/transformers/releases/tag/v4.42.0

  • 与 Google Cloud 和推理端点的集成

Gemma 2 是什么?

Gemma 2 是 Google 最新的开放大语言模型。它有两种规模:90 亿参数和 270 亿参数,分别具有基础 (预训练) 和指令调优版本。Gemma 基于 Google DeepMind 的 Gemini,拥有 8K Tokens 的上下文长度:

  • gemma-2-9bhttps://hf.co/google/gemma-2-9b90 亿基础模型。

  • gemma-2-9b-ithttps://hf.co/google/gemma-2-9b-it90 亿基础模型的指令调优版本。

  • gemma-2-27bhttps://hf.co/google/gemma-2-27b270 亿基础模型。

  • gemma-2-27b-ithttps://hf.co/google/gemma-2-27b-it270 亿基础模型的指令调优版本。

Gemma 2 模型的训练数据量约为其第一代的两倍,总计 13 万亿 Tokens (270 亿模型) 和 8 万亿 Tokens (90 亿模型) 的网页数据 (主要是英语) 、代码和数学数据。我们不知道训练数据混合的具体细节,只能猜测更大和更仔细的数据整理是性能提高的重要因素之一。

Gemma 2 与第一代使用相同的许可证,这是一个允许再分发、微调、商业用途和衍生作品的宽松许可证。

立刻在 Hugging Chat 里体验 Gemma2

https://hf.co/chat/models/google/gemma-2-27b-it

Gemma 2 的技术进展

Gemma 2 与第一代有许多相似之处。它有 8192 Tokens 的上下文长度,并使用旋转位置嵌入 (RoPE)。与原始 Gemma 相比,Gemma 2 的主要进展有四点:

  • 滑动窗口注意力: 交替使用滑动窗口和全二次注意力以提高生成质量。

  • Logit 软上限: 通过将 logits 缩放到固定范围来防止其过度增长,从而改进训练。

  • 知识蒸馏: 利用较大的教师模型来训练较小的模型(适用于 90 亿模型)。

  • 模型合并: 将两个或多个大语言模型合并成一个新的模型。

Gemma 2 使用JAX和ML Pathways在Google Cloud TPU (27B on v5p和9B on TPU v4)上进行训练。Gemma 2 Instruct 已针对对话应用进行了优化,并使用监督微调 (SFT)、大模型蒸馏、人类反馈强化学习 (RLHF) 和模型合并 (WARP) 来提高整体性能。

  • JAXhttps://jax.readthedocs.io/en/latest/quickstart.html

  • ML Pathwayshttps://blog.google/technology/ai/introducing-pathways-next-generation-ai-architecture/

  • Google Cloud TPU 27B on v5phttps://cloud.google.com/blog/products/ai-machine-learning/introducing-cloud-tpu-v5p-and-ai-hypercomputer?hl=en

  • 9B on TPU v4https://cloud.google.com/tpu/docs/v4

与预训练数据集混合类似,关于微调数据集或与 SFT 和RLHF相关的超参数的细节尚未共享。

  • RLHFhttps://hf.co/blog/rlhf

滑动窗口注意力

滑动窗口注意力是一种用于减少 Transformer 模型中注意力计算的内存和时间需求的方法,已在Mistral等模型中使用。Gemma 2 的新颖之处在于每隔一层应用滑动窗口 (局部 - 4096 Tokens) ,而中间层仍使用全局二次注意力 (8192 Tokens) 。我们推测这是为了在长上下文情况下提高质量 (半数层仍然关注所有 Tokens) ,同时部分受益于滑动注意力的优势。

  • 滑动窗口注意力https://hf.co/papers/2004.05150

  • Mistralhttps://hf.co/papers/2310.06825

软上限和注意力实现

软上限是一种防止 logits 过度增长而不截断它们的技术。它通过将 logits 除以最大值阈值 (soft_cap),然后通过 tanh 层 (确保它们在 (-1, 1) 范围内) ,最后再乘以阈值。这确保了最终值在 (-soft_cap, +soft_cap) 区间内,不会丢失太多信息但稳定了训练。

综合起来,logits 的计算公式为:logits ← soft_cap ∗ tanh(logits/soft_cap)

Gemma 2 对最终层和每个注意力层都采用了软上限。注意力 logits 上限为 50.0,最终 logits 上限为 30.0。

在发布时,软上限与 Flash Attention / SDPA 不兼容,但它们仍可用于推理以实现最高效率。Gemma 2 团队观察到,在推理过程中不使用软上限机制时,差异非常小。

注意:对于稳定的微调运行,仍需启用软上限,因此我们建议使用 eager 注意力进行微调,而不是 SDPA。

知识蒸馏

知识蒸馏是一种常用技术,用于训练较小的 学生 模型以模仿较大但表现更好的 教师 模型的行为。这是通过将大语言模型的下一个 Token 预测任务与教师提供的 Token 概率分布 (例如 GPT-4、Claude 或 Gemini) 结合起来,从而为学生提供更丰富的学习信号。

根据 Gemma 2 技术报告,知识蒸馏用于预训练 90 亿模型,而 270 亿模型则是从头开始预训练的。

在后期训练中,Gemma 2 团队生成了来自教师 (报告中未指定,但可能是 Gemini Ultra) 的多样化补全集,然后使用这些合成数据通过 SFT 训练学生模型。这也是许多开源模型的基础,如Zephyr和OpenHermes,它们完全基于较大大语言模型的合成数据进行训练。

  • Zephyrhttps://hf.co/HuggingFaceH4/zephyr-7b-beta

  • OpenHermeshttps://hf.co/teknium/OpenHermes-2.5-Mistral-7B

尽管有效,但这种方法存在缺点,因为学生和教师之间的模型容量不匹配可能导致 训练-推理不匹配,即学生在推理期间生成的文本与训练期间看到的文本不同。

为解决这个问题,Gemma 2 团队采用了“在线蒸馏”,其中学生从 SFT 提示生成补全。这些补全用于计算教师和学生 logits 之间的 KL 散度。通过在整个训练过程中最小化 KL 散度,学生能够准确地模拟教师的行为,同时最小化训练-推理不匹配。

  • “在线蒸馏”https://arxiv.org/pdf/2306.13649

这种方法非常有趣,正如我们在社区中看到的那样,在线 DPO 等在线方法会产生更强的模型,而在线蒸馏的一个优势在于只需要教师的 logits,因此无需依赖奖励模型或大语言模型作为评审员来改进模型。我们期待看到这种方法在未来几个月中是否会在微调人员中变得更受欢迎!

模型合并

模型合并是一种将两个或多个大语言模型合并成一个新模型的技术。这是相对较新和实验性的,可以不使用加速器进行。Mergekit是一个流行的开源工具包,用于合并大语言模型。它实现了线性、SLERP、TIES、DARE 和其他合并技术。

  • 模型合并https://hf.co/blog/mlabonne/merge-models

  • Mergekithttps://github.com/arcee-ai/mergekit

根据技术报告,Gemma 2 使用了Warp,这是一种新型合并技术,分三个独特阶段进行合并:

  • Warphttps://arxiv.org/abs/2406.16768

  1. 指数移动平均 (EMA):在强化学习 (RL) 微调过程中应用。

  2. 球形线性插值 (SLERP):在多个策略的 RL 微调后应用。

  3. 向初始化线性插值 (LITI):在 SLERP 阶段之后应用。

Gemma 2 的评估

Gemma 模型的表现如何?以下是根据技术报告和新版开源 LLM 排行榜对其他开源开放模型的性能比较。

  • 开源 LLM 排行榜https://hf.co/spaces/HuggingFaceH4/open_llm_leaderboard

技术报告结果

Gemma 2 的技术报告比较了不同开源 LLM 在之前开源 LLM 排行榜基准上的性能。


Llama 3 (70B)Qwen 1.5 (32B)Gemma 2 (27B)
MMLU79.274.375.2
GSM8K76.961.175.1
ARC-c68.863.671.4
HellaSwag88.085.086.4
Winogrande85.381.583.7

该报告还比较了小型语言模型的性能。

BenchmarkMistral (7B)Llama 3 (8B)Gemma (8B)Gemma 2 (9B)
MMLU62.566.664.471.3
GSM8K34.545.750.962.3
ARC-C60.559.261.168.4
HellaSwag83.082.082.381.9
Winogrande78.578.579.080.6

开源 LLM 排行榜结果

注意:我们目前正在新的开源 LLM 排行榜基准上单独评估 Google Gemma 2,并将在今天晚些时候更新此部分。

如何提示 Gemma 2

基础模型没有提示格式。像其他基础模型一样,它们可以用于继续输入序列的合理延续或零样本/少样本推理。指令版本有一个非常简单的对话结构:

<start_of_turn>user
knock knock<end_of_turn>
<start_of_turn>model
who is there<end_of_turn>
<start_of_turn>user
LaMDA<end_of_turn>
<start_of_turn>model
LaMDA who?<end_of_turn><eos>

必须精确地复制此格式才能有效使用。稍后我们将展示如何使用 transformers 中的聊天模板轻松地复制指令提示。

演示

你可以在 Hugging Chat 上与 Gemma 27B 指令模型聊天!查看此链接:
https://hf.co/chat/models/google/gemma-2-27b-it

使用 Hugging Face Transformers

随着 Transformers版本 4.42的发布,你可以使用 Gemma 并利用 Hugging Face 生态系统中的所有工具。要使用 Transformers 使用 Gemma 模型,请确保使用最新的 transformers 版本:

  • 版本 4.42https://github.com/huggingface/transformers/releases/tag/v4.42.0

pip install "transformers==4.42.1" --upgrade

以下代码片段展示了如何使用 transformers 使用 gemma-2-9b-it。它需要大约 18 GB 的 RAM,适用于许多消费者 GPU。相同的代码片段适用于 gemma-2-27b-it,需要 56GB 的 RAM,使其非常适合生产用例。通过加载 8-bit 或 4-bit 模式,可以进一步减少内存消耗。

from transformers import pipeline
import torchpipe = pipeline("text-generation",model="google/gemma-2-9b-it",model_kwargs={"torch_dtype": torch.bfloat16},device="cuda",
)messages = [{"role": "user", "content": "Who are you? Please, answer in pirate-speak."},
]
outputs = pipe(messages,max_new_tokens=256,do_sample=False,
)
assistant_response = outputs[0]["generated_text"][-1]["content"]
print(assistant_response)

啊哈,船长!我是数字海洋上的一艘谦卑的词语之船。他们叫我 Gemma,是 Google DeepMind 的杰作。我被训练在一堆文本宝藏上,学习如何像一个真正的海盗一样说话和写作。

问我你的问题吧,我会尽力回答,啊哈!🦜📚

我们使用 bfloat16 因为这是指令调优模型的参考精度。在你的硬件上运行 float16 可能会更快,90 亿模型的结果应该是相似的。然而,使用 float16 时,270 亿指令调优模型会产生不稳定的输出:对于该模型权重,你必须使用 bfloat16。

你还可以自动量化模型,以 8-bit 甚至 4-bit 模式加载。加载 4-bit 模式的 270 亿版本需要大约 18 GB 的内存,使其兼容许多消费者显卡和 Google Colab 中的 GPU。这是你在 4-bit 模式下加载生成管道的方式:

pipeline = pipeline("text-generation",model=model,model_kwargs={"torch_dtype": torch.bfloat16,"quantization_config": {"load_in_4bit": True}},
)

有关使用 Transformers 模型的更多详细信息,请查看模型卡。

  • 模型卡https://hf.co/gg-hf/gemma-2-9b

与 Google Cloud 和推理端点的集成

注意:我们目前正在为 GKE 和 Vertex AI 添加新的容器,以高效运行 Google Gemma 2。我们将在容器可用时更新此部分。

其他资源

  • Hub 上的模型https://hf.co/collections/google/g-667d6600fd5220e7b967f315

  • 开放 LLM 排行榜https://hf.co/spaces/HuggingFaceH4/open_llm_leaderboard

  • Hugging Chat 上的聊天演示https://hf.co/chat/models/google/gemma-2-27b-it

  • Google 博客https://blog.google/technology/developers/google-gemma-2/

  • Google Notebook 即将推出

  • Vertex AI 模型花园 即将推出

致谢

在生态系统中发布此类模型及其支持和评估离不开许多社区成员的贡献,包括Clémentine和Nathan对 LLM 的评估;Nicolas对文本生成推理的支持;Arthur、Sanchit、Joao和Lysandre对 Gemma 2 集成到 Transformers 中的支持;Nathan和Victor使 Gemma 2 在 Hugging Chat 中可用。

  • Clémentinehttps://hf.co/clefourrier

  • Nathanhttps://hf.co/SaylorTwift

  • Nicolashttps://hf.co/Narsil

  • Arthurhttps://hf.co/ArthurZ

  • Sanchithttps://hf.co/sanchit-gandhi

  • Joaohttps://hf.co/joaogante

  • Lysandrehttps://hf.co/lysandre

  • Nathanhttps://hf.co/nsarrazin

  • Victorhttps://hf.co/victor

感谢 Google 团队发布 Gemma 2!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java家教系统小程序APP公众号h5源码

让学习更高效&#xff0c;更便捷 &#x1f31f; 引言&#xff1a;家教新选择&#xff0c;小程序来助力 在快节奏的现代生活中&#xff0c;家长们越来越注重孩子的教育问题。然而&#xff0c;如何为孩子找到一位合适的家教老师&#xff0c;成为了许多家长头疼的问题。现在&…

交叉编译中的 --build、 --host和 --target

在交叉编译中比较常见的一些参数就是build、host和target了,正确的理解这三者的含义对于交叉编译是非常重要的,下面就此进行解释   --build=编译该软件所使用的平台   --host=该软件将运行在哪个平台   --target=该软件所处理的目标平台 我们经常会看到如下代码:   …

谷歌个人号,20人连续封测14天所需设备该怎么解决?

现在&#xff0c;在Google Play上架应用&#xff0c;对于大部分开发者来说&#xff0c;真的是不小的挑战&#xff0c;因为目前谷歌上架政策越来越严格了。特别是从2023年11月13日起&#xff0c;新政策要求个人开发者账号的应用必须经过20个独立用户连续14天的封闭测试&#xff…

【C语言】--分支和循环(1)

&#x1f37f;个人主页: 起名字真南 &#x1f9c7;个人专栏:【数据结构初阶】 【C语言】 目录 前言1 if 语句1.1 if1.2 else1.3 嵌套if1.4 悬空else 前言 C语言是结构化的程序设计语言&#xff0c;这里的结构指的是顺序结构、选择结构、循环结构。 我们可以用if、switch实现分支…

vue2实例实现一个初步的vuex

vue2实例实现一个初步的vuex 实现源码&#xff1a;vue2-review 1.App.vue 2.store目录下的index.js 3.效果 微信公众号&#xff1a;刺头拾年

MATLAB的.m文件与Python的.py文件:比较与互参

simulink MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参相似之处**1. 基本结构****2. 执行逻辑****3. 可读性和维护性** 差异性**1. 语法特性****2. 性能和应用****3. 开发环境** 互相学习的可能性结论 MATLAB的.m文件与Python的.py文件&#xff1a;比较与互参 在编…

扩展阅读:什么是中断

如果用一句话概括操作系统的原理,那就是:整个操作系统就是一个中断驱动的死循环,用最简单的代码解释如下: while(true){doNothing(); } 其他所有事情都是由操作系统提前注册的中断机制和其对应的中断处理函数完成的。我们点击一下鼠标,敲击一下键盘,执行一个程序,…

重生之我要学后端100--计算机网络部分概念(持续更新)

TCP/IP、DNS、负载均衡器等等 前言一、TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;二、DNS&#xff08;域名系统&#xff09;三、负载均衡器其他网络概念 前言 了解网络基础知识对于后端开发者至关重要&#xff0c;因为这些知识有助于理解应用程序是如何在更广阔的…

中英双语介绍美国的州:麻省,马塞诸塞州(Massachusetts)

中文版 马萨诸塞州&#xff08;Massachusetts&#xff09;位于美国东北部的新英格兰地区&#xff0c;是美国历史最悠久、文化最丰富的州之一。以下是对马萨诸塞州各方面的详细介绍&#xff1a; 人口 截至2020年&#xff0c;美国人口普查数据显示&#xff0c;马萨诸塞州的人口…

C++ 之运算符

作用&#xff1a;用于执行代码的运算 主要的运算符类型&#xff1a; 运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较&#xff0c;并返回一个真值或假植逻辑运算符用于根据表达式的值返回真值或假植 1 算术运算符 …

Spring MVC中的DispatcherServlet、HandlerMapping和ViewResolver的作用

在Spring MVC框架中&#xff0c;DispatcherServlet、HandlerMapping和ViewResolver是核心组件&#xff0c;它们各自承担着不同的角色和任务&#xff1a; 1.DispatcherServlet&#xff1a;它是Spring MVC生命周期中的前端控制器&#xff0c;负责接收HTTP请求并将它们分发给相应的…

5.x86游戏实战-CE定位基地址

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;4.x86游戏实战-人物状态标志位 上一个内容通过CE未知的初始值、未变动的数值、…

机器学习SVR 随机森林 RBF神经网络做回归预测的MATLAB代码

SVR 参考这篇文章 Libsvm使用笔记【matlab】 close all; clc clear %% 下载数据 load(p_train.mat); load(p_test.mat); load(t_train.mat); load(t_test.mat); %% 数据归一化 %输入样本归一化 [pn_train,ps1] mapminmax(p_train); pn_train pn_train; pn_test mapminma…

设置用户访问hdfs

如果hadoop没有启Kerberos或者从Kerberos获取的用户为null&#xff0c;那么获取HADOOP_USER_NAME环境变量&#xff0c;并将它的值作为Hadoop执行用户。如果我们没有设置HADOOP_USER_NAME环境变量&#xff0c;那么程序将调用whoami来获取当前用户&#xff0c;并用groups来获取用…

JVM相关总结

JVM的些许问题 1.JVM内存区域划分 2.JVM类加载过程 3.JVM的垃圾回收机制 1.JVM的内存区域划分 一个运行起来的Java进程就是一个JVM虚拟机,需要从操作系统申请一大片内存,就会把内存划分成几个区域,每个区域都有不同的作用 常见的面试题 2.JVM类加载过程 熟练背诵 ! ! !…

printf内幕----编程内幕(1)

曾几何时&#xff0c;您有没有在夜深人静的时候想过一个问题&#xff0c;printf内部究竟做了什么&#xff1f;为何可以输出到屏幕上显示出来&#xff1f; 先看看这段熟悉的代码&#xff1a; // // Created by xi.chen on 2017/9/2. // Copyright © 2017 All rights rese…

WordPress中文网址导航栏主题风格模版HaoWa

模板介绍 WordPress响应式网站中文网址导航栏主题风格模版HaoWa1.3.1源码 HaoWA主题风格除行为主体导航栏目录外&#xff0c;对主题风格需要的小控制模块都开展了敞开式的HTML在线编辑器方式的作用配备&#xff0c;另外预埋出默认设置的编码构造&#xff0c;便捷大伙儿在目前…

入门JavaWeb之 JDBC 连接数据库

JDBC&#xff1a;Java Database Connectivity&#xff0c;Java 数据库连接 需要 jar 包支持&#xff1a; java.sql javax.sql mysql-connector-java&#xff08;连接驱动&#xff0c;必须导入&#xff09; 在 MySQL 先建个 jdbc 数据库后 USE jdbc; 执行后再 CREATE TABLE…

15- 22题聚合函数 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例子2.15 - 有趣的电影2.16 - 平均售价2.17 - 项目员工 I2.18 - 各赛事的用户注册率2.19 - 查询结果的质量和占比2.20 - 每月交易 I2.21 - 即时食物配送 II2.22 - 游戏玩法分析 IV 1. 相关知识点 函数 函数含义order by排序group by分组between 小值 an…

Chrome备份数据

Chrome备份数据 1、 导出谷歌浏览器里的历史记录 参考&#xff1a;https://blog.csdn.net/qq_32824605/article/details/127504219 在资源管理器中找到History文件&#xff0c;文件路径&#xff1a; C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default …