大模型效率优化的解决方案系统研究

人工智能咨询培训老师叶梓 转载标明出处

大模型在强大的能力背后是对计算资源的巨大需求,这不仅限制了它们的应用范围,也对环境造成了潜在的影响。为了解决这一问题,来自俄亥俄州立大学、帝国理工学院、密歇根州立大学、亚马逊AWS AI、谷歌研究和微软亚洲研究院等机构的研究人员,对高效LLMs进行了系统性的研究,并在论文《Efficient Large Language Models: A Survey》中提出了一系列解决方案。图3为高效LLMs的研究的分类体系,包括模型中心、数据中心和框架中心三个主要类别。 

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。

1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型,以发挥其最大潜力。

CSDN教学平台录播地址:https://edu.csdn.net/course/detail/39987 

模型中心方法

模型中心方法主要关注于模型本身的优化,包括模型压缩、高效的预训练、微调、推理加速和架构设计等方面。

模型压缩

针对大模型(LLMs)的压缩技术旨在通过减少模型的大小和算术运算量来提高大模型的效率,如图5所示主要分为量化、参数剪枝、低秩近似和知识蒸馏四大类。这些技术通过不同的角度对大模型进行压缩,以减少资源消耗。

量化(Quantization)是将大模型的权重和/或激活从高精度数据类型(如32位浮点数)转换为低精度数据类型(如8位整数)的过程。这一过程可以用以下公式表示:

其中,Round 表示将浮点数映射到近似整数,absmax 表示输入元素的绝对最大值,K 是量化常数。量化技术可以分为训练后量化(PTQ)和量化感知训练(QAT)。

  • 训练后量化(PTQ):在模型训练完成后进行量化,使用小规模校准数据集更新量化后的权重和/或激活,以补偿准确度损失。PTQ可以分为两类:仅权重量化和权重-激活共量化。

    • 仅权重量化:例如,Dettmers等人(2022)提出的LLM.int8()方法,通过8位整数权重量化显著减少了推理过程中的内存使用,同时保持了全精度模型的性能。
    • 权重-激活共量化:与仅权重量化不同,权重-激活共量化同时量化模型权重和激活。例如,Yao等人(2022b)提出的ZeroQuant方法,通过结合组间的模型权重量化和token间的激活量化,为大模型的量化提供了新的思路。
  • 量化感知训练(QAT):与PTQ不同,QAT在训练过程中对模型进行量化,使模型能够学习到量化友好的表示。例如,Tao等人(2022)提出的QuantGPT结合了全精度教师模型的对比蒸馏和对学生模型的logit蒸馏,在自回归预训练中实现了高效的量化。

参数剪枝(Parameter Pruning)通过移除冗余或不重要的模型权重来压缩模型。参数剪枝方法可以分为结构化剪枝和非结构化剪枝两大类。

  • 结构化剪枝:例如,LLM-Pruner(Ma等人,2023)提出了一种任务不可知的结构化剪枝策略,通过梯度信息选择性地消除非必要的互联结构,利用LoRA(Hu等人,2022)在剪枝后恢复性能,展现了竞争性的零样本性能。

  • 非结构化剪枝:与结构化剪枝相比,非结构化剪枝更灵活,可以单独剪枝每个模型权重。例如,Frantar和Alistarh(2023)提出的SparseGPT方法,通过将剪枝问题表述为稀疏回归问题,并利用基于Hessian矩阵求逆的近似求解器来解决,达到了约60%的非结构化稀疏度,同时只经历了轻微的性能下降。

低秩近似(Low-Rank Approximation)通过将大模型的权重矩阵近似为更小的低秩矩阵来压缩模型。例如,Xu等人(2023a)提出的TensorGPT利用张量-张量分解(TTD)来压缩LLMs的嵌入层,通过创建高效的嵌入格式Matrix Product State(MPS),可以分布式高效计算。

知识蒸馏(Knowledge Distillation)通过将大型教师模型的知识转移到小型学生模型来压缩模型。例如,Timiryasov和Tastet(2023)提出的Baby LLaMA通过训练一个GPT-2和一系列较小的LLaMA模型的集成,然后将这个集成蒸馏到一个紧凑型的LLaMA模型中,该模型在性能上超越了其原始教师模型。

高效预训练

图 6 总结了LLMs高效预训练的技术,包括混合精度加速、模型扩展、初始化技术和优化策略。

混合精度训练(Mixed Precision Training)是提高预训练效率的一种方法,它使用低精度模型进行前向和反向传播,然后将计算出的低精度梯度转换为高精度梯度以更新原始的高精度权重。混合精度训练的技术(见图 6 ),包括自动混合精度(AMP)和大脑浮点数(BFLOAT16)。这些技术通过减少模型权重和激活的位宽,减少了内存使用和计算需求,同时保持了模型的性能。

模型扩展(Scaling Models)技术通过利用小型模型的权重来扩展到大型模型,加速了预训练的收敛并降低了训练成本。例如,Gong等人(2019)提出的渐进堆叠(Progressive Stacking)技术将知识从一个简单的模型传递到一个更复杂的模型,以提高模型训练的效率。

初始化技术(Initialization Techniques)在提高大模型预训练效率中起着关键作用,因为良好的初始化可以加速模型的收敛。例如,Kumar(2017)提出的初始化方法平衡了输入和输出的方差。

训练优化器(Training Optimizers)如Lion和Sophia,旨在加速大模型的预训练。这些优化器通过减少内存需求和计算量来提高训练效率。

系统级预训练效率优化(System-Level Pre-Training Efficiency Optimization)技术,如ZeRO和FSDP,通过在多个计算节点上分布式训练来优化大模型的预训练。这些技术通过分割训练状态来减少内存消耗和提高计算效率。

高效微调

这些技术主要分为两类:参数效率微调(PEFT)和内存效率微调(MEFT)。图9通过五个子图分别说明了参数高效微调和内存高效微调的几种技术。

参数高效微调(Parameter-Efficient Fine-Tuning)通过仅更新一小部分新添加的额外参数来适应下游任务,同时保持整个大模型的主干不变。这种方法可以分为低秩适应(Low-Rank Adaptation)、适配器基础调整(Adapter-based Tuning)、前缀调整(Prefix Tuning)和提示调整(Prompt Tuning)。

内存高效微调(Memory-Efficient Fine-Tuning)关注于在大模型微调过程中减少内存使用。例如,QLoRA 通过首先将模型量化为4位NormalFloat数据类型,然后对量化后的模型进行微调,从而在不降低性能的情况下减少了微调期间的内存使用。

高效推理

图10总结了LLMs高效推理的技术,包括算法级和系统级推理效率优化技术。

在算法层面,优化技术包括推测性解码和KV缓存优化。推测性解码(Speculative Decoding) 是一种用于自回归语言模型的解码策略,通过使用较小的草稿模型并行创建推测性前缀来加速采样过程。例如,Speculative Decoding 和 Staged Speculative 是推测性解码的例子,它们通过不同的策略来提高解码效率和性能。图11通过两个子图分别说明了推测性解码和KV缓存优化两种算法级推理效率优化技术。

在系统层面,优化技术包括在特定硬件架构下提高大模型推理效率的方法。例如,FlexGen 是一个高性能推理引擎,它通过线性规划方法协调各种硬件资源,量化权重和注意力缓存到4位,从而提高了在有限内存GPU上运行大模型的推理速度。

架构设计

图12总结了LLMs的高效架构设计,包括高效注意力、专家混合模型(MoE)和其他替代的序列模型。

高效注意力机制

共享式注意力(Sharing-based Attention):通过在键值(KV)头之间共享来加速推理过程中的注意力计算。例如,LLaMA-2模型采用了多查询注意力(MQA)和分组查询注意力(GQA)来优化自回归解码过程。

特征信息缩减(Feature Information Reduction):通过减少序列内的特征信息来降低计算需求,如Funnel-Transformer模型通过减少隐藏状态的序列长度来降低计算成本。

核化或低秩技术(Kernelization or Low-Rank):采用低秩表示或注意力核化技术来提升计算效率,例如Linformer模型通过线性投影将缩放点积注意力分割成更小的单元。

固定模式策略(Fixed Pattern Strategies):通过将注意力范围限制在预定的模式内,如局部窗口或固定步幅块模式,来提高效率。

可学习模式策略(Learnable Pattern Strategies):通过学习token的相关性并将它们分组到桶或聚类中,例如HyperAttention模型利用可学习的排序局部敏感哈希技术和快速矩阵乘法。

硬件辅助注意力(Hardware-Assisted Attention):开发特定于硬件的技术来提升注意力效率,如FlashAttention通过将所有注意力操作合并为一个内核来减少GPU内存之间的通信次数。

专家混合模型(Mixture of Experts (MoE))

MoE基础大模型(MoE-based LLMs):通过将任务分割成多个子任务,并为每个子任务开发专门的小型模型(专家),然后合并这些专家的输出。这种方法在预训练或微调时可以高效地管理大量参数,在推理时通过仅激活部分专家来减少推理时间。

算法级MoE优化(Algorithm-Level MoE Optimization):在算法层面上提高基于MoE的大模型的效率,例如通过改变专家选择方式或路由策略。

系统级MoE优化(System-Level MoE Optimization):在系统层面上优化MoE模型的训练和推理效率,例如通过分布式训练系统或优化MoE参数的存储和访问。

长序列大模型(Long Context LLMs)

位置外推和插值(Positional Extrapolation and Interpolation):通过扩展模型在训练期间学习的位置信息编码来处理比训练时更长的序列。

循环结构(Recurrent Structure):通过循环机制增强大模型处理长序列的能力。

分割和滑动窗口(Segmentation and Sliding Window):将输入数据分割成较小的片段或使用移动窗口来处理长序列。

记忆检索增强(Memory-Retrieval Augmentation):使用记忆检索策略来处理极长文本的推理。

替代Transformer架构(Transformer-Alternate Architectures)

一些替代Transformer架构的新架构,如状态空间模型(State Space Models),以及其他序列模型。

状态空间模型(State Space Models):作为替代注意力机制的方法,状态空间模型提供近线性的计算复杂度。

其他序列模型(Other Sequential Models):如RWKV模型,它结合了RNN和Transformer的优势,有效处理长序列处理的挑战。

数据中心方法

数据中心方法侧重于数据的质量和结构在提高大模型效率方面的作用。在大模型的背景下,数据选择技术主要用于提高预训练和微调的效率。

数据选择

数据选择是提高大模型预训练和微调效率的基础技术。通过策略性地选择信息丰富且多样化的数据样本,大模型可以在训练期间集中学习关键的模式和特征,从而加速学习过程。

数据选择用于高效预训练

在预训练阶段,数据选择通过精心挑选具有代表性的样本来提升大模型的预训练效率。例如,SSPT(Glass et al., 2020)基于阅读理解的原则,通过从上下文相关的文本段落中选择答案,显著提高了各种机器阅读理解(MRC)基准的性能。Yao et al. (2022a) 提出了一种基于元学习的挑选语言信息丰富句子的方法,显著提升了机器生成翻译的质量。Xie et al. (2023b) 提出的DSIR方法基于重要性重采样,适用于通用和专门的大模型。它通过计算数据片段在一组简单特征内的重要性来选择数据。实验结果表明,DSIR在八个不同的目标分布上实现了与专家策划相媲美的性能。在预训练通用领域模型的背景下,DSIR超过了随机选择和启发式过滤基线,在GLUE基准上提高了2-2.5%的性能。

数据选择用于高效微调

数据选择也可以提高大模型微调的效率,因为只有一小部分精选的示例被用来完善模型。例如,Ivison et al. (2023) 提出使用一些未标记的数据样本从更大的多任务数据集中检索相似的标记样本,改善特定任务的模型训练。这种方法在微调和少样本微调中超过了标准多任务数据采样,实现了2-23%的相对改进。TS-DShapley (Schoch et al., 2023) 引入了一种高效的基于采样的方法,通过从子集计算的Shapley值聚合来评估整个训练集。此外,它还结合了一种价值转移方法,利用了使用目标语言模型的表示训练的简单分类器的信息。LTD Instruction Tuning (Chen et al., 2023b) 挑战了微调中需要大型数据集的需求,表明不到原始数据集的0.5%可以有效训练特定任务的模型,而不会降低性能。这种方法在数据稀缺环境中实现了更资源高效的实践,结合了选择性数据策略和量身定制的训练协议,以实现最佳的数据效率。

提示工程

提示工程关注于设计有效的输入(即提示)以指导大模型生成期望的输出。它通过定制输入提示或查询以更好地适应特定语言模型的能力和细节,从而提高推理效率。当用于一些简单任务,例如语义分类时,提示工程甚至可以替代微调以实现高准确度。

少样本提示

少样本提示旨在为大模型提供有限的示例集(称为示范),以引导其理解所需执行的任务。这些示范基于与测试示例的相似性从训练语料库中选择,预计大模型将利用从这些类似示范中学到的知识来做出正确的预测。少样本提示提供了一种高效的机制来使用大模型,通过引导大模型执行各种任务而无需额外的训练或微调。此外,有效的少样本提示方法可以使创建的提示足够简洁,允许大模型快速适应任务,以高精度仅增加少量额外上下文,从而显著提高推理效率。

提示压缩

提示压缩通过压缩长提示输入或学习紧凑的提示表示来加速大模型输入的处理。例如,Mu et al. (2023) 提出训练大模型将提示蒸馏成更简洁的一组标记,称为gist标记。这些gist标记封装了原始提示的知识,可以存储以供将来使用。通过这种方式,它能够将提示压缩高达26倍,从而将每秒浮点运算次数(FLOPs)减少高达40%。

提示生成

提示生成通过自动创建有效的提示来提高效率,这些提示指导模型生成特定和相关的响应,而不是手动注释的数据。例如,AutoPrompt (Shin et al., 2020) 提出了一种自动化方法,基于梯度引导搜索为多种任务生成提示。它强调了人类编写的文本在提炼数据质量和真实性方面的重要性,强调了其在优化大模型性能中的关键作用。

框架中心的方法

支持大模型训练、微调和推理任务的框架旨在提供可扩展、高效、灵活的基础设施,以提高计算效率、减少内存占用、优化通信效率,并确保训练/微调过程的可靠性。支持推理的框架则专注于优化推理吞吐量,减少内存占用和延迟。这些框架提供了多种部署特性,以服务于大模型请求。这些框架的比较和关键特性在表2中进行了总结。

DeepSpeed 是微软开发的一款集成框架,用于训练和部署大模型。它被用来训练如 Megatron-Turing NLG 530B 和 BLOOM 等大型模型。DeepSpeed-Inference 是该框架的基础库,其关键特性是 ZeRO-Inference,这是一种优化技术,旨在解决大型模型推理的 GPU 内存限制问题。ZeRO-Inference 能够在多个 GPU 和 CPU 之间分布模型状态,提供一种管理 GPU 内存限制的方法。

Megatron 是 Nvidia 为了简化大模型的训练和部署而开发的框架,它支持如 GPT 和 T5 等模型。Megatron 的核心设计是将模型的张量操作分解,分布在多个 GPU 上,以优化处理速度和内存利用,从而提高训练吞吐量而不牺牲模型质量。

Alpa 是一个用于训练和部署大规模神经网络的库,它通过自动并行化来动态识别特定深度学习模型和硬件配置的最优并行策略。Alpa 结合了数据并行和模型并行,优化资源利用和训练吞吐量。

ColossalAI 是一个专门为大规模分布式训练设计的框架,它统一了多种并行技术,包括序列并行、自动并行化和零冗余优化器。该框架还实现了异构内存管理和专家并行等高级优化技术。

FairScale 是 Meta 开发的一个 PyTorch 扩展库,专注于高性能和大规模训练。FairScale 使用 Fully Sharded Data Parallel (FSDP) 作为扩展大型神经网络训练操作的首选方法。

Pax 是 Google 开发的基于 JAX 的高效分布式训练框架,它支持数据并行和张量并行,并且与 JAX 生态系统中的许多库高度集成。

Composer 是 Mosaic ML 设计的用于训练神经网络的框架,它支持全参数分片数据并行和弹性分片检查点,为用户提供了灵活的加速方法。

vLLM 是一个用于大模型推理和部署的开源库,它采用了 PagedAttention 机制,将注意力键值(KV)缓存分割,以灵活的方式存储,类似于操作系统中的虚拟内存管理。

OpenLLM 是一个用于在生产环境中部署和操作大模型的全面方法,它支持分布式微调和推理,以及与 BentoML、LangChain 和 Transformers Agents 的集成。

Ray-LLM 是 Ray 生态系统的一部分,用于优化大模型的部署和操作。它利用 Ray 的分布式计算能力,确保大模型任务在可用资源上高效分布。

MLC-LLM 是一个允许在各种设备上开发、优化和部署 AI 模型的框架,它专注于设备原生 AI,确保 AI 模型不仅高效,而且高度优化以适应其运行环境。

Sax 是 Google 设计的用于部署 Pax、JAX 和 PyTorch 模型进行推理任务的平台。它支持分布式推理,并与 Google Cloud 集成,提供切片服务和 Prometheus 监控指标。

Mosec 是一个为云环境设计的高性能机器学习模型服务框架,它专注于模型服务,使用户可以专注于模型优化和后端逻辑。Mosec 的关键特性包括高性能、易用性、动态批处理、流水线处理和云友好性。它还提供了模型预热、优雅关闭和 Prometheus 监控指标等功能,使其易于在 Kubernetes 或其他容器编排系统中管理。

通过精心设计的算法和系统架构,研究人员和工程师能够显著提升LLMs的性能,同时降低资源消耗。这些技术的发展不仅推动了LLMs的广泛应用,也为未来更复杂、更高效的AI模型的研究奠定了基础。

论文链接:https://arxiv.org/pdf/2312.03863

猜你喜欢

转载自blog.csdn.net/weixin_44292902/article/details/143029112