论文LLM in a flash: Efficient Large Language Model Inference with Limited Memory探讨了在内存受限的硬件设备上如何高效运行大规模语言模型(Large Language Models, LLMs),尤其是利用闪存(flash memory)来存储和按需加载模型参数。其主要目标是解决当前设备的内存容量无法一次性加载整个模型的问题,从而使这些设备能够处理超出其内存限制的大规模模型。
论文作者为Keivan Alizadeh, Iman Mirzadeh, Dmitry Belenko, Karen Khatamifard, Minsik Cho, Carlo C Del Mundo, Mohammad Rastegari, Mehrdad Farajtabar,均来自Apple公司。
以下是对该论文详细的分析与说明:
1. 研究背景与动机
大规模语言模型(如GPT系列、LLaMA等)已经在各种自然语言处理任务中展示了优异的表现。然而,随着这些模型的规模不断增长,它们在推理阶段的内存需求和计算量也成倍增加,特别是当模型包含数百亿甚至上万亿参数时,其需要的内存和计算能力远超出普通个人设备(如智能手机、笔记本电脑等)的负载能力。
现状:传统的推理方法依赖于将整个模型加载到DRAM(动态随机存取存储器)中进行计算。然而,这种方法有以下局限:
- 设备的DRAM容量往往有限。例如,一个7B参数的模型仅加载其参数就需要超过14GB的内存,而大多数智能手机的内存远低于此。
- 使用诸如量化(quantization)之类的技术虽然可以在一定程度上减少模型大小,但仍无法突破需要将整个模型加载到DRAM中的硬性要求。
创新动机:为了克服上述局限,论文提出了一种新的解决方案,即将模型参数存储在闪存中,并根据推理的需要按需将参数加载到DRAM中。这种方法能够避免一次性将整个模型加载到内存中,从而大幅减少内存的需求,甚至可以在设备内存只有模型大小一半甚至更少的情况下运行大模型。
2. 问题与挑战
论文中指出,虽然闪存的存储容量比DRAM大得多,但其读写性能(尤其是随机访问的性能)远低于DRAM。闪存和DRAM之间的性能差异主要体现在以下方面:
- 带宽:DRAM的带宽通常是100GB/s级别,而闪存的带宽大约只有1GB/s。这意味着从闪存中读取数据的速度远低于DRAM。
- 随机读取延迟:闪存的随机读取(尤其是小块数据的读取)由于多阶段的访问过程(涉及操作系统、驱动程序、中断处理、闪存控制器等),导致其读取延迟较长。这些阶段的延迟在处理小块数据时显得尤为突出。
因此,简单地将模型存储在闪存中并按需加载并不足以解决问题,论文作者提出了一系列的优化策略,旨在减少从闪存读取数据的量并提高读取的效率。
3. 核心方法与技术创新
为了解决上述问题,论文提出了两个核心技术:
- 窗口技术(Windowing):通过重用先前已激活的神经元,减少从闪存传输的数据量,从而降低I/O开销。
- 行列绑定(Row-Column Bundling):为了充分利用闪存的顺序访问优势,作者提出将矩阵中的行和列绑定在一起读取,以此增大数据读取块的大小,从而提高读取效率。
3.1 窗口技术
窗口技术的主要目的是通过在推理过程中重用先前的神经元激活值来减少从闪存加载的数据量。具体方法如下:
- 神经元激活稀疏性:研究发现,许多大规模语言模型中的前馈神经网络层(FFN)具有高度稀疏性。比如在OPT-6.7B模型中,FFN层的激活稀疏性可以达到97%,即在计算过程中,大多数神经元是未被激活的。这意味着在推理时,并不需要加载所有的模型参数,而只需加载那些被激活的神经元相关的参数。
- 滑动窗口机制:作者提出了一个“滑动窗口”策略,即在推理过程中,只保留最近输入的部分token所需要的神经元权重数据。对于新的输入token,只需增量地加载与之前不同的神经元数据即可。这样可以避免重复加载不必要的权重,从而提高内存利用率。
3.2 行列绑定技术
行列绑定的思路是基于FFN层中行和列的权重访问是密切相关的:
- 行列对应性:在前馈神经网络层中,权重矩阵的列对应于上投影(up projection)操作,而行对应于下投影(down projection)操作。由于这两个操作中的第i列和第i行是同时被使用的,因此可以将它们绑定在一起存储并读取。
- 绑定优势:通过绑定这些对应的行和列,作者能够将数据打包成更大的块进行读取,从而减少多次小块读取带来的延迟,提高了总的读取吞吐量。
4. 实验与结果分析
论文通过一系列实验验证了其方法的有效性。实验主要针对几种不同规模的模型(包括OPT-6.7B、Falcon 7B、Persimmon 8B和Llama 2)进行评估,测试平台包括苹果M1 Max、M2 Ultra以及配备NVIDIA RTX 4090的Linux设备。关键实验结果如下:
- 推理速度的提升:论文显示,在DRAM容量只有模型一半的情况下,使用所提出的技术,推理速度在CPU上提升了4倍,在GPU上提升了20倍。在GPU上使用金属(Metal)框架运行时,推理速度甚至提升了25倍。
- 数据传输量的减少:通过预测器(predictor)和窗口技术,作者能够将从闪存加载的数据量减少至原来的1/65。在DRAM有限的情况下,系统能够仅加载必要的权重,从而减少I/O延迟。
- 端到端推理延迟的减少:实验表明,在CPU和GPU上,该方法在端到端的推理过程中显著减少了I/O和计算延迟。例如,OPT-6.7B模型的总推理延迟从原来的3182ms减少到669ms,显著提升了推理效率。
5. 与其他工作比较
论文将其方法与现有的模型压缩技术和稀疏性优化方法进行了比较:
- 模型压缩:虽然模型压缩(如量化、剪枝等)可以在一定程度上减小模型的大小,但这些方法仍需将整个模型加载到DRAM中,无法解决内存受限设备的问题。相比之下,论文提出的按需加载方法可以在不压缩模型的情况下处理大模型,特别适用于内存非常有限的设备。
- 选择性权重加载:作者提到现有的Dejavu方法虽然也利用了激活稀疏性,但它依然要求从GPU内存加载权重。相比之下,本文方法可以在GPU和DRAM都无法容纳整个模型的情况下使用闪存存储,并且通过优化数据加载的策略进一步减少I/O延迟。
6. 方法的实际应用与意义
该研究的实际意义在于:
- 边缘设备的模型推理:通过该方法,边缘设备(如智能手机、嵌入式设备等)可以运行比其内存容量大两倍的模型,从而大大扩展了这些设备在自然语言处理、智能助手等应用中的能力。
- 硬件优化的推理成本模型:作者通过深入理解硬件特性(闪存和DRAM的带宽和延迟)构建了一个推理成本模型,并提出了两种优化技术,使得推理过程中能够有效减少从闪存加载的数据量,提高读取吞吐量,从而加速模型推理。
7. 局限与未来研究方向
尽管该论文展示了在内存受限设备上运行大规模语言模型的显著优势,但作者也指出了一些局限和未来的研究方向:
- 功耗与热量限制:由于设备在长时间的推理过程中会面临功耗和热量问题,未来的研究可以进一步优化这些方面。
- 批处理推理:目前的研究主要针对单序列的推理,而多批次推理在实际应用中更为常见,如何在批处理推理中进一步优化将是未来的研究方向之一。
- 非稀疏网络的权重选择性加载:虽然本文的技术主要针对稀疏网络,但其核心思想也可以扩展到非稀疏网络,即根据输入或上下文选择性地加载权重。未来的工作可以探索这一思路在更广泛应用中的潜力。
8. 总结
该论文为如何在内存受限设备上高效运行大规模语言模型提供了全新的解决方案。通过闪存和DRAM之间的数据优化加载策略,作者提出的方法在不压缩模型的情况下实现了显著的推理加速,为大模型的普及和应用提供了更广阔的前景。这项研究展示了硬件导向的机器学习优化策略在边缘计算设备上的巨大潜力,并为未来在有限资源设备上运行更大规模模型提供了有力的技术支持。