更快、更轻松的LLMs:当前挑战和未来发展方向

24看2月来自印度几家研究机构的论文“Faster and Lighter LLMs: A Survey on Current Challenges and Way Forward”。

尽管 LLM 的性能令人印象深刻,但由于推理过程中大量的计算和内存要求,它们的广泛采用面临挑战。模型压缩和系统级优化方法的最新进展旨在增强 LLM 推理。本综述概述了这些方法,强调了最近的发展。通过对 LLaMA(/2)-7B 的实验,评估了各种压缩技术,为统一环境中高效部署 LLM 提供见解。对 LLaMA(/2)-7B 的实证分析凸显这些方法的有效性。根据这些见解,确定了当前的局限性,并讨论提高 LLM 推理效率的潜在未来方向。

如下是复现结果的代码链接:

​github.com/nyunAI/Faster-LLM-Survey

模型压缩技术已成为一个关键的研究领域,为提高资源密集型深度学习模型的效率提供了有希望的解决方案。开发高效的大语言模型 (LLM) 可以从该领域的见解和方法中受益匪浅。

架构剪枝是指消除冗余或影响较小的连接、神经元或整个层来系统地降低神经网络的复杂性的过程 [Janowsky, 1989]。该技术旨在提高模型效率、降低计算成本并缓解过拟合,而不会显著降低性能。剪枝涉及根据各种标准识别和删除连接或单元,例如权重大小 [Li et al., 2016]、激活模式 [Molchanov et al., 2016] 或敏感性分析 [Sanh et al., 2020]。剪枝后的模型保留了其关键特征,同时实现了更紧凑的表示,这在计算资源有限的场景中尤其有价值,例如边缘设备或移动应用程序。

量化会降低神经网络中数值精度,通常从 32 位浮点数降低到较低比特的表示形式,例如 8 位整数,从而缩小模型的内存占用,加快推理速度,并实现在计算资源有限的硬件上更高效的部署。在量化过程中,权重 和/或 激活被四舍五入为一组离散值,从而在计算效率和模型精度之间进行权衡。即使精度有所降低,最先进的量化方法也能够最大限度地减少对性能的影响。

知识蒸馏旨在训练一个计算效率高的模型(通常称为学生模型),以模仿更大、更复杂的模型(称为教师模型)的预测。此过程涉及将教师模型中嵌入的知识(通常以软概率或中间表示为特征)转移到学生模型。在计算资源有限的场景中部署模型时,蒸馏特别有用,因为它可以创建保留具有较大模型性能的较小模型。此外,蒸馏有助于解决过拟合等问题,提高泛化能力,并促进将深度复杂模型学习到的知识转移到更简单的架构中。

低秩分解通过将权重矩阵分解为维数更少的较小矩阵(进而近似于初始满秩矩阵)来降低模型的计算复杂度。这还可以减少要存储在模型中的参数量并加快矩阵乘法,从而降低内存和延迟要求。

与传统的深度学习模型相比,LLM 的压缩具有独特的挑战性,这主要是因为LLM的规模很大。许多成熟的压缩方法依赖于执行微调步骤的范式,在压缩阶段恢复丢失的性能。然而,这种方法在应用于 LLM 时会遇到很大的限制,因为它们的规模相当大,因此有必要将 LLM 压缩作为一个独立的新研究领域进行范式转变。这里举例:

WANDA [Sun et al.,2023] 根据权重值和激活输入的乘积来修剪权重,从而无需进行微调。
LLM-Pruner [Ma et al., 2023] 利用单个梯度步骤采用泰勒级数展开来估计预训练 LLM 的重要部分。
FLaP [An et al.,2023] 一种无微调结构化剪枝方法,它使用基于波动的度量来确定各种权重列的重要性得分。

下面重点介绍那些改进 LLM 互补基础架构和运行时架构的方法:

分页注意(Paged Attention) [Kwon,2023] - 受到操作系统中经典虚拟内存和分页技术的启发,它允许将连续的K-V存储在非连续内存中。
张量并行 - 需要将张量划分为分布在各个 GPU 上的分片,独立并行地处理每个分片,然后在步骤结束时同步结果。

流水线并行 - 允许在层级上将模型垂直拆分到多个 GPU 上,其中每个 GPU 处理一个或多个层,从而实现流水线中不同阶段的并行处理。
CPU/GPU 卸载 [Song,2023] - 涉及将特定权重层传输到 GPU 设备进行矩阵乘法,随后将计算结果传输回辅助设备 (RAM),从而优化并行处理能力,同时允许辅助设备处理剩余的内存密集型计算。

Flash Attention(v1/v2) [Dao,2022;Dao,2023] - 通过输入block tiling采用增量softmax reduction来优化注意计算,避免需要整体输入访问,并通过存储来自前向传递的softmax归一化因子来加快后向传递,从而无需从高带宽内存 (HBM) 读取大型注意矩阵。在 FlashAttention 的进步基础上,FlashAttention-2 最大限度地减少了非矩阵乘法 FLOP,优化了在线 softmax 技术,引入了序列长度的并行性,并改进了每个线程块内 warp 之间的工作负载划分以减少同步,从而在现代 GPU 上实现了优化的性能。

融合操作 - 涉及合并多个计算任务,例如组合现有内核或创建新内核,以最大限度地减少与多个内核 API 调用相关的开销。

推测解码(speculative decoding) [Leviathan,2023] - 从选定的较小模型中高效生成多个未来 token,并使用较大的模型并行验证它们,从而实现每一步同时解码多个 token。

此类别中值得注意的实现包括 vLLM[Kwon et al., 2023]、Llama.cpp、ExLlama (/v2)、Tensor RT-LLM、MLC-LLM、PowerInfer [Song et al., 2023] 等。

vLLM 将逻辑和物理 KV 块分离的 KV 缓存管理器采用分页注意机制,从而实现 KV 缓存的动态增长。ExLlama(/v2) 实现了融合内核,对不连续块进行操作时最大限度地减少启动开销和 API 调用开销。

添加图片注释,不超过 140 字(可选)

Llama.cpp 是 LLaMA 架构的低级 C/C++ 实现,支持多个 BLAS 后端实现快速处理。它采用 GGUF 量化方案,并具有 CPU 和 GPU 卸载功能。

添加图片注释,不超过 140 字(可选)

MLC-LLM 专注于跨平台本机部署的编译器加速和运行时优化。它将模型执行逻辑封装在一个容器中 - 即中间表示模块 (IRModule),该模块捕获计算的层次结构以进行优化和代码生成。它采用分页注意、融合算子和为多个硬件平台自动生成优化的内核代码。

添加图片注释,不超过 140 字(可选)

TensorRT-LLM 实现了屏蔽多头注意,并对 QKV 元素进行即时预处理。它支持分页注意、INT8/FP8 缓存、在线批处理和张量/流水线并行以加快速度。由于融合了飞行中批处理和操作融合,因此获得了额外的改进。

添加图片注释,不超过 140 字(可选)

PowerInfer 采用 GPU-CPU 混合方法,通过将持续激活的热神经元预加载到 GPU 上以实现快速访问,在 CPU 上计算可变冷神经元,并集成自适应预测器和神经元感知稀疏运算符以优化效率。
请添加图片描述
总体而言,这些方法与模型压缩方法相辅相成,提高了大型语言模型的运行时效率。这些引擎展示了优化与模型压缩互补的软件架构和基础设施的可行性和优势。

实验分析:

如表是使用以下结构化修剪方法获得的 LLaMA-7B 模型的各种压缩的性能指标:Wanda-SP、LLM-pruner 和 FLaP。此处,∗ 表示 LLM-pruner 的微调版。

添加图片注释,不超过 140 字(可选)

如表是不同量化方法对 LLaMA2-7B 压缩的性能比较。这里,WM 和 RM 分别指权重内存和运行内存消耗。

添加图片注释,不超过 140 字(可选)

下表是使用各种推理引擎对 LLaMA2-7B 的压缩版进行性能比较,针对不同的预测和不同的硬件进行量化。这里,WM 和 RM 分别表示权重内存和运行内存消耗。

添加图片注释,不超过 140 字(可选)

目前存在的问题和挑战:

1.大规模修剪/提炼需要大量计算。规避该问题的可能方法包括:
• 重新审视无需训练的修剪方法,以探索它们在 LLM 环境中的潜力。例如,知识保留修剪可以得到改进并适用于 LLM,其重点是减少网络中不需要的知识背景,而不是消除权重。由于此类方法大多无需训练,因此它们只需增加少量计算预算即可提供高效的 LLM。
• 探索 LLM 的分层修剪。分层修剪的直接实现需要根据回归损失定义局部损失函数并压缩子网络,同时确保重现局部输出。然而,在这种方法中,即使是早期层中的小错误也可能很容易传播到后面的层,导致压缩网络性能不佳。
• LLM 的局部蒸馏。解决蒸馏问题的一个潜在解决方案可能是开发局部方法。这种方法不是将整个教师 LLM 信息压缩到较小的学生中,而是涉及在较小规模的学生子网络中学习教师网络的局部部分。然后可以设计一种策略将这些子网络组合成一个完全压缩的学生 LLM。这种方法有望成为解决与 LLM 蒸馏相关的计算挑战的潜在解决方案。
• 扩大较小的 LLM 以达到所需的性能。压缩大语言模型 (LLM) 的主要障碍在于微调过程中的计算挑战,这归因于模型的庞大规模。另一个雄心勃勃的研究方向是使用明确定义的神经网络增长策略,将较小的语言模型 (SLM) 扩展到 LLM。这种方法避免了训练全尺寸 LLM 的需要,最大计算负担由通过 SLM 的增长获得的最终压缩 LLM 决定。
• 使用 PEFT 方法在修剪效率时进行微调。为了解决修剪过程中的全规模微调挑战,另一种方法是采用 PEFT 方法。与传统方法不同,PEFT 不需要更新模型权重;只更新添加的掩码和 PEFT 参数 [Zhang et al., 2023]。这大大降低了微调过程的计算强度。然而,PEFT 方法目前在实现 LLM 的大规模压缩方面面临限制,这表明需要进一步研究以开发专门用于压缩 LLM 的 PEFT 方法。

  1. 在线量化-去量化造成推理时间太长。
  2. 在分层低秩近似的秩选择很难。
  3. 现有的评估指标可能不太适用。
  4. Python——一种解释型语言,导致执行时间较慢。
  5. 没必要维持在道德和偏见的考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值