本综述深入探讨了大型语言模型的资源高效化问题。
模型层面:自回归生成的低并行性导致了显著的延迟问题,这在大型模型或长输入长度下尤其突出,影响训练和推理的高效处理。此外,自注意力层的二次复杂性随着输入长度的增加而显著增加,成为计算瓶颈。 理论层面:缩放法则和收益递减指出,随着模型变大,每增加一个参数所带来的性能提升在减小。此外,理论上关于机器学习中的泛化和过拟合也对 LLM 的资源效率提出了挑战。 系统层面:考虑到 LLM 的庞大模型大小和训练数据集,将它们全部放入单个 GPU/TPU 的内存中变得不可行。因此,为 LLM 优化训练过程的复杂系统设计变得至关重要。 伦理层面:许多 LLM 依赖于大型且专有的训练数据集,这限制了提高效率的某些技术的应用。此外,许多先进的 LLM 是封闭源的,这意味着在缺乏对模型内部工作的深入了解的情况下提高效率变得更加复杂。 评价指标层面:LLM 的多样化和复杂性使得开发全面的资源效率评价指标面临独特挑战。与优化较小模型的一两种资源相比,LLM 呈现出多目标问题,要求在多个关键资源上同时进行优化。
资源高效 LLM 技术的全面概述:对增强 LLM 资源效率的技术进行了全面的概述,涵盖了 LLM 整个生命周期的各种方法和策略。 技术按资源类型的系统分类和分类法:建立了一个系统的分类和分类法,根据它们优化的资源类型对资源高效的 LLM 技术进行组织。 评估指标和数据集的标准化:提出了一套专门用于评估 LLM 资源效率的评估指标和数据集的标准化。 识别差距和未来研究方向:对当前在创造资源高效 LLM 方面的瓶颈和未解决的挑战进行了深入探讨,并指出了未来研究的潜在途径。
计算:涉及训练、微调和执行 LLM 所需的处理能力。计算效率的评估包括考虑操作数量(如浮点操作)、算法效率和处理单元(如 GPU 或 TPU)的利用。 内存:内存效率涉及所需的 RAM 和存储量。尤其是拥有数十亿参数的 LLM,需要大量内存来存储模型权重和处理大型数据集。 能源:指模型生命周期中消耗的电力。考虑到环境影响和运营成本,能源效率至关重要。这包括减少能耗的策略,如优化硬件利用、使用节能硬件等。 资金:财务资源是一个关键考虑因素,尤其对于小型组织和研究者。这包括硬件采购成本、运行模型的电费和潜在的云计算费用。 网络通信:在分布式训练和基于云的部署中,网络带宽和延迟变得重要。高效的网络通信意味着减少在分布式系统节点之间或云端与用户之间传输的数据量,这对训练时间和实时应用的响应性有重大影响。
架构设计:检查 LLM 的结构基础,分为基于 Transformer 和非 Transformer 架构。 预训练:审视 LLM 开发的初步阶段,包括内存效率和数据效率。 微调:针对预训练模型的优化,分为参数高效微调和全参数微调。 推理:在操作阶段,采用各种策略,如模型压缩和动态加速。 系统设计:关注系统层面的考虑,包括部署优化和支持基础设施等。
高效的 Transformer 结构:这一类别包括了通过创新技术优化 Transformer 模型的架构,旨在降低计算和内存需求。例如,Reformer 通过局部敏感哈希技术来改进注意力机制,而 Linear Transformer 则利用线性映射来减少计算复杂度。AFT 和 KDEFormer 等其他方法则通过不同方式实现时间和内存效率的大幅提升。 非 Transformer 架构:这一类别探索了替代 Transformer 的新型架构。例如,模块化网络(MoE)技术通过结合多个专业化模型来处理复杂任务,Switch Transformer 和 GLaM 等则利用稀疏路由技术在增加模型参数的同时保持效率。另外,像 RWKV 这样的架构则结合了 Transformer 的训练效率和 RNN 的推理效率。
内存效率 分布式训练:将模型训练任务分配给多个节点,以加速训练过程。数据并行(DP)和模型并行(MP)是两种主要的策略。DP 通过将初始数据集分割并由多个加速器并行训练,而 MP 则将模型的层或张量分布到多个加速器上。 混合精度训练:这种技术通过同时使用 16 位和 32 位浮点类型来加速深度学习模型的训练,特别适用于大型语言模型的训练。
数据效率 重要性采样:这种方法通过优先处理信息丰富的训练实例来提高模型的数据效率。 数据增强:通过创建现有数据的修改副本,使当前数据得到充分利用。 训练目标:预训练目标的选择是决定数据效率的另一个因素。这通常涉及模型架构、输入 / 目标构建和遮蔽策略的设计。
参数高效微调 基于遮蔽的微调:仅更新模型参数的子集,其他参数在反向传播过程中被「冻结」或遮蔽。 基于适配器的微调:在预训练模型的现有层之间插入额外的轻量级层(适配器)。在微调期间,只更新这些适配器层的参数,而原始模型参数保持固定。
全参数微调:与参数高效微调不同,全参数微调涉及修改所有参数。尽管训练成本更高,但通常可以获得比参数高效方法更好的性能。然而,这种方法在简单数据集上可能并不总是有效,且在训练成本和 GPU 内存消耗方面也面临挑战。
模型压缩 剪枝:通过移除模型中的特定参数来降低复杂度。包括结构化剪枝(针对整体结构,如神经元或通道)和非结构化剪枝(针对单个权重或连接)。 量化:将模型中的浮点数转换为较少位数的表示(如整数),旨在减少模型存储需求和加快计算速度。 知识蒸馏:将大型模型的知识转移到更紧凑的网络中,以减少推断延迟并增强特定任务解决能力。
动态加速 早期退出:根据某些标准提前终止模型的某些层的计算,用于简化输入样本的处理。 输入裁剪:动态减少输入序列长度,根据内容来分配不同的计算资源给不同的输入标记。 标记并行:利用技术如推测执行来并行生成多个标记,而非传统的顺序方式。
部署优化 硬件卸载:通过将临时不需要的数据从快速加速器转移到更慢但更大的主、辅存储(如 CPU 内存和磁盘)中,优化大型 LLM 的运行效率。有效的卸载策略对整体系统效率至关重要。 协作推断:多个用户或系统合作完成 LLM 的推断任务,每个参与者贡献自己的资源,如计算能力或数据,以克服个体用户或系统的限制,实现更高效、准确的推断。
支持基础设施 库:介绍了几个著名的大型语言模型框架,如 DeepSpeed、Megatron-LM、Colossal-AI、Mesh-TensorFlow 和 GPT-NeoX,它们为大规模分布式训练提供多级并行策略。 边缘设备:探索在边缘设备上部署 LLM 的研究趋势,这些设备通常具有有限的计算资源。例如,通过低秩适应和噪声对比估计等技术来降低 LLM 在边缘设备上的内存需求。
其他系统 Tabi:提出了一个多级推断引擎的推断系统,通过使用多个 DNN 处理任务中的异构查询来减少 LLM 的推断延迟。 近重复序列搜索:利用最小哈希技术来提高 LLM 的近重复序列搜索的效率和可扩展性。
直接影响:包括具有近似和硬件感知注意力机制的变换器架构,通过简化计算密集的注意力计算来加速过程;非结构化、结构化和上下文剪枝,通过移除不重要的权重或神经元来减少冗余计算。 间接影响:数据并行和参数高效微调,通过分布式工作负载和减少参数更新分别间接提高计算效率。
直接影响:剪枝和量化通过减少模型大小来显著节约内存;知识蒸馏通过训练较小的模型来模仿较大的模型。 间接影响:分布式训练,如数据和模型并行,有效管理多设备间的内存使用,减轻单个设备的负担。
直接影响:结构化剪枝和量化通过减少操作数量和数据大小,降低训练和推断的能源消耗;上下文剪枝通过最小化不必要的计算来节省能源。 间接影响:近似注意力机制等主要面向计算效率的技术,由于减少了计算负载,间接促进能源节省。
直接影响:混合精度训练通过减少处理器间需要通信的数据大小,直接影响数据传输效率;权重量化通过最小化通信过程中的数据负载。 间接影响:协作推断通过优化数据传输和处理来提高网络通信效率。
FLOPs:浮点运算次数,量化计算效率。 训练时间:训练 LLM 所需的总时间,反映了模型复杂性。 推断时间 / 延迟:LLM 生成输出所需的时间,关键评估实际应用中的实用性。 吞吐量:LLM 处理请求的效率,以每秒生成的标记或完成任务的速度衡量。 加速比:与基准模型相比推断速度的改善程度。 内存效率指标 参数数量:LLM 神经网络中可调变量的数量。 模型大小:存储整个模型所需的存储空间。
能源消耗:以瓦时或焦耳表示,反映 LLM 生命周期中的电力使用。 碳排放:与模型能源使用相关的温室气体排放量。
压缩比:压缩模型与原始模型大小的比例。 忠诚度和保真度:衡量教师和学生模型之间预测一致性和预测概率分布对齐程度。 鲁棒性:衡量 LLM 对攻击后性能和查询次数。 帕累托最优性:在不同竞争因素间取得的最佳平衡。
Dynaboard:动态基准,评估内存使用、吞吐量、公平性和鲁棒性等指标。 EfficientQA:聚焦建立准确、内存高效的开放领域问答系统。 SustaiNLP 2020:挑战参与者开发能源高效的 NLP 模型。 ELUE 和 VLUE:专注于评估 NLP 和视觉语言模型的效率和性能。 Long-Range Arena:专为评估长内容任务上高效 Transformer 模型而设计。 Efficiency-aware MS MARCO:在 MS MARCO 信息检索基准测试中增加了效率指标。