超越 Transformer开启高效开放语言模型的新篇章

news2024/11/15 15:55:31

在人工智能快速发展的今天,对于高效且性能卓越的语言模型的追求,促使谷歌DeepMind团队开发出了RecurrentGemma这一突破性模型。这款新型模型在论文《RecurrentGemma:超越Transformers的高效开放语言模型》中得到了详细介绍,它通过结合线性递归和局部注意力机制,承诺重新定义语言处理的标准。

模型架构

RecurrentGemma模型的架构是其高效性能的核心,它基于Google DeepMind提出的Griffin架构,这一架构通过结合线性递归和局部注意力机制,为处理语言任务提供了新的可能性。在深入探究RecurrentGemma的模型架构时,我们首先需要理解Griffin架构的基础,以及RecurrentGemma是如何在其基础上进行创新和优化的。

RecurrentGemma对Griffin架构进行了一项关键的修改,这一修改涉及输入嵌入的处理。模型的输入嵌入乘以了一个常数,这个常数等于模型宽度的平方根。这种处理方式对模型的输入端进行了调整,但并没有改变输出端,因为输出嵌入没有应用这个乘法因子。这种调整允许模型更有效地处理信息,同时保持了模型宽度的一致性。这种修改在模型的数学表达和信息流中起到了重要作用。它不仅优化了模型对输入数据的初始处理,而且通过调整嵌入的尺度,有助于模型更好地捕捉和表示语言的特征。

RecurrentGemma模型的性能和效率在很大程度上由其超参数决定。这些超参数是模型定义的关键部分,它们包括但不限于以下几个方面:

  • 总参数量:2.7亿个参数,这表明了模型的复杂性和容量。
  • 非嵌入参数量:2.0亿个参数,这是模型中不包括嵌入层的参数数量。
  • 嵌入参数量:0.7亿个参数,这部分参数与模型的词汇嵌入直接相关。
  • 词汇量:25.6万个词汇,这是模型能够理解和生成的词汇总数。
  • 模型宽度:2560,这代表了模型内部表示的维度。
  • RNN宽度:2560,这是循环神经网络部分的宽度。
  • MLP扩展因子:3,这影响了模型中多层感知机的扩展程度。
  • 深度:26层,这是模型的层数,反映了模型处理数据的深度。
  • 注意力头数:10,这表示模型在处理序列时使用的注意力机制的头数。
  • 局部注意力窗口大小:2048,这定义了局部注意力机制在序列上的作用范围。
RecurrentGemma模型的关键超参数,包括总参数数、非嵌入参数数、嵌入参数数、词汇量大小、模型宽度、RNN宽度、MLP扩展因子、深度、注意力头数和局部注意力窗口大小。

表1提供了这些关键超参数的总结,更详细的模型定义可以在De等人的Griffin论文中找到。这些超参数共同构成了RecurrentGemma模型的基础,使其能够在保持较小内存占用的同时,实现对长序列的高效处理。

通过对Griffin架构的精心修改和超参数的细致调整,RecurrentGemma模型不仅在理论上展现了其先进性,更在实际应用中证明了其高效性和强大的语言处理能力。

训练细节

RecurrentGemma-2B的预训练使用了2万亿个token,这一数据量虽然小于Gemma-2B使用的3万亿个token,但依然构成了一个庞大的数据集,为模型提供了丰富的语言信息。

预训练的数据来源主要是英文的网络文档、数学和代码。这些数据不仅涵盖了广泛的主题和领域,而且经过了精心的筛选和清洗,以减少不想要或不安全的内容,并排除了个人或敏感数据。此外,为了确保评估的公正性,所有评估集都被排除在预训练数据集之外。

RecurrentGemma-2B在预训练中首先使用了一个大型的通用数据混合,然后转向更小但更高质量的数据集进行进一步训练。这种分阶段的训练方法有助于模型在广泛的数据上学习通用的语言表示,然后通过更专业的数据进行细化和优化。

在预训练之后,RecurrentGemma-2B通过指令调整和RLHF算法进行了微调。这一过程旨在优化模型,使其能够更好地遵循指令并生成具有高奖励的响应。

指令调整(Instruction Tuning)是一种训练方法,它使模型能够理解和响应特定的指令格式。RecurrentGemma-2B被训练以遵守特定的对话格式,这种格式通过特定的控制标记来定义,例如用户的输入和模型的输出分别用不同的标记来标识。

RLHF算法是一种先进的微调技术,它通过强化学习框架来优化模型的输出。在RLHF中,模型的输出会根据人类反馈进行评估,并根据评估结果进行调整,以提高输出的质量和奖励。这种算法使得模型能够学习如何在不同的上下文中生成更合适的响应。

通过指令调整和RLHF微调,RecurrentGemma-2B不仅能够生成高质量的语言输出,还能够在对话和遵循指令方面表现出色。这种训练方法为模型提供了灵活性和适应性,使其能够在各种应用场景中发挥作用。

用于Gemma模型的指令调整和强化学习人类反馈(RLHF)的相关格式化控制标记,这些标记用于定义用户和模型的对话格式

对话示例,展示了如何使用控制标记来格式化用户和模型之间的对话

通过这种方式,RecurrentGemma-2B成为了一个强大的语言模型,能够在多种任务和环境中提供高效和准确的语言处理能力。

评估

自动化基准测试是评估RecurrentGemma-2B性能的第一步。这些测试涵盖了多种流行的下游任务,包括但不限于问答、文本摘要、语言推理等。RecurrentGemma-2B在这些任务上的表现与Gemma-2B进行了比较,结果显示,尽管RecurrentGemma-2B训练的token数量较少,但其性能与Gemma-2B相当。

RecurrentGemma-2B在如MMLU 5-shot、HellaSwag 0-shot、PIQA 0-shot等多个学术基准测试中的表现与Gemma-2B相近,这证明了其在不同任务上的通用性和有效性。这些测试结果不仅展示了模型对语言的深入理解能力,也反映了其在实际应用中的潜力。

RecurrentGemma-2B与Gemma-2B在多个学术基准测试中的性能比较,包括不同的评估指标和两种模型的得分

除了自动化基准测试,RecurrentGemma-2B还经过了人类评估的检验。人类评估是评估语言模型能否生成符合人类期望的响应的关键步骤。在这个过程中,RecurrentGemma-2B的指令调整变体(RecurrentGemma-2B-IT)与Mistral 7B v0.2 Instruct模型进行了对比。

人类评估使用了大约1000个针对创意写作和编码任务的指令遵循的提示集合。RecurrentGemma-2B-IT在这个集合上的表现令人印象深刻,其胜率达到了43.7%,仅略低于Gemma-1.1-2B-IT的45.0%。这一结果表明RecurrentGemma-2B在理解和执行复杂指令方面的能力与现有的先进模型相当。

RecurrentGemma-2B-IT还在大约400个测试基本安全协议的提示集合上进行了评估,其胜率达到了59.8%,显示出模型在遵循安全准则方面的优势。

RecurrentGemma-2B-IT模型与Mistral 7B v0.2 Instruct模型在人类评估中的胜率比较,包括模型安全性和指令遵循能力

通过结合自动化基准测试和人类评估,RecurrentGemma-2B的性能得到了全面的检验。自动化测试提供了对模型在各种语言任务上性能的定量评估,而人类评估则提供了对模型输出质量的定性理解。这种综合评估方法确保了RecurrentGemma-2B不仅在理论上表现出色,而且在实际应用中也能提供高质量的语言生成和理解能力。

推理速度基准测试

推理速度是衡量语言模型实用性的关键指标之一,尤其是在处理长序列数据时。RecurrentGemma-2B在推理速度上的优化是其区别于传统Transformer模型的一大亮点。在传统的Transformer模型中,为了进行有效的序列处理,模型需要检索和加载键值(KV)缓存到设备内存中。随着序列长度的增加,KV缓存的大小也会线性增长,这不仅增加了内存的使用,也限制了模型处理长序列的能力。尽管可以通过局部注意力机制减小缓存的大小,但这通常以牺牲一定的性能为代价。

RecurrentGemma-2B通过其创新的架构设计,解决了上述问题。它将输入序列压缩成固定大小的状态,而不是依赖于随序列长度增长的KV缓存。这种设计显著减少了内存的使用,并且使得模型在处理长序列时能够保持高效的推理速度。

在基准测试中,RecurrentGemma-2B展现出了显著的吞吐量优势。如图1a所示,在单个TPUv5e设备上,从2k个token的提示中采样不同长度序列时,RecurrentGemma-2B能够实现每秒高达6k个token的吞吐量,而Gemma模型则随着缓存的增长而吞吐量下降。

RecurrentGemma-2B的固定状态大小是其高效推理的关键。与Gemma模型相比,RecurrentGemma-2B的状态不会随着序列长度的增加而增长,这意味着它可以不受限制地生成任意长度的序列,而不受主机内存大小的限制。这一点在长序列处理中尤为重要,因为它允许模型在保持高性能的同时,处理更长的文本数据。

推理速度的提升不仅在理论上具有重要意义,更在实际应用中展现出其价值。在资源受限的环境中,如移动设备或边缘计算设备,RecurrentGemma-2B的高吞吐量和低内存占用特性使其成为一个理想的选择。此外,高效的推理速度也使得模型能够更快地响应用户请求,提供更加流畅的交互体验。

(a) 展示了从2k tokens提示中采样不同长度序列时,在单个TPUv5e设备上每秒生成的最大token数。RecurrentGemma在所有考虑的序列长度上都实现了更高的吞吐量。
(b) 展示了处理不同长度提示时的吞吐量,与自回归采样不同,提示是并行处理的。Gemma和RecurrentGemma在处理提示时的速度相似。

负责任的部署

在人工智能领域,模型的部署不仅仅是技术的实现,更是对安全和伦理责任的承担。RecurrentGemma-2B的部署策略充分体现了对这些关键因素的重视。

在模型部署之前,RecurrentGemma-2B经过了一系列标准学术安全基准测试,这些测试旨在评估模型可能产生的不当行为或偏见。通过这些测试,开发团队能够识别并减轻潜在的风险,确保模型在公开使用时的安全性。

RecurrentGemma-2B模型在安全学术基准测试中的结果,包括预训练检查点和指令调整变体的结果

除了自动化的安全基准测试,RecurrentGemma-2B还接受了独立团队的伦理和安全评估。这一过程涉及对模型进行全面的审查,包括但不限于其对特定群体的公平性、避免产生有害输出的能力,以及对用户隐私的保护。

尽管进行了严格的测试和评估,但考虑到RecurrentGemma-2B可能被应用于多种不同的场景,开发团队强调无法覆盖所有可能的使用案例。因此,他们建议所有使用者在部署模型之前,根据自己的特定用例进行额外的安全测试。这一建议体现了对用户责任的强调,确保每个部署都是经过深思熟虑和定制化的。

负责任的部署还包括对模型性能和限制的透明度。开发团队提供了详细的模型架构和训练细节,使用户和研究人员能够理解模型的工作原理和潜在局限。此外,团队承诺对模型进行持续的监控和改进,以应对新出现的风险和挑战。

负责任的部署还涉及到与更广泛的AI社区和多方利益相关者的合作。通过分享研究成果、参与公开讨论和接受外部反馈,RecurrentGemma的开发团队展示了其对开放科学和协作的承诺。

随着人工智能领域的不断扩展,RecurrentGemma作为结合了创新架构设计理念、严格的训练和评估过程的典范,证明了在语言理解和生成方面突破可能性的界限的潜力。

论文链接:https://arxiv.org/abs/2404.07839

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

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

相关文章

软件工程课设——成绩管理系统

软件工程课设——成绩管理系统 该文档是软件工程课程设计,成绩管理子系统的开发模块仓库。 功能分析 从面向的用户分,成绩管理子系统主要面向三类用户,即至少需要满足这三类用户的需求: 学生:学生是成绩管理系统的…

实现keepalive+Haproxyde 的高可用

需要准备五台实验机 一台客户机:test1 两台:一主一备的实验机:test2 test3 两台真实服务器:nginx1 nginx2 实验 首先在两台实验机上安装Haproxy 安装依赖环境,并将Haproxy的包进行解压处理 yum install -y pcre…

什么ISP?什么是IAP?

做单片机开发的工程师经常会听到两个词:ISP和IAP,但新手往往对这两个概念不是很清楚,今天就来和大家聊聊什么是ISP,什么是IAP? 一、ISP ISP的全称是:In System Programming,即在系统编程&…

vscode常用组件

1.vue-helper 启用后点击右下角注册,可以通过vue组件点击到源码里面 2.【Auto Close Tag】和【Auto Rename Tag】 3.setting---Auto Reveal Exclude vscode跳转node_modules下文件,没有切换定位到左侧菜单目录> 打开VSCode的setting配置&#xff…

Redis的使用(四)常见使用场景-缓存使用技巧

1.绪论 redis本质上就是一个缓存框架,所以我们需要研究如何使用redis来缓存数据,并且如何解决缓存中的常见问题,缓存穿透,缓存击穿,缓存雪崩,以及如何来解决缓存一致性问题。 2.缓存的优缺点 2.1 缓存的…

Transformer模型解析:走进自然语言处理的新时代

UPDATED:2023 年 1 月 27 日,本文登上 ATA 头条。(注:ATA 全称 Alibaba Technology Associate,是阿里集团最大的技术社区)UPDATED:2023 年 2 月 2 日,本文在 ATA 获得鲁肃点赞。&…

华为OD算法题汇总

60、计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。注意:网络信号可以绕过阻隔物 array[m][n],二维数组代表网格地图 array[i][j]0,代表i行j列是空旷位置 a…

数据结构(4.0)——串的定义和基本操作

串的定义(逻辑结构) 串,即字符串(String)是由零个或多个字符组成的有序数列。 一般记为Sa1a2....an(n>0) 其中,S是串名,单引号括起来的字符序列是串的值;ai可以是字母、数字或其他字符;串中字符的个数n称为串的长度。n0时的…

分布式对象存储minio

本教程minio 版本:RELEASE.2021-07-*及以上 1. 分布式文件系统应用场景 互联网海量非结构化数据的存储需求 电商网站:海量商品图片视频网站:海量视频文件网盘 : 海量文件社交网站:海量图片 1.1 Minio介绍 MinIO 是一个基于Ap…

Spring解决循环依赖:三级缓存

1.什么是循环依赖 通俗来讲,循环依赖指的是一个实例或多个实例存在相互依赖的关系(类之间循环嵌套引用)。 2.Spring如何解决循环依赖 首先,先介绍Spring是如何创建Bean的。 (1)createBeanInstance&…

【LoadRunner】博客笔记项目 性能测试报告

文章目录 前言一、博客笔记项目性能测试介绍二、编写性能测试脚本(VUG) 2.1 测试脚本编写步骤 2.2 脚本总代码和结果分析三、创建测试场景(Controller) 3.1 测试场景创建实现步骤四、生成测试报告(Anal…

集合相关知识

string final,不能追加,需要重新new一个 stringbuild,内容 可变,可以重新赋能,能够追加,空间不足创造一个更大的,然后复制过去 stringbufferbuild 线程安全 javac编译,字符串加号…

SpringBoot介绍以及第一个SpringBoot程序

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 2.第一个SpringBoot程序2.1Spring Boot介绍2.2使用idea创建Spring Boot程序2.2.1 社区版idea2.2.2专业版idea2.2.3创建SpringBoot项目2.2.4项目代码和目录介绍目录介绍pom文件 2.3Web…

Linux 上 TTY 的起源

注:机翻,未校对。 What is a TTY on Linux? (and How to Use the tty Command) What does the tty command do? It prints the name of the terminal you’re using. TTY stands for “teletypewriter.” What’s the story behind the name of the co…

【边缘计算网关教程】6.松下 Mewtocol TCP 协议

前景回顾:【边缘计算网关教程】5.三菱FX3U编程口通讯-CSDN博客 松下 Mewtocol TCP 协议 适配PLC:松下FP0H 松下XHC60ET 1. 硬件连接 Mewtocol TCP协议采用网口通信的方式,因此,只需要保证网关的LAN口和松下PLC的IP在一个网段即…

STM32怎么把VDD与VSS引脚配置为GPIO?

在 STM32 微控制器中,VDD 和 VSS 引脚是供电引脚,分别用于电源和接地。我收集归类了一份嵌入式学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学,敲个…

使用base64通用文件上传

编写一个上传文件的组件 tuku,点击图片上传后使用FileReader异步读取文件的内容&#xff0c;读取完成后获得文件名和base64码&#xff0c;调用后端uploadApi,传入姓名和base64文件信息&#xff0c;后端存入nginx中&#xff0c;用于访问 tuku.ts组件代码&#xff1a; <templa…

变量筛选—特征包含信息量

在变量筛选中,通过衡量特征所包含信息量大小,决定是否删除特征,常用的指标有单一值占比、缺失值占比和方差值大小。单一值或缺失值占比越高,表示特征包含信息量越少,不同公司设置不同阈值,一般单一值、缺失值占比高于95%,建议删除。方差值越小,代表特征包含信息量越小。…

JMeter进行HTTP接口测试的技术要点

参数化 用户定义的变量 用的时候 ${名字} 用户参数 在参数列表中传递 并且也是${} csv数据文件设置 false 不忽略首行 要首行 从第一行读取 true 忽略首行 从第二行开始 请求时的参数设置&#xff1a; 这里的名称是看其接口需要的请求参数的名称 这里的变量名称就是为csv里面…

C语言程序设计实例2

C语言程序设计2 问题2_1代码2_1结果2_1 问题2_2代码2_2结果2_2 问题2_3代码2_3结果2_3 问题2_1 函数 f u n fun fun的功能是&#xff1a;计算如下公式前 n n n项的和&#xff0c;并作为函数值返回。 S 1 3 2 2 3 5 4 2 5 7 6 2 ⋅ ⋅ ⋅ ( 2 n − 1 ) ( 2 n 1 ) …