赞
踩
论文分析并总结了如何提高大型语言模型(LLM)在推断阶段的效率。文中指出,尽管LLM在多种任务中表现出色,但它们在资源有限的环境中的部署却面临着由于模型大小、注意力机制的复杂性和自回归解码过程所带来的计算和存储成本的挑战。文章通过建立一个包含数据层面、模型层面和系统层面优化的全面分类体系,探讨了当前文献中的不同优化策略,并进行了一系列比较实验,以提供定量见解。最后,文中还总结了现有知识并讨论了未来的研究方向。
Transformer由注意力机制和FFN层构成,自注意力机制带来大量的计算量,计算复杂性随着输入长度的增加而呈二次方增长,而FFN层带来了巨大的参数量。
与GPT一样,大语言模型的推断过程是一个自回归过程,可以分为预填充阶段和解码阶段:
预填充阶段: 在预填充阶段,模型接收一个输入序列,如 "I", "like", "natural", "language",并将其转换为一系列的嵌入向量,这些向量通过MHSA模块处理,生成相应的键(K)和值(V)用于注意力计算。这一阶段结束时,模型生成第一个输出token,并建立起KV缓存以备后续使用。
解码阶段: 在解码阶段,模型逐一生成剩余的输出令牌。每一步,它利用现有的KV缓存中的信息来生成下一个令牌,而不需要重新处理整个序列。随着每个新令牌的生成,KV缓存相应更新,从而使得解码过程更为高效。即对于第N个token,其隐层特征得到后,经过投影矩阵得到其中为下一个token预测时的Q,而和则加入缓存,这样KV缓存就包含了从第1个到第N个token的所有键和值。以作为下一个token预测的K和V。
效率分析: 模型大小、注意力操作的计算复杂性和自回归解码都会对计算成本与内存使用造成影响。在预填充阶段,模型必须处理长输入序列,导致内存使用率和访问频率增加,尤其是存储权重的模型尺寸增大导致存储需求增加。在解码阶段,由于自回归性质,每生成一个token就要加载整个模型,导致内存访问成本增加,而且随着输入序列的增长,KV缓存的大小也线性增长,这可能导致内存碎片和不规则的内存访问模式。这些因素共同作用,对LLM的推断效率产生了显著影响。
大模型的推理优化根据其侧重点可以分为3种层次:
数据层面的优化 (Data-level Optimization):
模型层面的优化 (Model-level Optimization):
系统层面的优化 (System-level Optimization):
输入压缩和输出组织是数据层面优化的两个关键方面:
输入压缩旨在通过简化模型的输入来减少所需的计算资源。各种技术包括:
提示修剪 (Prompt Pruning):
提示摘要 (Prompt Summary):
软提示基于压缩 (Soft Prompt-based Compression):
检索增强生成 (Retrieval-Augmented Generation):
输出组织方法旨在优化大型语言模型(LLM)的文本生成过程,特别是当涉及到长文本输出时。这种方法通过先规划文本的结构然后再填充内容来部分并行化生成过程,从而提高效率和产出的组织性。例如,Skeleton-of-Thought (SoT) 的方法。SoT旨在通过并行化生成过程来减少语言模型的时间消耗。它分为两个阶段:首先是生成答案的简短“骨架”,然后是展开这个骨架的各个部分以生成详细的输出。这种方法提高了生成长文本的效率,并且通过缓存共享优化了重复使用率。
随着LLMs变得更加复杂,它们处理更长的输入和生成更大的输出,因此优化计算资源的使用变得至关重要。输入压缩技术通常致力于减少模型必须处理的数据量,而输出组织策略则旨在使生成过程更加高效。两种方法都试图在保持输出质量的同时减少LLMs的计算和内存要求。
模型层面优化主要采用两种策略,以提高大型语言模型(LLM)在推断时的效率。这些优化主要集中在改善模型结构和数据表示方面。
高效结构设计:
模型压缩:
此外,数据表示优化,如模型量化,也常被用来减少模型在存储和计算时的资源消耗。通过量化技术,可以将模型权重和激活函数转换为低位宽格式,以减少模型的内存占用,并加速计算过程。
大模型普遍采用了Transformer架构,其两个核心组件——前馈网络(FFN)和注意力操作——在推断时面临着效率挑战:
前馈网络(FFN):
注意力操作:
为了解决这些效率问题,现有研究集中于开发更有效的模型结构。具体策略包括:
这些策略旨在减少LLM在推断过程中的资源消耗,同时保持甚至提高模型性能。
MoE的核心思想是动态地将计算资源分配给输入token中的“专家”网络,其中每个“专家”是FFN中的一部分,专门处理输入的一部分。这样可以在不增加整体计算需求的情况下,有效地提高处理能力和效率。
MoE的设计和优化
MoE FFN设计:
路由问题优化:
训练方法改进:
新型MoE应用:
多查询注意力(MQA):
分组查询注意力(GQA):
低复杂度注意力:
核心化注意力(Kernel-based Attention):
训练阶段的效率
推断阶段的优化
模型压缩包含模型量化、稀疏化、知识蒸馏、结构优化和动态推理
量化策略可分为后训练量化(Post-Training Quantization, PTQ)和量化感知训练(Quantization-Aware Training, QAT)。
后训练量化(Post-Training Quantization, PTQ)
PTQ是在模型训练完成后实施的量化过程,目的是将模型参数(包括权重和激活)从高精度格式转换为低精度格式,而不进行额外的训练。可分为权重只量化和权重激活量化
权重只量化(Weight-only Quantization)
权重量化:
推理过程:
优势与用途:
权重-激活量化(Weight-Activation Quantization)
量化感知训练(Quantization-Aware Training, QAT)
这两种量化策略各有利弊,选择哪种策略取决于具体需求、模型的复杂度以及部署环境。PTQ更快速且成本较低,适合对推理性能要求不是极端严格的应用;而QAT虽然成本和时间投入更高,但能更好地保持模型的准确性和复杂功能。
总结分析:
本节分析了使用权重量化(W4A16)技术对大型语言模型(LLaMA-2-7B 和 LLaMA-2-13B)推理性能的影响。分析主要基于两个框架:TensorRT-LLM 和 LMDeploy,测试不同的批处理大小(B)和输入上下文长度(从128到2048)。
权重量化对解码阶段的加速效果显著:
预填充阶段延迟的增加:
大批量和长上下文长度的挑战:
性能与资源需求的权衡:
权重修剪:稀疏化是一种通过增加模型中零元素的比例来减少计算和内存需求的技术,特别适用于大型语言模型(LLMs)。在稀疏化的上下文中,权重修剪是一种关键策略,它通过移除模型中被认为不重要的权重来减轻模型的负担。权重修剪可以细分为两种主要方法:
非结构化修剪(Unstructured Pruning)
结构化修剪(Structured Pruning)
稀疏注意力:稀疏注意力包含静态稀疏注意力和动态稀疏注意力
静态稀疏注意力模式:静态稀疏模式是在模型训练之前预定义的,不随输入变化而改变。
局部、全局和随机注意力模式(图a):
膨胀注意力模式(图b):
动态稀疏注意力模式:动态稀疏模式根据输入动态调整,实时确定关注的区域,以优化计算资源。
结构优化的目标是改进模型的体系结构或结构,以提高模型效率和性能之间的平衡。包括神经网络架构搜索(NAS)和低秩因式分解(LRF)。
神经网络架构搜索(NAS):NAS旨在自动化地搜索最优的神经网络架构,平衡效率和性能。这一过程利用各种策略来识别适合特定任务的最佳模型结构。具体应用实例包括:AutoTinyBERT、NAS-BERT等。
低秩因式分解(LRF):LRF通过将大矩阵分解成秩较低的小矩阵乘积来减少模型的计算需求和提升处理速度,尤其是在解码阶段。应用示例包括:ASVD等
结构优化的核心目标是在不牺牲模型性能的前提下,通过改进模型的内部结构和计算流程来显著提高其运行效率。
知识蒸馏主要是将大模型(教师模型)的知识传递到小模型(学生模型)中,以减少模型的规模和计算需求,同时尽量保持模型的性能。知识蒸馏可以分为两种主要方法:白盒蒸馏和黑盒蒸馏。
白盒蒸馏(White-Box KD)
白盒蒸馏允许访问教师模型的内部结构和参数,以此利用教师模型的中间特征(如激活层的输出)和最终输出来训练学生模型。这种方法的关键在于:
黑盒蒸馏(Black-Box KD)
黑盒蒸馏不需要对教师模型的内部结构或参数有任何访问权限,只需要教师模型的输出。这种方式特别适合于教师模型为商业机密或由第三方提供的情况。主要方法包括:
动态推理允许大型语言模型(LLM)在不同的模型层上根据特定的样本或token提前终止推理过程。这些技术主要分为两类:样本级早期退出和token级早期退出。
样本级早期退出
样本级早期退出技术专注于在个别样本的处理中识别和利用最优的模型结构和尺寸。常见的方法是在语言模型后附加额外的模块,这些模块在确定退出推理的最佳层级时起决定性作用。例如,FastBERT 和 DeeBERT 通过在特定层后附加额外的判断模块,根据模块输出确定是否继续或停止推理。这种方法可以减少不必要的计算,特别是当确定某些样本不需要完整的模型深度来做出准确预测时。
token级早期退出
在语言模型的解码阶段,即序列生成阶段,标记级早期退出技术通过评估每个输出标记的退出决策来实现。这类技术通常包括在每个输出步骤训练一个分类器,用来决定是否在某一层停止推理。
非传统结构探索:当前研究已开始探索替代传统Transformer的架构,如Mamba、RNVK等,这些架构通过改变计算和内存访问模式来提高效率。这表明在特定的应用场景中,这些非标准架构可能提供更优化的性能和效率。
模型压缩:模型量化仍是主流的压缩方法,特别是通过后训练量化(PTQ)和量化感知训练(QAT)来减少参数数量和内存使用。然而,量化可能会牺牲模型的某些能力,如多步推理和自我校准,因此需要谨慎选择适当的量化策略以减轻性能退化。
阶段性处理和稀疏化技术:针对长输入序列处理,流式处理和稀疏化技术显示出减少计算需求的潜力,但也可能影响到信息的完整性和模型性能。文中提到,如StreamLing和LoSparse等方法在处理大规模文本时能有效减少计算量。
结构搜索:神经架构搜索(NAS)被视为一种潜在的自动化工具,用于发现和优化LLM的最优架构。尽管NAS提供了在保持性能的同时增加计算效率的可能性,但它的计算需求很高,可能限制了其实用性。
低秩分解:低秩因式分解(LRF)技术通过将权重矩阵分解为低秩矩阵来减少必需加载的参数数量,从而加速解码阶段的计算。例如,SVD和TensorGPT就是利用这种技术来实现模型压缩和加速推理的例子。
知识蒸馏:知识蒸馏被认为是一个有前景的方向,可以通过教师模型将知识传递给较小的学生模型,减少模型的复杂性同时保持性能。
考虑到LLM中计算密集型的特性,特别是注意力机制和线性运算,这些操作占据了运行时的大部分时间。因此,系统级优化的主要目标是改进这些特定的特性,以增强模型的整体性能和效率。
改进解码方法:针对LLM的解码方法,提出了特殊的推测解码方法,这些方法旨在优化模型的运算利用率。通过这些优化,可以在不牺牲输出质量的情况下加速模型响应时间。
在线服务优化:在在线服务的上下文中,请求通常来自多个用户,且具有异步性。这要求系统能够有效处理来自不同用户的批处理和调度请求,同时需要优化内存使用和处理异步请求时的调度策略。
系统级优化着重于通过特定的技术和策略来改进模型在实际应用中的表现,尤其是在面对高并发请求时的性能表现。这包括对硬件和软件资源的有效管理,以确保模型能够快速且准确地响应请求,从而在实际部署中达到更高的效率和效果。
推理引擎的优化目的是加速模型在前向传递过程中的计算步骤,这通常涉及对注意力运算和线性运算的优化,因为它们占据了运行时间的大部分。如图所示,注意力运算和线性运算往往是推理时间的主要消耗者。这是因为它们在模型中广泛应用,并且随着输入序列长度的增加,它们的计算复杂度和内存需求也会显著增加。
推理引擎的优化主要包括图和算子优化和推断解码
图和算子优化主要针对模型的运算过程进行优化,特别是注意力和线性运算,这两种运算在大型语言模型(LLM)的推理阶段占据了大部分运行时间。这部分的优化旨在提高计算效率,缩短响应时间,并减少资源消耗。
注意力算子优化(Attention Operator Optimization):
线性运算优化(Linear Operator Optimization):
推测性解码是一个针对自回归语言模型的推理过程优化的方法,它通过一个草稿和验证的两步策略来提高解码效率。这种方法的核心思想是在不牺牲输出质量的前提下,提高计算的并行性和速度。主要包含2个阶段:
草稿构建(Draft Construction)在这一步骤中,使用一个较小的模型(通常称为草稿模型)来并行生成一系列预测token,这些令牌被称为“草稿token”。这个过程可以利用现代计算架构的并行计算能力,快速生成大量候选token。
草稿验证(Draft Verification):在这一步骤中,主模型(通常是一个更大或更精确的模型)计算草稿token的条件概率,以确定这些令牌是否应该被接受。这一步骤决定了每个草稿令牌是否符合生成目标,是保证输出质量的关键环节。
其接受概率为:
p代表LLM的条件概率,q代表草稿模型生成的概率。
对比分析:
对服务系统的优化能够提高处理异步请求的效率。主要包括内存管理、连续批处理、调度策略,以及分布式系统的优化。
内存管理:
连续批处理:
调度策略:
分布式系统:
通过针对FPGA的特定优化能够增强处理器在执行大型语言模型时的性能。
FACT:核心思想是通过混合精度量化的方式来优化注意力机制,使其在FPGA上的执行更为高效。重要结论是,与传统的NVIDIA V100 GPU相比,FACT能够实现更高的能效。
ALLO:致力于改善解码阶段的内存管理,减少内存使用中的冗余和无效率,从而提高了能效和解码速度。这说明了在内存密集的计算阶段,适当的硬件优化可以显著提升性能。
FlightLLM:通过在芯片上直接处理稀疏模式,使用数字信号处理器链优化处理,支持混合精度操作,从而达到高内存效率和能效。这表明针对特定的计算模式进行硬件级定制可以极大提高效率和速度。
系统级优化(如RadixAttention)是提升LLM服务效率的关键,特别是在面对大规模实时处理需求时。未来的发展方向可能包括更多针对特定应用的算法优化和硬件协同设计,以进一步提高性能和降低成本。
多模型框架:
长上下文LLMs:
边缘部署:
安全性和效率的权衡:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。