今天小编分享的互联网经验:苹果这篇“魔改”闪存的论文,暴露了它想彻底掌控大模型的野心,欢迎阅读。
2017 年,来自谷歌的几个研究员写下《Attention is All you need》的题目,给世界带来了 Transformer 模型架构,它成为了今天 " 大模型 " 繁荣背后无可争议的根基,OpenAI 的 GPT,Meta 的 Llama 以及一众最主流大语言模型都是在 Transformer 的基础上生长起来,今天还有一批又一批聪明的研究者在不停尝试提出比 Transformer 更强的模型架构。
某种程度上,今天所有 AI 模型层面的研究都在围绕对 Transformer 的掌控与超越展开。但这样一个划时代的研究在当时并未立刻引起所有人的重视,而这种 " 嗅觉 " 的差异也很大程度决定了今天的 AI 格局—— OpenAI 在这篇论文出现第二天就立刻彻底转向了 Transformer 架构,然后 2020 年 5 月 OpenAI 基于 Transformer 架构的 GPT-3 论文发表,2 年后 ChatGPT 出现,一切都不再相同。
「变压器」这个栏目名来自对 Transformer 的直译,我们会拆解和介绍关于 AI 及相关技术的最新论文和最前沿研究,希望像 OpenAI 当年看到 Transformer 一样,帮助更多人遇到自己的「变压器」时刻,比一部分人更早进入生成式 AI 的世代。
大模型领網域最新的一个热门趋势是把模型塞到手机里。而最应该做这个研究的公司终于带着它的论文现身,那就是苹果。
这家公司的研究团队最近发布了一篇论文《LLM in a flash: Efficient Large Language Model Inference with Limited Memory》,简单说,它尝试利用闪存来解决大模型在塞进手机时遇到的内存不足的问题。
这是一个对于端侧部署模型十分关键的问题。
计算机的记忆体(Memory)简单分为内存(Ram)和闪存(Flash)两种。内存用于临时存储那些需要随时访问的数据和指令,它提供高速的读写,有较高的存储密度。而闪存正相反,它读写较慢,适用于长期数据的存储。
因此从特性上看,内存更适合需要频繁读写的大模型。然而这带来一个问题,它成了一个限制死了的搭配,比如一个 70 亿参数的模型就必须需要超过 14GB 的内存才能以半精度浮点格式加载参数,但这超出了大多数边缘设备的能力。
如这篇论文的标题所示,苹果想要通过闪存来解决这个问题。
苹果版的曹冲称象
论文为了将大模型搬到闪存上,一共做了三步。
第一步:先让闪存能参与进模型运行中来。论文提到一个概念,大语言模型在前馈网络(FFN)层展现出高度的稀疏性(超过 90%)。FFN 是一种基本的神经网络架构,其中信息单向流动,从输入层流向输出层,中间可能经过多个隐藏层。在这种网络中,每一层的输出仅作为下一层的输入,而没有任何反馈或循环连接。于是论文把 FFN 当成是一个筛子,仅迭代传输闪存中必要的、非稀疏数据到 DRAM 进行处理。
使用修正线性单元(ReLU)前后输出幅度对比,ReLU 用来实现稀疏性
接下来是第二步:论文提出了一种名为 " 滑动視窗技术 " 的神经元数据管理方法。把那些在预测模型中产生正输出的神经元定义为活跃神经元,在内存中保留最近一部分输入标记的神经元数据,仅加载当前输入标记与其直接前驱不同的神经元数据。这样做能有效利用内存,释放掉之前分配给已不在滑动視窗内的旧标记神经元数据的内存。
滑动視窗技术
第三步:论文还提出了一种增加数据块大小的策略。论文用 OPT 和 Falcon 模型做实验,把向上投影的第 i 列和向下投影的第 i 行捆绑存储。当激活第 i 个中间神经元时,这两部分数据会同时被使用。通过在闪存中将这些对应的列和行一起存储,可以将数据整合成更大的块进行读取。
内存管理策略,首先将最后的元素复制到要删除的神经元中,以保持连续的内存块,然后将需要的元素堆叠到最后
这些术语看起来依然晦涩?没关系我们可以做个类比,事实上它的思路与曹冲称象非常像。
首先论文要解决的问题就是,大模型是大象,没办法直接上称测量(设备内存有限,放不了大模型)。
于是用了三个步骤来在特定环节减少对大模型的访问延迟。
首先找到一个等价方法,让大象上船,测量水位线,再用石头垒在船上,船达到同样的水位线,最后称这些石头的重量(也就是上面说的第一步,可以理解为减少数据加载)。
然后,其中体积一样大的石头不需要称第二次(也就是第二步,优化数据块大小以提高闪存吞吐量)。
此外,搬运石头的时候使用更大的框,一次可以装很多块石头(就是最后一步的,高效管理加载到内存中的数据)。
而这个过程的重点,是优化闪存互動和内存管理,以实现内存受限设备上的高效推理。使用这个方法来预测 FFN 的稀疏性并避免加载零化的参数,优化成本模型和按需选择性加载参数,实现了可以运行比设备 DRAM 容量大两倍的模型,并在 CPU 和 GPU 上分别比传统方法提速 4-5 倍和 20-25 倍。
当然,论文提供的方法只针对 60 到 70 亿左右参数的模型,如果是几百亿参数的模型,这样的办法会造成死锁或者内存溢出。不过他仍然给了便携使用大模型这事一种可能性,这是非常难得的。
为了证明论文提出方法的实际价值,论文引用了 Facebook 的 OPT 6.7B 模型和 TII 的 Falcon 7B 模型。下图在模型的一半内存可用时,1 个 token 的推理延迟。在 M1 Max 上,每个 token 从闪存加载需要 125 毫秒的延迟,内存管理需要 65 毫秒。因此,每个 token 的总的与内存相关的延迟小于 190 毫秒(两者总和)。相比之下,传统方法需要以 6.1GB/s 的速度加载 13.4GB 的数据,导致每个 token 的延迟大约为 2330 毫秒。因此,这个方法相对于基准方法表示了重大改进。Falcon 7B 也是类似,使用论文的方法延迟仅为 250 毫秒,而传统方法的延迟为 2330 毫秒。延迟肯定是越低越好,越低代表从闪存中加载大模型的速度越快。
各模型 1 个 token 的推理延迟在 AI 上落后了?苹果已经悄悄地做了一堆工作
在今年 AI 的疯狂里,苹果曾被诟病动作很慢,但这篇论文、此前苹果提出的 MLX 框架、自动语音识别(ASR)以及它自己的模型 Ferret 等研究其实说明,苹果已经目标明确的在做很具体的研究了。看看这几个重要的但并没有引起很多重视的研究,也可以感受到苹果 AI 上的方向。
MLX 框架是苹果在 2023 年推出的一个专门运行在苹果芯片上的机器学习数组框架。MLX 支持可组合的函数变换,用于自动微分、自动向量化和计算图优化,但重点是 MLX 中的计算只有在需要时,数组才会被实际计算出来。同时 MLX 中的计算图是动态构建的,改变函数参数的形状不会触发缓慢的编译过程。而且 MLX 中的数组存在于共享内存中,可以在任何支持的设备类型上执行 MLX 数组的操作,而不需要数据传输。
也就是说,MLX 突出一个节省资源且 " 海陆空 " 三栖作战(可以同时调用内存、显存,可以在手机和电腦运行)。这说明苹果非常注重模型的可实现性,即便是手机这样内存有限的设备也能跑大模型。当有了这样的框架后,苹果就可以将 Ferret 模型塞进便携设备里了。
Ferret 模型是苹果在 2023 年 10 月推出的新型多模态大型语言模型(MLLM),它能够理解影像内任意形状或粒度的空间指代,并准确地对开放词汇的描述进行定位。Ferret 采用了一种新颖而强大的混合区網域表示方法,将离散坐标和连续特征结合起来表示影像中的一个区網域。为了提取多样化区網域的连续特征,论文提出了一种空间感知的视觉采样器,能够处理不同形状之间的稀疏性差异。模型这种理解能力,意味着 Ferret 可以接受各种输入,比如点、边界框和自由形状,像是 DALL · E 也好,Midjourney 也好,都不能完全理解这种提示词的输入。
苹果将要推出的 AR 设备 Vision Pro,对外宣称是首款采用空间计算的产品。空间计算本质是传感器的一门学问,通过传感器来获取关于物理空间的数据,并通过计算和分析这些数据来理解和处理环境信息。传统电子设备螢幕都只是平面二维,但是空间计算作用的是现实中三维空间的物理概念,在 Ferret 的加持下,空间的边界感、长宽高三种向量的立体感就会更加明显。
Ferret 模型不一定能按要求画出最美的画面,但它一定能符合拥有艺术设计能力创作者的需求。尤其是在视觉识别、配色方案、排版、网格等设计专业领網域,Ferret 模型的效果将会最为明显。设计从业者是苹果最为广泛的閱聽人之一,苹果就像是个狙击手,专门瞄准用户最需要它的地方。
此外苹果也一直在对与 Siri 相关的 AI 技术做研究,比如大语言模型在 SLU 任务上的准确性受限于 ASR 系统对给定语音输入的准确性。那为了解决这一问题,苹果找到了一种方法:使用 ASR 的 n-best 假设列表来提示大语言模型,而非仅依赖错误率较高的 1-best 假设。意味着 Siri 在接入大语言模型后,性能会得到提高。
至此,从硬體的芯片层,到调用系统侧,到与空间计算概念相联系的自研多模态模型,再到目前看起来最被期待的苹果的 AI 能力的入口 Siri,苹果已经有体系有目的有节奏的完成了诸多技术积累。2024 年,在讨论 AI 时没人能忽视苹果了。