手机流畅运行470亿大模型:上交大提出PowerInfer-2引领智能手机大模型推理新纪元 精华
引言:智能手机上的大型语言模型推理的挑战与机遇
随着大型语言模型(LLM)在理解和生成类似人类的文本方面的卓越能力,它们已经从根本上改善了我们的日常生活并转变了我们的工作环境。如今最先进的LLM,例如GPT-4和Claude-3,都部署在配备了最先进GPU的数据中心中。这些GPU提供了广泛的高带宽内存,并提供达到数千teraflops的计算能力。与此同时,将LLM部署在普遍的智能手机上的趋势也在兴起,这一转变旨在充分利用丰富的个人数据,同时通过避免将私人数据传输到云服务来维护隐私。
然而,智能手机尽管使用广泛,但由于其处理能力有限和内存大小受限,难以满足LLM推理的复杂需求。为了解决这些问题,研究人员探索了两种有前途的方法来在资源受限的条件下提供LLM推理服务。一种策略是部署缩小版的LLM,例如Google的Gemini Nano 3.25B,它使用不到2GB的内存,通过减少智能能力来适应内存限制。另一些技术旨在降低推理期间LLM权重的计算和存储需求。例如,PowerInfer项目通过将活跃神经元分配给GPU,而非活跃神经元分配给CPU,实现了在个人电脑上推理速度的11倍提升。然而,这些解决方案在智能手机上遇到了挑战,因为智能手机的硬件和存储设备较弱,带宽较低,且由于单一命令队列不支持并发访问,使得I/O活动成为智能手机上LLM推理的常见瓶颈。
本文介绍了PowerInfer-2,这是第一个在智能手机上执行高速LLM推理的框架,能够适应超过设备内存容量的高达47亿参数的模型。PowerInfer-2是PowerInfer项目的后续工作,专门为智能手机设计。与其前身一样,PowerInfer-2利用了LLM推理中固有的动态稀疏激活:每次推理迭代只需要一部分神经元,而不是整个模型权重。这种方法在推理过程中大大降低了计算需求,因为PowerInfer-2每次迭代只需要处理选定的一组神经元。固有的稀疏性还增强了局部性,使PowerInfer-2能够构建一个有效的内存缓存,保持最常用的神经元在内存中,从而减轻了读取权重相关的I/O开销。
论文标题:PowerInfer-2: Fast Large Language Model Inference on a Smartphone
机构:Institute of Parallel and Distributed Systems (IPADS), Shanghai Jiao Tong University
论文链接:https://arxiv.org/pdf/2406.06282.pdf
PowerInfer-2框架概述
PowerInfer-2是一种专为智能手机设计的高速大型语言模型(LLM)推理框架。它能够处理高达470亿参数的模型,即使这些模型的大小超过了设备的内存容量。PowerInfer-2是PowerInfer项目的后续工作,它利用LLM推理中固有的动态稀疏激活:每次推理迭代只需要一部分神经元,而不是整个模型权重。这种方法显著降低了推理过程中的计算需求,因为PowerInfer-2只需要处理每次迭代中选择的一组神经元。此外,固有的稀疏性还增强了局部性,使PowerInfer-2能够构建一个高效的内存缓存,保持最常用的神经元在内存中,从而减轻了读取权重的I/O开销。
与PowerInfer不同,PowerInfer-2面临的关键挑战在于能够利用现代智能手机中高度异构的XPUs,如不对称的big.LITTLE CPU核心、GPU和NPU。如果没有充分利用硬件特性,推理过程就会导致生成速度不佳。此外,缓存未命中不可避免地会引起I/O开销。尽管PowerInfer-2利用稀疏激活来减少推理过程中所需的权重量,但它仍然会产生大量的I/O读取操作,这可能会对推理性能产生不利影响。
神经元集群和架构
3.1 神经元集群和架构
PowerInfer-2提出了一种称为神经元集群的计算抽象,专为LLM在异构计算场景中的推理设计。PowerInfer-2在神经元集群的粒度上执行计算和I/O操作,这些神经元集群可以在计算过程中动态组成多个激活神经元,其数量由计算单元的计算能力决定。例如,在解码阶段,当计算由CPU核心执行时,分配给每个CPU核心的神经元集群的大小比在预填充阶段NPU计算时的要小。通过使用这种抽象,PowerInfer-2可以充分利用具有不同计算能力的XPUs,有效地隐藏I/O开销。
图2展示了PowerInfer-2的整体架构,该架构分为在线部分(右侧)和离线部分(左侧)。在线部分服务于神经元集群粒度的推理,并包括四个协作组件:多态神经元引擎(§4.1)、内存中神经元缓存(§4.2)、灵活的神经元加载(§4.3)和神经元集群级I/O管道(§4.4)。
多态神经元引擎为预填充和解码阶段使用完全不同的计算模式。在预填充阶段,神经元集群包含来自权重矩阵的所有神经元,并主要依赖NPU处理大规模矩阵计算。在解码阶段,由于显示出显著的稀疏性,只有少部分神经元(大约10%)在权重矩阵中被激活并参与计算,因此PowerInfer-2专门利用CPU核心进行神经元集群计算。
多态神经元引擎
PowerInfer-2引入了一种多态神经元引擎,该引擎能够动态地将神经元组合成神经元簇,以利用LLM推理阶段和异构XPUs的不同计算特性。
4.1.1 NPU-Centric Prefill
在预填充阶段,所有提示令牌都同时被处理。尽管每个令牌显示出高度的稀疏性并激活不同的神经元,但由于这些激活的聚合,总体稀疏性显著降低。因此,PowerInfer-2在预填充阶段不通过预测器计算激活的神经元,而是选择直接将所有神经元合并成一个大的神经元簇。鉴于NPU在处理大规模矩阵运算方面的优势,这一策略能够最大化NPU的计算能力。
4.1.2 CPU-Centric Decoding
与预填充阶段不同,解码阶段集中处理每次迭代中的单个令牌,显示出显著的稀疏性,因为仅有少部分神经元(大约10%)在权重矩阵中被激活并参与计算。因此,从预填充阶段过渡到解码阶段时,多态神经元引擎将权重矩阵计算分解为小的神经元簇,这些小簇的元素由预测器识别为活跃的。我们观察到,当批处理大小为一时,CPU核心上的矩阵-向量计算的延迟低于NPU。此外,由于稀疏性导致激活的神经元数量减少,CPU核心非常适合这些较轻和稀疏的计算任务。
高效的缓存设计与I/O优化策略
PowerInfer-2通过引入分段缓存和细粒度的神经元簇级流水线技术,优化了I/O读取吞吐量并最小化了I/O操作,从而提高了整体的推理性能。
4.4 Neuron-Cluster-Level Pipeline
尽管引入了有效存储活跃神经元的神经元缓存,推理过程仍然不可避免地会引发对未缓存神经元的I/O操作。为了优化I/O读取吞吐量并最小化I/O操作,PowerInfer-2还捆绑了相关神经元。尽管在移除热神经元后,单个FFN权重矩阵内的共激活变得不频繁,但不同矩阵中对应位置的神经元通常会一起激活。例如,第i个神经元在Gate、Up和Down矩阵中的共激活概率高达80%。
PowerInfer-2还设计了隐藏I/O开销的策略,通过重叠计算与I/O活动来实现。一个直接的方法是矩阵级重叠,它在从存储中检索矩阵神经元的同时进行计算。随着存储中的神经元被加载,它们会立即被处理。尽管这种矩阵级重叠方法可以在一定程度上隐藏计算过程中的I/O成本,但系统仍需等待所有神经元的处理完成才能继续进行下一步。为了消除I/O操作的等待时间,PowerInfer-2引入了神经元簇级流水线机制。这种机制基于一个见解:通过关注神经元簇的粒度,可以在多个矩阵的神经元簇计算中重叠I/O操作。具体来说,PowerInfer-2打破了矩阵计算的障碍;一旦一个神经元簇完成计算,它立即开始计算下一个矩阵中已在内存中的神经元簇。这种机制有效地减少了等待泡沫,如图4-b所示。
执行计划的生成与优化
在PowerInfer-2系统中,执行计划的生成是一个关键步骤,它涉及到对硬件、模型和用户需求的深入分析,以制定出最优的运行配置。执行计划的生成过程包括以下几个关键环节:
1. 硬件和模型特性分析
执行计划首先需要对硬件的计算能力、I/O吞吐量和内存带宽进行评估。此外,还需要分析模型的大小、稀疏性和缓存特性。这一步骤是通过离线分析器完成的,它通过一系列的微基准测试来评估各个组件的性能。
2. 成本模型的构建和求解
在获取了硬件和模型的具体参数后,执行计划使用成本模型来生成最优配置。这个模型的目标是在满足用户设定的约束条件下,最大化生成速度。成本模型考虑了计算时间和I/O传输时间,这些时间的计算基于硬件性能和模型激活率的函数。求解成本模型通常使用成熟的SMT求解器,如Z3。
3. 执行计划的输出
最终的执行计划将详细描述在在线推理过程中各个组件的配置,包括CPU和NPU的使用比例、缓存大小和I/O操作的配置。这些配置确保了系统在实际运行中达到预定的性能目标。
通过这一系列的步骤,PowerInfer-2能够为不同的智能手机和模型大小提供定制化的执行计划,从而在保证性能的同时,最大限度地利用设备的计算和存储资源。
实验设置与性能评估
为了验证PowerInfer-2系统的性能,我们在不同的智能手机上进行了一系列的实验。实验的设置和性能评估包括以下几个方面:
1. 实验硬件
实验使用了两款OnePlus智能手机,分别代表高端和中端的硬件配置。这两款手机不仅具备不同的处理器和内存大小,而且都允许root权限,这为我们解锁更多计算能力提供了可能。
2. 模型选择
实验中选用了不同架构和大小的语言模型,包括TurboSparse-Mistral和TurboSparse-Mixtral系列。这些模型的选择旨在展示PowerInfer-2在处理不同类型和大小模型时的性能表现。
3. 基准系统比较
为了全面评估PowerInfer-2的性能,我们将其与当前最先进的LLM推理框架进行了比较,包括llama.cpp和LLM in a Flash。这些比较帮助我们准确地定位PowerInfer-2在市场中的性能优势。
4. 性能指标
我们主要关注的性能指标是端到端的生成速度,包括预填充速度和解码速度。这些指标直接反映了系统在实际应用中的响应速度。
通过这些详细的实验设置和性能评估,我们能够全面地理解PowerInfer-2在不同条件下的性能表现,并且验证了其在智能手机上运行大型语言模型的能力。
讨论与未来展望
随着智能手机硬件的日益强大和多样化,未来的大型语言模型(LLM)推理框架需要更加灵活和高效地利用这些资源。PowerInfer-2的出现标志着在这一领域的一个重要进步,它不仅显著提高了在资源受限的智能手机上进行LLM推理的速度,而且还优化了内存和I/O资源的使用。然而,尽管取得了显著的进步,但在将来的发展中,仍有许多挑战和机遇。
1. 硬件利用的优化
尽管PowerInfer-2已经在利用异构硬件方面取得了显著成效,但未来的工作可以进一步探索如何更有效地协调CPU、GPU、NPU等不同硬件的工作,以最大化计算资源的使用效率。例如,通过更智能的调度算法,动态地根据当前的工作负载和硬件状态调整资源分配。
2. 模型和存储优化
随着模型规模的不断扩大,如何在有限的存储和内存中高效地管理和调度模型权重将成为一个重要问题。PowerInfer-2中已经采用了分段缓存和精细的I/O策略,未来可以进一步探索更高效的数据压缩技术和智能预取策略,以减少I/O操作的需要并加速推理过程。
3. 能源效率
智能手机的能源限制也是未来研究的一个重要方向。开发更加节能的算法和框架,不仅可以延长设备的电池寿命,还可以减少环境影响。例如,通过优化算法的能效比(即每瓦特计算速度),使得在保证性能的同时,尽可能减少能耗。
4. 用户体验与隐私保护
提升用户体验和保护用户隐私将是LLM应用普及的关键。未来的推理框架需要在保证响应速度和准确性的同时,更好地处理用户数据,确保数据的安全和隐私。例如,通过在本地设备上进行更多的数据处理来减少对云服务的依赖,从而保护用户的隐私。
5. 跨平台兼容性
随着各种类型设备的普及,跨平台的LLM推理框架将具有更广泛的应用前景。PowerInfer-2虽然主要针对Android系统,但其设计理念和技术可以扩展到其他操作系统如iOS。未来的研究可以探索如何使这些技术更容易地迁移到不同的平台和设备上。
通过持续的研究和创新,未来的LLM推理技术有望在智能手机及其他移动设备上提供更加智能、高效和安全的服务,极大地丰富用户的数字体验。
本文转载自 AI论文解读,作者:柏企