LLM推理飙升25倍!苹果超高效内存优化将大模型塞进iPhone,2秒视频生成逼真3D化身

  新智元报道  

编辑:alan

【新智元导读】近日,苹果连发两篇论文,不仅能一键生成逼真的3D化身,而且还要把大模型装进你的iPhone


想不想在你的iPhone上本地运行GPT-4?也许在不久的将来,这个幻想就会照进现实!近日,苹果发布了一篇深受业界瞩目的文章,目的是探索在有限的内存中运行大语言模型。论文地址:https://arxiv.org/pdf/2312.11514.pdf苹果通过软硬件协同优化,使设备能够支持运行的模型大小达到了自身DRAM的两倍!在这项技术的加持之下,LLM的推理速度在Apple M1 Max CPU上提高了4-5倍,在GPU上提高了20-25倍。在上图给出的LLM推理延迟的比较中,我们可以看到苹果提出的方法效果相当出色。而这些优化可能很快就可以让复杂的AI助手,或者是聊天机器人在iPhone、iPad和其他移动设备上流畅运行。面对当下由生成式AI引领的革命,多数人希望把模型做大做强,比如可能有万亿参数的GPT-4(OpenAI家的登月计划更是夸张);另一部分人则在探索「小模型」的潜力,比如以7B参数打平70B Llama的Zephyr,以及2.7B参数却表现强劲的Phi-2;事实上,在AI算力的发展道路上,摩尔定律似乎缓缓下车了,于是「内存墙」的问题渐渐暴露出来。对此,苹果这次选择了另外一条道路,利用自身「闭源」的优势,充分发挥软件和硬件的特性,誓要把大模型装进你的iPhone!在这篇工作中,研究人员通过将模型参数存储在闪存中,并按需将其引入 DRAM,成功高效运行了超出自身DRAM容量的LLM。——这对于消费者来说也是个好消息,毕竟我们都知道,苹果的内存是金子做的,这下妈妈再也不用担心大模型时代要掏更多的钱买iPhone了。除了这个神级的优化方案,苹果科学家还在之前的一篇研究论文中,提出了HUGS(人类高斯飞溅)。论文地址:https://arxiv.org/pdf/2311.17910.pdfHUGS可以从单个相机拍摄的视频中生成动画3D头像,只需要拍摄少量(50-100)帧的单目视频,HUGS就会自动学习,分离出静态场景,并生成完全可动画的人类化身。HUGS使用3D高斯溅射来表示人类和背景场景。人体模型是从称为SMPL的统计体型模型初始化的。但HUGS允许高斯偏离,从而能够捕捉到衣服和头发等细节。新颖的神经变形模块(neural deformation module)使用线性混合蒙皮,以逼真的方式对高斯进行动画处理。这种协调的运动避免了在放置化身时出现的伪影,能够实现人类的新姿势合成和场景的新视角合成。与以前的头像生成方法相比,HUGS在训练和渲染方面的速度提高了100倍。——在典型的游戏GPU上仅需30分钟就可以生成逼真的结果。也许在不久的将来,这种实时性能,以及从视频创建化身的能力,可以为虚拟试妆、远程呈现和合成媒体带来新的可能性。——想象一下,未来你可以用iPhone相机做同样的事情,是不是很期待?通过上面介绍的这两项工作,iPhone和iPad用户可以在设备本地运行复杂的AI系统,并感受到更加身临其境的视觉体验。有限内存跑大模型的方法

苹果的研究人员构建了一个与闪存行为相协调的推理成本模型,并瞄准两个关键领域进行优化:减少从闪存传输的数据量,以及在更大、更连续的块中读取数据。在这个闪存信息框架中,主要有两种优化技术。首先是「窗口化」,通过重用先前激活的神经元来战略性地减少数据传输,其次是「行列捆绑」,根据闪存的顺序数据访问强度量身定制,增加了从闪存读取的数据块的大小。研究人员在整个优化过程中,集成了稀疏感知、上下文自适应加载和面向硬件的设计。

从闪存加载

当可用计算内存远小于模型大小时,需要将完整的模型权重存储在闪存中。评估闪存加载策略的主要指标是延迟,分为三个不同的组成部分:从闪存加载的I/O成本、使用新加载的数据管理内存的开销,以及推理操作的计算成本。针对延迟的特定方面,本文提出了三点解决方案:减少数据负载:通过加载更少的数据来减少与闪存I/O操作相关的延迟;优化数据块大小:通过增加加载的数据块的大小,来增强闪存吞吐量,从而减少延迟。高效管理加载数据:在数据加载到内存中后简化数据的管理,以最大程度地减少开销。

减少数据传输

利用前馈网络(FFN)模型中固有的稀疏性(例如,OPT 6.7B在FFN层中有97%的稀疏性;Falcon 7B通过微调也产生了95%的稀疏性),这里仅将必要的、非稀疏的数据从闪存迭代传输到DRAM,以便在推理过程中进行处理,而transformer注意力机制中的嵌入和矩阵(约占模型大小的三分之一)被保持在RAM中。这样就提高了计算效率和访问速度,从而提高推理性能,而无需完全加载模型。另外,ReLU激活函数会在FFN的中间输出中产生超过90%的稀疏性,从而减少使用这些稀疏输出的后续层的内存占用。但是前一层必须完全存在于内存中。为了避免整层大量数据的加载,这里使用低秩预测器来识别ReLU之后的零元素。如上图所示,本文的预测器只需要当前层的注意力模块的输出,而不需要加载前一层的FFN模块,并且预测的准确率极高。另外,文中还通过滑动窗口技术进行神经元数据管理。研究人员将活动神经元定义为,在预测模型中产生正输出的神经元。采用滑动窗口技术来管理神经元数据,仅需要维护内存中最近输入tokens的子集。这里的关键是神经元数据的选择性加载,在当前输入标记与其直接前身之间有所不同。如上图所示,这种策略允许高效的内存利用率,因为释放了滑动窗口之外的旧tokens。

优化数据块大小

对于OPT和Falcon,从向上投影(up project)开始的第 i 列和从向下投影(down project)开始的第 i 行的使用,与第 i 个中间神经元的激活相吻合。因此,将这些相应的列和行一起存储在闪存中,可以将数据合并到更大的块中进行读取。捆绑方法如上图所示。这种捆绑会使块大小翻倍,也就增加了模型的吞吐量。另外,对于每个神经元,该神经元与其他神经元的共同激活形成幂律分布,如下图a所示。这里将与神经元共同激活的神经元称为最亲密的朋友(closest friend)。如下图b所示,每个神经元及其最亲密的朋友至少在95%的时间内相互共同激活。图c和d展示了第4个最亲密的朋友和第8个最亲密的朋友。基于这些信息,作者将每个神经元及其最亲密的朋友放在闪存中,每当预测一个神经元处于活跃状态时,也会同时加载它的亲密朋友。不过,这实际上导致了多次加载高度活跃的神经元,违背了减少数据搬运的初衷。作者在此提出这个负面结果,并希望未来的工作能够继续探究如何有效地捆绑神经元。

优化DRAM中的数据管理

尽管与访问闪存相比,DRAM内的数据传输效率更高,但它仍然会产生不可忽视的成本。在为新神经元引入数据时,由于需要在DRAM中重写现有神经元数据,重新分配矩阵并附加新矩阵可能会导致大量开销。尤其是当DRAM中很大一部分(约25%)的前馈网络(FFN)需要重写时。作者研究了所有必要内存的预分配,并建立相应的数据结构,以实现有效数据管理。数据结构包括指针、矩阵、偏置、num_used和last_k_active等元素。如上图所示,首先将最后一个元素复制到要删除的神经元位置,以维持连续的内存块,然后将所需的元素堆叠到最后,这样可以防止多次复制整个数据。苹果的野心

苹果有可能将最近的这些创新技术,整合到产品阵容中。很明显,苹果不仅在增强自己的硬件设备,而且还在预测未来对人工智能注入服务的需求。通过允许更复杂的AI模型在内存有限的设备上运行,苹果有可能为一类新的应用程序和服务奠定基础。——换句话说,以前办不到的事情,以后就说不定了。逼真的数字化身和便携式设备上强大的AI助手曾经似乎遥不可及,而未来正在迅速成为现实。参考资料:https://arxiv.org/abs/2312.11514

请升级浏览器至最新版本

文章原文

​ 

Read More 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *