Apple LLM: 智能基础语言模型(AFM)

news2024/9/24 11:33:24

今天想和大家分享一下我最近在arXiv.org上看到苹果发表的一篇技术论文 Apple Intelligence Foundation Language Models (https://arxiv.org/abs/2407.21075),概述了他们的模型训练。这虽然出乎意料,但绝对是一个积极的惊喜!

这篇论文有那么多作者参与,就知道这模型不简单。研究团队在这篇论文里给我们展示了两个超厉害的模型,它们是专门为苹果设备上的智能环境设计的。咱们就叫它们AFM,也就是“苹果基础模型”的简称。

具体来说,他们介绍了两个版本的AFM。一个是有30亿参数的,打算用在手机、平板或者笔记本上;另一个是服务器版的,更强大,但具体细节还没透露。

这些模型不光是用来聊天的,还能帮我们解决数学问题和编程难题。虽然论文里没细说编程训练的细节,但已经够让人期待了。

另外,AFM是密集型大型语言模型(LLM),不使用专家混合方法。

AFM预训练

首先,他们不仅用了公开的数据和得到授权的数据,还特别尊重了网站上的robots.txt文件,没去爬那些不让爬的数据,这就很讲究。再来,他们还提到了对基准数据做了净化处理,这可真是太用心了。

而且,他们还强调了一个关键点:数据的质量比数量要重要得多。你看,他们的设备模型词汇量是49k个token,服务器模型是100k个token,虽然都比Qwen 2的150k个token要少,但这说明他们更注重数据的精而不是多。

最有意思的是,他们的预训练过程不是简单的两步走,而是有三步呢!

  1. 先是核心的常规预训练。

  2. 然后是继续预训练,这时候他们把那些网络爬取的、质量不太高的数据权重降低了,而把数学和代码相关的数据权重提高了。

  3. 最后,他们还用了更长的序列数据和合成数据来扩展模型的上下文理解能力。

AFM模型经历的三步预训练过程概述。

让我们更详细地看看这三个步骤。

预训练I:核心预训练

这一步就是苹果预训练流程的起点,跟我们平时说的常规预训练差不多。他们的AFM服务器模型训练用了6.3万亿个token,批量大小和序列长度都是4096个token,这和Qwen 2模型的7万亿个token训练量挺接近的。

但是,AFM设备模型的来头可不小,它是从一个更大的6.4亿参数模型里面蒸馏和修剪出来的。这个过程有点像是用一个超级学霸(教师模型)来辅导一个普通学生(设备模型),让它变得更聪明。具体来说,就是用了一个叫做“蒸馏损失”的东西,把目标标签换成了真实标签和教师模型预测的最高概率标签的混合体,其中教师标签占90%的权重。

知识蒸馏现在在大型语言模型预训练中越来越流行了,Gemma-2也在用这个技术。以后我会详细介绍这个,现在咱们先简单说说。就是说,学生模型不仅学习原始数据集,还学习教师模型的输出,这样就能从教师那里得到更多的信息,比单打独斗学得多。

知识蒸馏的概述,其中一个小模型(这里,AFM设备3B模型)在原始训练token上以及来自一个更大的教师模型(这里,一个6.4B模型)的输出上进行训练。请注意,a)中的交叉熵损失是用于预训练LLMs的常规训练损失。

不过,这种方法也有缺点。首先,你得先训练出一个大的教师模型;然后,还得用这个大模型来预测所有训练数据的结果。这些预测可以提前算好存起来,但这需要很多存储空间;或者也可以在训练过程中实时计算,但这可能会让训练速度变慢。

预训练II:继续预训练

这个阶段有点小变化,就是把处理的数据量从4096个token增加到了8192个token,这就像是让模型能看得更远,理解更长的句子和段落。虽然这个数据集的token数量只有1万亿,但是比起核心预训练的数据量来说,那可是五倍的缩减,这就像是从海量信息中提炼出精华。

关键是,这一步特别强调用高质量的数据来训练,尤其是数学和编程相关的内容,这可真是下了功夫,要让模型在这些领域里更上一层楼。

不过,这里有个挺有意思的发现,就是之前提到的那个知识蒸馏方法,在这个阶段好像不太管用,研究人员发现它并没有带来什么好处。这可能说明,不同的训练阶段,可能需要不同的策略和方法。

预训练III:上下文扩展

咱们再来看看预训练的第三步,这个阶段虽然只涉及1000亿个token,跟第二步比起来,这数量只有10%,但这一步的重点在于扩大模型的视野,让它能处理更长的上下文,达到了32768个token。这就好比是给模型装了个望远镜,让它能看得更远,理解更长、更复杂的信息。

为了做到这一点,研究人员可是下了一番功夫,他们用合成的长上下文问答数据来丰富训练集。这就像是给模型提供了更多的练习题,让它通过解决这些问题来提高自己的能力。

这种做法不仅能让模型在处理长文本时更加得心应手,还能帮助它更好地理解和生成连贯、逻辑性强的长段落内容。这对于提升模型在各种复杂任务中的表现,比如写文章、编故事或者进行长篇对话等,都是非常有帮助的。

总的来说,这三个预训练步骤,每一步都有它的独特之处和重点,共同为打造一个强大、灵活、多才多艺的模型打下了坚实的基础。

AFM预训练技术总结。

AFM后训练:精益求精

苹果在模型的后训练阶段也是下了一番苦功,他们的方法和预训练一样全面。他们用了人工标注的数据和合成数据,而且特别强调质量比数量重要。这就像是在说,我们不追求数据的堆砌,而是要数据的精挑细选。他们没有固定死板地按照某个比例来混合数据,而是通过多次实验来调整,找到那个最佳的平衡点。

后训练分为两个主要步骤:首先是监督指令的微调,然后是多轮的人类反馈强化学习(RLHF)。

这里特别值得一提的是,苹果在这个RLHF阶段引入了两个新算法:

  1. 带有教师委员会的拒绝采样微调(iTeC):这个算法就像是有个智囊团,它结合了拒绝采样和多种偏好调整技术,比如SFT、DPO、IPO和在线RL。苹果没有只依赖一种算法,而是每种方法都单独训练模型,然后让这些模型产生响应,由人类来评估和打标签。这些标签数据再用来迭代训练奖励模型。在拒绝采样阶段,模型委员会会给出多个响应,然后奖励模型挑出最好的那个。

  2. 带有镜像下降策略优化的RLHF:这个算法被选中是因为它比常用的PPO(近端策略优化)更有效。

这种基于委员会的方法虽然复杂,但对于相对较小的模型(大约30亿参数)来说是可行的。如果是更大的模型,比如Llama 3.1中的70B或405B参数模型,那挑战性就大了。

总的来说,苹果在后训练阶段的这些操作,都是为了进一步提升模型的性能,让模型在实际应用中能表现得更加出色。

 

结论

苹果在预训练和后训练上的策略相对全面的,这可能是因为他们面临的风险确实很大——毕竟,这些模型是要部署在数以百万计,甚至数十亿的设备上的。不过,也正是因为这些模型的规模相对较小(3B模型的规模还不到最小的Llama 3.1模型的一半),他们才能够尝试这么多的技术手段。

他们的一大亮点是,并没有简单地在RLHF和DPO之间做选择,而是通过委员会的形式,综合使用了多种偏好调整算法。

另外,他们还明确地将问答数据纳入了预训练的一部分,这一点我在之前的文章《指令预训练LLMs》中也有讨论过。

总的来说,这份技术报告给人带来了清新的感觉,也让人对苹果的模型训练方法充满了期待。

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

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

相关文章

Dubbo如何传递链路追踪id?

1.什么是链路追踪? 分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。 链路跟踪主要功能: 故障快速定…

ET6框架(五)ECS组件式编程

文章目录 一、什么是ECS:二、ECS编程原则:三、组件生命周期: 一、什么是ECS: ECS即Entity、Component、System的简称,遵循组合优于继承的原则 Entity(实体) : 实体是一个概念,是指存在你游戏世界中的一个独立物体,是一…

图机器学习实战:从数据源到可视化

《动手学图机器学习》并不是一本纯粹介绍图机器学习理论的著作,Alessandro Negro 博士作为科学家和 Reco4 公司的 CEO,长期维护图数据源的推荐系统。他结合机器学习工程和图机器学习方法,通过推荐引擎、欺诈检测和知识图谱等案例,…

【书生2.4】InternLM + LlamaIndex RAG 实践

InternLM LlamaIndex RAG 实践 1 环境安装2 材料准备3 还原实验4 更换问题验证rag 【Intern Studio的gpu不足。本实验使用自有服务器】 1 环境安装 conda create -n llamaindex python3.10 conda activate llamaindex conda install pytorch2.0.1 torchvision0.15.2 torchau…

新160个crackme - 042-crackme

运行分析 提示需要key.dat文件 同目录下创建一个key.dat,提示key.dat内容不对 PE分析 C程序,32位,无壳 静态分析&动态调试 ida搜索字符串,找到关键字符串双击进入关键函数 对关键函数进行分析,注释如上当满足67行公…

信息安全数学基础(4)最大公因数

前言 在信息安全数学基础中,最大公因数(Greatest Common Divisor, GCD)是一个核心概念,它在密码学、数论等多个领域都有广泛应用。以下是对最大公因数的详细阐述: 一、定义 设a和b是两个非零整数,若整数d同…

论文阅读——Compact Single-Feed Dual-Mode Antenna for Active RFID Tag Application

文章目录 摘要一、天线设计A. 天线结构B. 天线演进 二、天线仿真与测试总结 论文来源:https://ieeexplore.ieee.org/document/7247651 摘要 文章提出了一种用于主动射频识别(RFID)标签应用的紧凑型单馈双模天线。该天线由一个位于FR4基板上的…

【读点论文】Scene Text Detection and Recognition: The Deep Learning Era

Scene Text Detection and Recognition: The Deep Learning Era Abstract 随着深度学习的兴起和发展,计算机视觉发生了巨大的变革和重塑。场景文本检测与识别作为计算机视觉领域的一个重要研究领域,不可避免地受到了这波革命的影响,从而进入…

ARM32开发——(二十一)ADC系统工作原理

1. ADC硬件结构 内部结构简化框图 2. ADC转换模式 2.1 单次转换,非扫描模式 2.2 连续转换,非扫描模式 2.3 单次转换,扫描模式 2.4 连续转换,扫描模式 3. 规则组和注入组 4. ADC数据对齐 5. ADC转换时间 总转换时间采样时间12 个 CK_ADC 周期 6. ADC内部校准 ADC有一个内置自…

前端速通面经八股系列(六)—— Vue(下)

接上ueue Vue下篇 四、路由1. Vue-Router 的懒加载如何实现2. 路由的hash和history模式的区别1. hash模式2. history模式3. 两种模式对比 3. 如何获取页面的hash变化4. $route 和$router 的区别5. 如何定义动态路由?如何获取传过来的动态参数?6. Vue-rou…

读书笔记:《深入理解Java虚拟机》(2)

Java内存区域与内存溢出异常 Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里 面的人却想出来。 对于从事C、C程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”&#xf…

[Leetcode 435][Medium]-无重叠区间-贪心

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 题目地址 二、整体思路 要求移除区间的最小个数,也就是要求使得剩余区间互不重叠的最大区间数。 可以先将区间按右端点的值进行升序排序,然后遍历数组,在此基础上保留左端点>最小右端点的值…

【C++ Primer Plus习题】7.7

问题: 解答: #include <iostream> using namespace std;#define SIZE 10double* fill_array(double* begin, double* end) {for (begin; begin < end; begin){cout << "请输入值:";cin >> *begin;if (cin.fail()){cout << "非法数字…

PCIE-校验和纠错

各种编码&#xff1a; &#xff08;1&#xff09;ECRC/LCRC (为什么需要ECRC?) &#xff08;3&#xff09;PCRC&#xff08;Plaintext CRC&#xff0c;纯文本 CRC&#xff09;&#xff1a;是 IDE TLP 中的概念&#xff0c;在大多数方面&#xff0c;PCRC的计算方法与ECRC相…

【论文阅读】为大规模航空图像应用神经辐射场

【论文阅读】为大规模航空图像应用神经辐射场 ABSTRACTI. INTRODUCTIONV. EXPERIMENTSA. Evaluations on the entire datasetsA.1. State-of-the-Art comparisonA.2. Cloud-to-Cloud comparisonA.3. Accuracy and completeness B. Evaluations on the selected regionsB.1. Fi…

时序预测相关论文阅读笔记

笔记链接&#xff1a; 【有道云笔记】读论文&#xff08;记录&#xff09;https://note.youdao.com/s/52ugLbot用于个人学习记录。

Python-MNE-源空间和正模型07:修复BEM和头表面

有时在创建BEM模型时&#xff0c;由于可能出现的一系列问题(例如&#xff0c;表面之间的交叉)&#xff0c;表面需要手动校正。在这里&#xff0c;我们将看到如何通过将表面导出到3D建模程序blender&#xff0c;编辑它们&#xff0c;并重新导入它们来实现这一点。我们还将给出一…

峟思大坝安全监测系统:科技筑牢工程稳定的基石

在全球工程建设的宏伟蓝图中&#xff0c;大坝安全始终占据着举足轻重的地位。随着科技的日新月异&#xff0c;大坝安全监测系统作为守护工程稳定的“哨兵”&#xff0c;正步入一个前所未有的创新与发展阶段。这一系统不仅是大坝健康管理的关键工具&#xff0c;更是确保民生安全…

使用pgdump、pgrestore迁移数据表到docker部署的postgis

将本地数据同步到内网服务器&#xff0c;使用的postgis&#xff0c;表含空间字段 备份 本地使用pgadmin 4进行备份&#xff0c;pgrestore的命令参数找起来麻烦&#xff0c;这个可以界面操作&#xff0c;比较方便 说明 说明的截图来自pgadmin&#xff0c;点击这个打开 …

搭建数据库启前后端环境

1、 安装postgre&#xff0c;修改pg_hba.conf文件 2、安装dbeaer 3、任务管理器-服务&#xff1a;查看是否启动postgresql-x64-11 4、连接测试&#xff1a;新建数据库连接 http://127.0.0.1:14269/browser/# pgAdmin等于dbeaver 5、创建数据库&#xff1a; 6、启动后端…