Llama-3的竞争对手来了——可运行在iPhone上的小体量高性能LLM模型Phi-3
![](http://www.pozzm.com/caiji/data/images/2024-05-20/782ebf941c41fba69956ccdb7e39d0b0.png)
简介
熟悉我的文章的读者可能还记得我以前报道《课本就是你所需要的一切》(https://medium.com/@mgunton7/the-impact-of-better-data-on-llms-46153ba26795)时的情景,这是微软的一篇论文,展示了高质量的数据如何对模型性能产生巨大影响。文章中的新发现直接驳斥了模型必须巨大才能发挥作用的观点。值得庆幸的是,这篇论文的研究人员一直在继续他们的工作,最近又发表了一些让我觉得非常令人兴奋的东西。
他们发表的最新论文《Phi-3技术报告:手机本地运行的高性能语言模型》(https://arxiv.org/pdf/2404.14219)也许正解释了相关的最大发现。
接下来,让我们深入了解作者从Phi-2模型中改变了什么,他们是如何进行模型训练的,以及该模型在iPhone上是如何工作的。
关键术语
在深入了解上述模型的体系结构之前,首先需要了解几个关键概念。如果您已经知道这些内容,请随时跳到下一节。
第一个关键概念是模型的参数(parameters),它是指模型在训练过程中学习的权重和偏差的数量。如果你有10亿个参数,那么你就有10亿的权重和偏差来决定模型的性能。参数越多,神经网络就越复杂。第二个关键概念是头(head),它是指转换器中的自注意机制所具有的键、值和查询向量的数量。第三个关键概念是层(layers),它是指转换器的神经网络中存在的神经段的数量;其中,隐藏维度是典型隐藏层中的神经元数量。
此外,分词器(Tokenizer)是一个软件组件,它能够把你的输入文本转换成一个嵌入,然后由转换器使用它。词汇大小(vocabulary size)是指在其上进行训练的模型的唯一符号的数量。转换器的块结构(block structure)是指为特定模型选择的层、头、激活函数、分词器和层规范化的组合。
图片来自于论文“GOA:从多头检查点训练广义的多查询转换器模型”(https://arxiv.org/pdf/2305.13245)
最后,还有一个重要术语是分组查询注意力(GQA:Grouped-Query Attention),它是我们优化多头注意力以减少训练和推理过程中的计算开销的一种方法。正如您从下图中看到的,GQA采用了中间方法——我们采用了1:1:M的方法,而不是将1个值和1个键与1个查询配对,其中许多比整个查询都小。这样做仍然可以从多查询注意力(MQA)中获得训练成本效益,同时最大限度地减少我们随后看到的性能下降。
Phi 3体系架构
让我们从这个模型背后的体系架构开始讲起。研究人员发布了3种不同的仅包含解码器的模型,分别是phi-3-mini、phi-3-small和phi-3-medium,每种模型都使用了不同的超参数。
phi-3-mini
- 38亿个参数
- 32个头
- 32个层
- 3072个隐藏尺寸
- 4k大小的符号默认上下文长度
- 词汇量大小为32064
- 权重以bfloat16类型存储
- 使用3.3万亿个符号进行训练
phi-3-small
- 70亿个参数
- 32个头
- 32个层
- 4096个隐藏维度
- 8k大小的符号默认上下文长度
- 词汇量大小为100352
- 权重以bfloat16类型存储
- 使用4.8万亿个符号进行训练
phi-3-medium
- 140亿个参数
- 40个头
- 40个层
- 3072个隐藏尺寸
- 使用4.8万亿个符号进行训练
现在,我们来比较一下它们一些差异。首先,phi-3-mini模型是使用典型的多头注意力训练的。虽然论文中没有提到,但让我怀疑的是,由于该模型的大小大约是其他两个模型的一半,因此与多头相关的训练成本并不令人反感。当然,当它们扩展到phi-3-small时,使用的是分组查询注意力,其中4个查询连接到1个键。
此外,他们使phi-3-mini的嵌段结构尽可能接近LLaMa-2结构。这里的目标是允许开源社区继续他们对LLaMa-2和Phi-3的研究。这对于进一步理解块结构的力量是有意义的。
然而,phi-3-small没有使用LLaMa的块结构,而是选择使用Tiktoken分词器,使用交替的密集注意力层和新的块稀疏注意力层。此外,他们在这些模型的训练数据集中添加了10%的多语言数据。
训练和数据优化组合
与Phi-2类似,研究人员主要投资于高质量的数据。他们在生成数据来训练模型时使用了类似的“教育价值”范式,选择使用比上次多得多的数据。他们分两个阶段创建数据。
第一阶段涉及寻找他们发现对用户具有高“教育价值”的网络数据。这里的目标是为模型提供一般知识。然后,第二阶段获取第一阶段数据的子集,并生成数据,教导模型如何进行逻辑推理或获得特定技能。
这里面的挑战是,如何确保来自每个语料库的数据组合适合正在训练的模型的规模(即phi-3-small与phi-3-mini)。这就是“数据优化”机制背后的理念,在该机制中,您提供给LLM进行训练的数据为其块结构提供了最佳能力。换言之,如果你认为数据是训练一个好的LLM的关键区别,那么通过数据找到正确的技能组合来展示模型与找到好的数据同样重要。研究人员强调,他们希望该模型具有比知识更强的推理能力,从而从第二阶段语料库中选择的数据比从第一阶段语料库中更多。
论文(https://arxiv.org/pdf/2404.14219)中的图2强调了数据优化的潜在关系
有趣的是,当他们用与训练phi-3-small大致相同的数据混合物训练phi-3-medium时,他们注意到从7B参数到14B的改进远比从3.8B到7B的改进有限。作者怀疑这不是块结构的限制,而是他们用来训练phi-3-medium的数据混合。
后期训练
该团队使用监督微调(Supervised Fine Tuning:SFT)和直接偏好优化(DPO:Direct Preference Optimization)技术来改进训练后的模型。有兴趣深入了解DPO的读者可以从链接https://medium.com/towards-data-science/understanding-the-implications-of-direct-preference-optimization-a4bbd2d85841处查看我的博客文章。监督微调是一种迁移学习方法,我们使用自定义数据集来提高LLM在该数据集上的能力。作者使用SFT来提高模型在数学、编码、推理和安全等不同领域的能力。然后,他们使用DPO进行聊天优化,引导其远离他们想要避免的回应,转向理想的回应。
正是在这个阶段,作者将phi-3-mini的上下文窗口从4k个符号大小扩展到128k个符号。他们把用来做这件事的方法命名为“长绳索(Long Rope)”。作者声称,这两种上下文类型之间的性能是一致的,考虑到上下文长度的巨大增加,这是一件大事。如果有足够的兴趣,我将再单独发表一篇关于该论文中相关研究成果的博客。
手机使用场景下的量化
尽管上述这些模型很小,但要让这些模型在手机上跑起来,仍然需要进一步最小化。通常,LLM的权重被存储为浮点形式;例如,Phi-3的原始权重是bfloat16,这意味着每个权重占用内存中的16位。虽然16位可能看起来微不足道,但当你考虑到10⁹数量级大小的模型中的参数时,您就会意识到每个额外的位加起来的速度是怎样的。
为了解决这个问题,作者将权重从16位压缩到4位。其基本思想是减少存储每个数字所需的位数。作为一个概念性的例子,数字2.71828可以浓缩为2.72。虽然这是一种有损操作,但它仍然可以捕获大部分信息,同时占用的存储空间要少得多。
论文(https://arxiv.org/pdf/2404.14219)中的图1内容
作者在安装A16芯片的iPhone上运行了上述量化内容,发现它每秒可以产生多达12个符号。相比之下,运行LLaMa-2量化4位的M1 MacBook的运行速度约为每秒107个符号。我见过的最快的符号生成(Groq)以每秒853.35个符号的速度生成符号。鉴于这仅仅是一个开始,我们能够以如此之快的速度看到这款模型在iPhone上生成的符号,这一点值得注意。另外,推断速度方面似乎只会更快一些。
将Phi-3与搜索引擎配对
小型模型的一个局限性是它在网络中存储信息的位置较少。因此,我们发现Phi-3在需要广泛知识的任务方面不如LLaMa-2等模型执行得好。
论文作者建议,通过将Phi-3与搜索引擎配对,该模型的能力将显著提高。如果是这样的话,我认为检索增强生成(RAG)很可能会继续存在,成为帮助小型模型和大型模型一样具有性能的关键部分。
论文(https://arxiv.org/pdf/2404.14219)中的图4强调如何搜索能够提高Phi-3性能
结论
如今,我们看到了机器学习领域已经出现了高性能的小型模型。虽然训练这些模型在很大程度上仍然依赖于高性能硬件,但对它们的推理正日益普及开来。这将引发一些有趣现象的出现。
首先,可以在本地运行的模型几乎是完全私有的,允许用户提供这些LLM数据;否则,他们可能会觉得在互联网上发送不舒服。这为更多的应用场景打开了大门。
其次,这些模型将推动移动硬件的性能提升。因此,我希望在高端智能手机上看到更多的片上系统(SoC),尤其是CPU和GPU之间具有共享内存的SoC,以最大限度地提高推理速度。此外,与该硬件具有高质量接口也是至关重要。在消费硬件领域,任何新的硬件上市都可能需要像Apple Silicon的MLX这样的库。
第三,正如论文所展示的,在LLM领域,高质量数据在许多方面都可以胜过更多的网络复杂性;因此,人们一方面要寻找高质量数据,同时生成高质量数据的竞争也会不断加剧。
总之,当前我们正处于一个激动人心的发展时期。
参考文献
【1】Abdin, M.,等人。“Phi-3 Technical Report: A Highly Capable Language Model Locally on Your Phone” (2024)。arXiv。
【2】Ding,Y.等人。“LongRoPE: Extending LLM Context Window Beyond 2 Million Tokens” (2024),arXiv。
【3】Gerganov, G.,等人。“Performance of llama.cpp on Apple Silicon M-series” (2023),GitHub。
【4】Ainslie, J.,等人。“GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints” (2023),arXiv。
译者介绍
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。
原文标题:Phi-3 and the Beginning of Highly Performant iPhone LLMs,作者:Matthew Gunton
链接:
https://towardsdatascience.com/phi-3-and-the-beginning-of-highly-performant-iphone-models-d413d8ea0714。