苹果一次性开源了8个大模型! 包含模型权重、训练日志和设置,OpenELM全面开源

不以开放性著称的苹果居然同时开源了大模型的权重、训练和评估框架,涵盖训练日志、多个保存点和预训练设置。同时升级计算机视觉工具包 CVNets 为 CoreNet!支持 OpenELM!

图片

▲图1.由Stable Diffusion3生成。

OpenELM是Apple苹果公司最新推出的语言模型系列,这次一共开源了8个模型,包括OpenELM-270M、OpenELM450M、OpenELM-1_1B和OpenELM-3B的预训练版和指令微调版。

 GPT-3.5研究测试:

https://hujiaoai.cn

GPT-4研究测试:

https://higpt4.cn

Claude-3研究测试(全面吊打GPT-4):

https://hiclaude3.com

图片

▲图2.

OpenELM 采用了decoder-only的架构,并遵循最新的大语言模型(LLM)的设计,包括:

  1. 在任何全连接层中不使用可学习的偏置参数,

  2. 使用RMSNorm进行预归一化,同时使用旋转位置嵌入(ROPE)来编码位置信息,

  3. 使用分组查询注意力(GQA)代替多头注意力(MHA),

  4. 将前馈网络(FFN)替换为SwiGLU FFN,

  5. 使用Flash Attention来计算缩放点积注意力,

  6. 使用与LLama相同的分词器。

图片

▲图3.OpenELM与开源LLM。OpenELM比最近的开放LLM OLMo的性能高出2.36%,同时需要的预训练令牌减少了2倍。

研究人员提到,现有的大型语言模型在模型的每个Transformer层中使用相同的配置,导致参数在各层之间均匀分布。

而OpenELM中的每个Transformer层具有不同的配置(例如,注意力头数量和前馈网络维度),导致模型的每个层中参数数量不同。这使得OpenELM能够更好地利用可用的参数以实现更高的准确性。

OpenELM采用按层分配参数的策略,有效提升了Transformer模型各层的参数配置效率,显著提高模型精度。例如,在大约十亿参数的预算下,OpenELM的准确率较OLMo提升了2.36%,且预训练所需的Token数量减少了一半。

为了实现Transformer层中参数的非均匀分配,研究人员调整了每个Transformer层中注意力头的数量和FFN维度调整系数。

假设具有均匀参数分配的标准Transformer模型有个Transformer层,每层输入的维度为。MHA有个头,每个头的维度为。另外,FFN的隐藏维度为,其中是FFN隐藏层维度的调整系数。

假设具有均匀参数分配的标准Transformer模型有个Transformer层,每层输入的维度为。MHA有个头,每个头的维度为。另外,FFN的隐藏维度为,其中是FFN隐藏层维度的调整系数。

引入参数和来缩放和。对于第层,和计算如下:

图片

在这里,和是超参数,用于调整注意力头的数量。类似地,和被用于改变FFN层的宽度。因此,使用和来改变标准Transformer层的配置会导致模型中参数的非均匀分配。需要注意的是,设置和时则对应了标准均匀的Transformer模型。

可靠但保守的OpenELM?

对于预训练,苹果使用的是公开数据集,如RefinedWeb、PILE、RedPajama和Dolma v1.6,总共大约包含1.8万亿个token。

图片

从数据上看,确实没有什么惊喜的感觉,因为既没有新的数据集发布,在规模上也没有创新,中规中矩

对于模型的指令调优,指令调优(Instruction Tuning)和参数高效微调(Parameter-efficient Fine-tuning,PEFT)。

对于指令调优,使用了经过清理的 UltraFeedback 数据集的变种,该数据集包含了60,000个用于指令调优的提示。作者使用 Alignment Handbook 库进行指令调优。在优化过程中,他们使用了统计拒绝抽样方法或直接偏好优化方法。结果显示,指令调优能够在不同的评估框架中将 OpenELM 的平均准确率提高1-2%。

图片

▲图5.指令调优提高了OpenELM不同规模上的准确性。

同时,在 CommonSense 推理训练和评估设置中使用了包含8个多项选择数据集、共计170,000的训练样本,用于进行参数高效微调研究。研究中使用了LoRA和DoRA等方法,将它们与OpenELM集成,并使用8个NVIDIA H100 GPU进行三轮微调。但是从结果上看,LoRA和DoRA都表现出相当的性能。

图片

▲图6.当OpenELM在常识推理基准上进行微调时,LoRA和DoRA表现出相当的性能。

研究人员将OpenELM与PyThia、Cerebras-GPT、TinyLlama、OpenLM、MobiLlama和OLMo等模型进行了比较。在相似的模型大小下,OpenELM在ARC、BoolQ、HellaSwag、PIQA、SciQ和WinoGrande等主流的任务测试中的多数任务上展现出了更高的准确度。尤其是,与OLMo模型相比,OpenELM在参数数量和预训练数据更少的情况下,准确率依然更高。

图片

▲图7.OpenELM与各种评估框架中公开可用的LLM的比较。

值的注意的是,研究人员还发现尽管OpenELM的准确性比OLMo更高,但它却比OLMo更慢。同时,OpenELM的处理时间中有相当大一部分是由于未经优化的RMSNorm所导致的。

因此研究人员通过用Apex的RMSNorm替换未经优化的RMSNorm,观察到OpenELM的吞吐量明显增加。

然而,与使用优化的LayerNorm的模型相比,OpenELM仍存在相当大的性能差距,部分原因是OpenELM有113个RMSNorm层,而OLMo只有33个LayerNorm层。并且Apex的RMSNorm并不针对小输入进行优化。

当将OLMo中的LayerNorm替换为RMSNorm后,生成吞吐量则出现了显著下降。

不管怎么说,通篇看下来,OpenELM的实验也并不是那么有诚意,毕竟Phi-3系列作为小规模LLM中的出色工作,苹果不拿来对比一下确实不够意思!

而且,OpenELM并未在论文中提到相关的部署测试,相比之下, Phi-3-mini 已经在 iPhone 14 上实现本地运行并完全离线,实现每秒超过 12 token的生成效率。这波啊,属实是倒反天罡了~

升级的 CVNets:支持更广泛的AI任务

此次随 OpenELM 开源的还有深度神经网络工具包 CoreNet。

CoreNet 基于苹果公司在去年开源的一个计算机视觉工具包 CVNets 拓展,涵盖计算机视觉之外更广泛的应用,允许研究人员和工程师为各种任务训练标准和新颖的小型和大型模型,包括基础模型(例如 CLIP 和 LLM)、对象分类、对象检测和语义分割

目前 CoreNet 已经支持了下面的工作:

  • OpenELM:具有开源训练和推理框架的高效语言模型系列

  • CatLIP:在 Web-scale Image-Text DataCLIP 上以 2.7 倍的预训练速度实现 CLIP 级视觉识别准确率

  • Reinforce Data, Multiply Impact:通过数据集强化提高模型准确性和稳健性

  • CLIP meets Model Zoo Experts:视觉增强的伪监督

  • FastVit:使用结构重参数化的快速混合视觉Transformer

  • Bytes Are All You Need: Transformers 直接操作的文件字节

  • MobileOne:改进的 One millisecond Mobile Backbone

  • RangeAugment:Efficient Online Augmentation with Range Learning

  • MobileViTv2:Separable Self-attention for Mobile Vision Transformers

  • CVNets:高性能计算机视觉库,ACM MM'22

  • MobileViT:轻量级、通用且适合移动设备的 Vision Transformer,ICLR'22

网友表示:

似乎可以将CoreNet中的模型导出为MLX可以运行的格式。与PyTorch相比,CLIP等模型实现了60%的加速(小型号的优势最大)。这可能表明他们消除了PyTorch MPS所遭受的一些驱动延迟。
我不禁觉得这次发布的时机与即将到来的苹果发布会有关。

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【产品经理修炼之道】- 如何分析一个产品

新人产品经理面试的时候,常被问到的一个问题是:如何评价一款产品。这个问题,我们可以从五个层级一个模型来解答,看你能分析到哪一层。 初级产品经理面试时,经常会问这样的问题: 1)你是最喜欢的…

U盘格式转换GPT格式转回DOS

当前格式 fdisk /dev/sdb# 在 fdisk 提示符下,输入以下命令删除分区: d # 选择要删除的分区编号(如 1、2 等) w开始转换 [rootnode-24 ~]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.37.4). Changes will remain in memory o…

网络安全实训Day17and18

写在前面 第17和18天都讲的sql注入,故合并 ​​​​​​ 网络空间安全实训-渗透测试 Web渗透 定义 针对Web站点的渗透攻击,以获取网站控制权限为目的 Web渗透的特点 Web技术学习门槛低,更容易实现 Web的普及性决定了Web渗透更容易找到目…

python项目练习-1

获取无忧书城的小说内容! import requests # 导入请求包 from lxml import etree # 导入处理xml数据包url https://www.51shucheng.net/wangluo/douluodalu/21750.html book_num 1 # 文章页数 download_urls [] # 定义一个空列表,表示我们下载过小…

提升你的C编程技能:使用cURL下载Kwai视频

概述 本文将介绍如何利用C语言以及cURL库来实现Kwai视频的下载。cURL作为一个功能强大的网络传输工具,能够在C语言环境下轻松地实现数据的传输。我们还将探讨如何运用代理IP技术,提升爬虫的匿名性和效率,以适应Kwai视频平台的发展趋势。 正…

《欢乐钓鱼大师》攻略,钓友入坑必备!

欢迎来到《欢乐钓鱼大师》!在这个游戏里,你可以尽情享受垂钓的乐趣,通过不断更换和升级高阶鱼竿,轻松地钓到各种稀有鱼类。因为许多玩家在挑战关卡时遇到了一些困难,所以今天我给大家带来了《欢乐钓鱼大师攻略指南》&a…

自动化机器学习流水线:基于Spring Boot与AI机器学习技术的融合探索

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

【毕设绝技】基于 SpringCloud 的在线交易平台商城的设计与实现-数据库设计(三)

毕业设计是每个大学生的困扰,让毕设绝技带你走出低谷迎来希望! 基于 SpringCloud 的在线交易平台商城的设计与实现 一、数据库设计原则 在系统中,数据库用来保存数据。数据库设计是整个系统的根基和起点,也是系统开发的重要环节…

静态链接lib库使用

lib库实际上分为两种,一种是静态链接lib库或者叫做静态lib库,另一种叫做动态链接库dll库的lib导入库或称为lib导入库。这两个库是不一样的,很多人都分不清楚,很容易混淆。 第一种是静态lib,包含了所有的代码实现的&am…

颠覆传统:机器人与AI大模型的结合,开启智能自动化的黄金时代!

引言:机器人技术与大模型的结合趋势 随着科技的迅速发展,机器人技术与大模型的结合已经成为必然趋势。这种结合不仅仅是技术的简单叠加,而是一种深层次的互补与融合,为机器人技术的应用开辟了新的可能性。大模型,能够…

02_c/c++开源库ZeroMQ

1.安装 C库 libzmq sudo apt install libzmq3-dev 实例: https://zeromq.org/get-started/?languagec&librarylibzmq# 编译依赖: pkg-config --cflags --libs libzmq or cat /usr/lib/x86_64-linux-gnu/pkgconfig/libzmq.pc -isystem /usr/include/mit-krb5 -I/usr/in…

[Android]引导页

使用Kotlin Jetpack Compose创建一个左右滑动的引导页, 效果如图. 1.添加依赖项 androidx.compose.ui最新版本查询:https://maven.google.com/web/index.html com.google.accompanist:accompanist-pager最新版本查询:https://central.sonatype.com/ 确保在 build.gradle (M…

无人机+集群组网:机载自组网电台技术详解

无人机与集群组网的结合为现代通信带来了独特的优势。在集群组网中,每个节点(例如无人机)都兼具路由器和主机的功能,它们不仅可以运行各种面向用户的应用程序,还可以执行路由协议,根据路由策略和路由表完成…

基于SpringBoot + Vue实现的校园(通知、投票)管理系统设计与实现+毕业论文(12000字)+答辩PPT+指导搭建视频

目录 项目介绍 运行环境 技术栈 效果展示 论文展示 总结 项目介绍 本系统包含管理员、用户、院校管理员三个角色。 管理员角色:用户管理、院校管理、单位类别管理、院校管理员管理、单位管理、通知推送管理、投票信息管理、通知回复管理等。 用户角色&#…

2款README.md生成器

🏷️ readme-md-generator 确保你已经安装了npx (npx从npm 5.2.0开始默认安装) 执行命令 只需在项目的根目录下运行以下命令并回答问题: npx readme-md-generator 在项目根目录执行上面bash命令,结果: # npx readme-md-generator D:\vinc…

上新啦!讯飞首个支持长文本、长图文、长语音的大模型发布

IDC预测,全球数据信息产生和复制量将在2025年达到175ZB(1ZB相当于1万亿GB)。假设每个人的大脑功能记忆容量约为1.25TB,那么需要超过280亿个人脑来处理这些信息,相当于全球人口的4倍。 4月26日,讯飞星火V3.…

安卓NetworkStatsManager使用及demo

目录 一、TrafficStats类简介二、demo示例 一、TrafficStats类简介 TrafficStats Android API 8提供了android.net.TrafficStats类。 通过此类能获取设备重启以来网络信息,部分函数如下所示: static long getMobileRxBytes() //获取通过移动数据网络…

[C++]STL---unordered_set与unordered_map的模拟实现

目录 前言 哈希桶的改造 哈希桶的初步改造 迭代器的模拟实现 operator() 类互相typedef时的前置声明 友元声明 迭代器的出口 插入Insert() 查找Find() 哈希表的最终改造 unordered_set的模拟实现 unordered_map的模拟实现 前言 unordered_set与set的区…

嵌入式系统中的实时操作系统(RTOS)深入应用与优化

引言 实时操作系统(RTOS)在嵌入式系统中扮演着至关重要的角色,特别是在需要快速响应和高度可靠性的应用中。 我将探讨如何在STM32单片机上实现RTOS,包括任务管理、内存管理以及中断处理,以提高系统的效率和响应速度。…

C++:const成员和取地址操作符

目录 一、const成员 二、取地址及const取地址操作符重载 一、const成员 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数 隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。 注&…
最新文章