综述:大语言模型时代下的硬件与软件协同设计
24年10月来自杜克大学和 JHU 的论文“A Survey: Collaborative Hardware and Software Design in the Era of Large Language Models”。
大语言模型(LLM)的快速发展显著改变人工智能领域,展现出卓越的自然语言处理能力,并朝着多模态功能方向迈进。这些模型正日益融入各种应用,对研究和产业都产生深远的影响。然而,它们的开发和部署也面临着诸多挑战,包括对大量计算资源的需求、高能耗以及复杂的软件优化。与传统的深度学习系统不同,LLM 需要独特的训练和推理优化策略,重点在于系统级效率。本文综述专门针对大语言模型的独特特性和约束条件而设计的软硬件协同设计方法。本文分析 LLM 对硬件和算法研究的挑战和影响,探讨算法优化、硬件设计和系统级创新。其目标是全面理解以 LLM 为中心的计算系统中的权衡取舍和考量因素,从而指导人工智能的未来发展。最后,总结该领域现有的努力,并概述实现下一代大语言模型和人工智能系统生产级协同设计方法的未来方向。

框架与系统
并行性。随着深度神经网络(DNN)模型复杂性的不断增加,分布式训练变得至关重要,尤其对于低层模型(LLM)而言。PyTorch 的分布式数据并行(DDP)[19] 功能展示了该领域数据并行的一个例子。DDP 通过复制设置来同时处理不同的数据部分,并在每个训练步骤后进行同步。模型并行性则将模型分布在多个GPU上,每个GPU负责处理不同的阶段。模型并行包括两类:流水线并行[18]、[20]、[21],它将各个层分配给单个GPU;以及张量并行[22]–[24],它将每个张量分割成多个块,并分配给特定的GPU。除了传统的数据并行和模型并行之外,文献[9]提出了一种名为完全分片数据并行(FSDP)的新兴并行方法,用于LLM训练。
内存优化。零冗余优化器(ZeRO)[9]及其后续工作[25]–[27]旨在缓解大型模型训练中对GPU内存的高需求。ZeRO专注于减少GPU上数据的冗余副本。它提出了三个主要的优化阶段,分别对优化器状态、梯度和参数进行相应的划分。ZeRO-Offload[25]通过将优化器状态和优化器更新卸载到CPU,实现了对更大规模模型的训练,从而在可访问性和效率之间取得了平衡。 ZeRO-Infinity [26] 意识到模型规模的增长速度远高于 GPU 内存的增长速度,因此探索了更多以牺牲效率为代价来训练超大型模型的方法。除了之前的工作之外,它还引入了 NVMe 内存进行卸载,以获得更多存储空间,并将参数、梯度和激活检查点卸载到 CPU 上,因为随着模型规模的增长,这些数据的大小已无法再存储在 GPU 上。此外,它还管理相关操作以进一步减少缓冲区大小的需求。ZeRO++ [27] 回归了 ZeRO 的设计,并更加关注大型 GPU 集群的通信效率。虽然卸载可以促进大型模型的训练,但它会显著增加 GPU 和 CPU 之间的通信开销。这是因为这些组件之间的连接(例如大多数系统配置中的 PCIe)通常提供的带宽有限,无法满足 GPU 的峰值性能和内存带宽要求。因此,这种瓶颈会导致训练过程中出现明显的速度下降。
重物化(也称为检查点或重计算[28]),是一种用于训练LLM的技术,它通过权衡计算资源来更有效地管理内存使用。在前向传播过程中,仅存储一部分中间激活值,其选择基于一种策略,该策略旨在最小化内存使用量,同时保持可控的计算开销。在反向传播过程中,未存储的必要中间激活值会根据先前存储的激活值动态重新计算。将重新计算的激活值与存储的激活值相结合,即可进行更新模型参数所需的梯度计算。重物化显著降低了内存使用量,从而允许训练更大的模型或使用更大的批处理大小,而不会超出硬件内存限制。主要的权衡是由于重新计算而增加的计算成本,但考虑到训练更复杂模型的优势,这种成本通常是可以接受的。这种方法类似于通过图着色进行寄存器分配[29],后者旨在寻找调度策略以最大限度地重用有限的寄存器。 PyTorch 已针对同构序列网络实现了重物化 [28],并且针对异构网络开发了更高级的版本 [30]。
然而,这些内存缩减技术,例如重计算和 ZeRO,会导致严重的内存碎片化。为了解决这个问题,GMLake [31] 采用了一种虚拟内存拼接 (VMS) 机制来合并不连续的内存块,从而显著降低 LLM 微调的 GPU 内存使用量。GMLake 对 DNN 模型和技术透明,确保了资源密集型任务的无缝执行。
常用框架。除了可以在传统的 PyTorch [19] 和 TensorFlow [32] 中实现之外,还存在一些专门用于 LLM 训练的新兴框架,例如 DeepSpeed [33]、Hugging Face Transformation [34]、Torchtune [35] 和 Megatron-LM 等。大多数框架都集成了上述用于 LLM 训练的优化技术。
算法与系统协同设计
对预训练的LLM进行完全微调(即微调所有可学习参数)以用于特定的下游任务通常是不可行或成本过高。完全微调由于其计算密集型和资源密集型的特性,对支持系统平台提出了不小的挑战,并且可能会损害预训练骨干模型的泛化能力。参数高效微调(PEFT)通过引入额外的轻量级可训练模块或选择性地调整原始参数的一小部分来解决这一需求。基于适配器的PEFT方法系列策略性地将额外的可训练参数插入到冻结的预训练Transformer模块中,或作为附加组件。
LoRA。LoRA,即低秩自适应,是一种旨在以参数高效的方式微调大型预训练模型的技术[36]。 LoRA 在自适应过程中并非更新所有模型参数,而是通过对权重矩阵应用低秩分解,专注于低维子空间。这涉及更新能够近似表示所需变化的较小矩阵对,从而显著减少需要微调的参数数量。这种方法使得微调过程更快、内存占用更低,对于大型模型尤为有利。尽管参数数量减少,LoRA 仍能达到与传统微调方法相媲美的性能,使其成为在计算成本不高的情况下将大型预训练模型自适应到特定任务的理想选择。
由于其简单有效,许多 LoRA 变型被提出以改进原始 LoRA。SPLoRA [37] 和 LoRAPrune [38] 都利用结构化通道剪枝来移除权重组,从而提高计算效率。 QLoRA [39] 是一种高效的内存利用技术,它首先使用一种名为双量化的创新方法将预训练模型量化为一种新型的 4 位 NormalFloat 数据类型,然后使用分页优化器通过量化权重反向传播梯度。QLoRA 能够在单个 48GB GPU 上微调一个 LLaMA 65B 参数模型,其性能与 16 位完全微调模型的性能相当。LQ-LoRA [40] 通过将每个预训练矩阵分解为一个冻结的量化矩阵和一个可自适应的低秩矩阵,进一步将量化限制扩展到 3 位以下。QA-LoRA [41] 试图通过分组算子平衡 LoRA 中固有的量化和自适应之间的不平衡,从而兼顾两者的优势。
基于提示的学习。基于提示的学习在大语言模型(LLM)领域日益受到重视,其主要方法是利用少量示例或特定线索来引导预训练语言模型(PLM)生成所需的输出。这种方法与传统的监督学习截然不同,后者依赖于大量的标注数据来显式地训练模型。OpenAI 的 GPT-3 [42] 的出现极大地推动了基于提示的学习的探索,它证明了 GPT-3 的大规模特性使其能够在无需针对特定任务进行模型微调的情况下,利用精心设计的提示生成相关的输出。尽管如此,正如多项研究 [42]–[45] 所指出的,手动设计的提示与微调后的模型相比,性能往往存在差异。最近的研究表明,提示不必局限于自然语言形式,还可以使用梯度下降法在连续空间中进行优化,从而提高其效率 [46]–[51]。在仅调整连续提示(保持PLM参数不变)的情况下,训练依然高效,且性能与完整模型调优相当。提示调优[46]、[52]、[53]的概念被提出,用于微调与输入嵌入相连的连续向量,从而直接在嵌入空间内优化提示。在此基础上,p-调优方法被开发出来,通过在嵌入空间内学习具体提示来进一步提升性能,该技术在后续研究中得到了进一步完善[49]、[51]、[54]。
检索增强生成。检索增强生成(RAG)是一种通过集成外部知识检索系统来增强生成模型(如大语言模型)能力的技术。RAG是一种强大的LLM增强技术,使其能够生成基于最新、准确信息的响应。 RAG 结合了检索系统和生成模型的优势,确保大型语言模型更加可靠,不易产生幻觉,更适合对准确性和特异性有较高要求的现实世界应用。目前,近似最近邻搜索 (ANNS) 已被广泛用作 RAG 技术,它能够在高维大规模向量数据库中检索给定查询的近似最近邻。分层的可导航小世界 [55] (HNSW) 是一种基于图的 ANNS 算法,它将数据点组织在多层邻近图中,通过遍历分层结构实现快速搜索。另一方面,DiskANN [56] 通过将最近邻搜索扩展到基于磁盘的系统,旨在处理无法加载到内存中的大型数据集,从而在速度和内存效率之间取得平衡。Faiss [57] 是 Meta 开发的一个流行的库,它提供了高度优化的相似性搜索算法,尤其利用 GPU 加速实现快速的最近邻计算。这些人工神经网络(ANN)算法使得高效处理需要实时进行高维相似性搜索的检索任务成为可能。
其他方法。其他PEFT方法在自适应过程中选择性地更新预训练模型权重的子集。Diff剪枝[58]旨在学习一个加性稀疏掩码,并将其应用于每个任务的冻结预训练权重,从而有效地定位需要更新的特定任务权重。另一方面,PaFi[59]基于参数大小,找到一组通用的参数来更新所有下游任务。FISH掩码[60]通过估计每个模型参数的Fisher信息来衡量其重要性,从而生成一个二值掩码,指示哪些参数对当前任务至关重要。
用于训练的加速器
LLM 的训练和微调需要大量的计算资源。传统的 CPU 虽然功能强大,但通常不足以满足 LLM 的大规模并行处理需求。这促使人们采用和开发专用硬件加速器,旨在提高训练和微调过程的效率和速度。对于 LLM 而言,其极其庞大的内存占用使得加速器主要侧重于以内存为中心的优化,特别是内存压缩。
GPU。GPU(图形处理器)已成为现代深度学习基础设施的基石。GPU 最初是为渲染图形而设计的,其高度并行的架构使其成为训练神经网络所必需的矩阵和张量运算的理想选择。与 CPU 相比,NVIDIA 的 A100 [61] 和 H100 [62] 等 GPU 可显著提高训练速度,使其成为学术研究和工业应用的热门选择。针对大语言模型 (LLM),NVIDIA 提出了一种基于混合精度训练技术 [63] 的训练过程优化方案,称为 Transformer Engine [62]。
Transformer Engine。NVIDIA Transformer Engine 旨在优化广泛应用于自然语言处理和人工智能领域的基于 Transformer 的模型的性能和效率。它利用混合精度技术,结合 FP16(16 位浮点)和 FP32(32 位浮点)计算,在不影响模型精度的前提下,最大限度地提高吞吐量并最大限度地减少内存使用。Transformer Engine 利用 NVIDIA GPU 上的 Tensor Core,加速训练和推理过程,从而加快人工智能应用的开发和部署。这种方法提高了计算效率,并降低了大规模人工智能操作的成本和能耗。
TPU。张量处理单元 (TPU) 是 Google 专门为机器学习任务(特别是深度学习和大型语言模型 (LLM))开发的定制加速器。 TPU(线程处理单元)旨在通过提供高吞吐量和高效性能来应对训练大型语言模型(LLM)的巨大计算需求。它们采用脉动阵列架构[64]来加速矩阵乘法,这对于神经网络运算至关重要。TPU支持训练和推理,并具有高内存带宽和混合精度计算等特性,从而提高速度和效率。TPU通过提供可扩展的高性能计算,显著降低了训练大型复杂模型的时间和成本。
其他方面。ASIC加速器设计也旨在减少大语言模型(LLM)中的内存瓶颈。Smart-Infinity[65]是首个利用主机内存和存储作为LLM训练的扩展内存层次结构的研究,它通过近存储处理来解决存储带宽瓶颈,从而提高效率。它在定制的近存储加速器上执行参数更新,显著减少了存储流量。该系统包含一个高效的数据传输处理器,用于管理系统集成和重叠数据传输,同时保持固定的内存消耗。此外,加速器辅助的梯度压缩/解压缩通过减少写入流量来提高可扩展性。在此之前,许多研究侧重于基于稀疏性和量化的高效训练,例如 Sigma [66]、TensorDash [67]、FAST [68] 和 Combricon-Q [69],包括对基于 Transformer 的模型的评估。然而,这些研究主要针对规模小得多的语言模型,例如 GNMT [70]。
大语言模型 (LLM) 的高效训练是一个充满前景但尚处于起步阶段的领域。尽管它潜力巨大,但实际挑战和部署困难限制了相关研究,尤其是在加速器设计方面。
LLM 是功能强大且性能卓越的模型,但由于其极高的资源占用,预训练 LLM 的部署往往面临挑战。在极端情况下,诸如 LLaMa-70B 等大型模型包含数百亿个参数,其巨大的计算和内存成本对于大多数消费级设备而言难以承受。因此,人们开展大量研究来缓解这些瓶颈,例如使用专用加速器、先进的模型压缩方法以及算法改进。
LLM 推理系统
LLM 的关键步骤在于将其部署到硬件设备上,以满足离线推理和在线服务两种场景的需求。离线推理涉及单个用户,所有请求均在启动时发起,旨在通过增强模型的前向处理来降低推理延迟。相比之下,在线服务处理来自多个用户的异步请求,需要优化的内存管理以及高效的批处理和调度策略来提高吞吐量。此外,LLM规模的不断扩大通常需要跨多个硬件设备部署,从而形成复杂的架构。因此,系统级优化已成为重要的研究方向。
- 推理引擎:LLM的推理引擎优化旨在加速前向推理过程,这可以通过融合和非融合技术来实现。
运算融合。内核融合是LLM推理中广泛采用的优化技术。它涉及将计算图中的多个算子或层组合在一起。该方法通过减少内存访问、降低内核启动开销以及在不依赖数据的情况下提高并行性来增强计算效率。性能分析结果表明,注意力机制和线性运算主导LLM的运行时间,占总推理时间的75%以上[71]。为了优化注意力计算,FlashAttention[72][73]将整个过程集成到一个算子中,在GPT-2模型上实现了3倍的训练速度提升。 FlashDecoding [74] 和 FlashDecoding++ [75] 通过优化并行性并提高 SoftMax 计算效率,进一步增强这一性能。对于线性运算,TensorRT-LLM [76] 采用专门的 GEMV 实现,而 FlashDecoding++ [75] 则针对降维问题对 FlatGEMM 进行适配,利用细粒度分块和双缓冲来提高效率。其他优化措施包括融合轻量级运算,例如 LayerNorm、SwiGLU、激活函数和残差加法,这些融合由 DeepSpeed [33]、Byte-Transformer [77]、xFormers [78] 和 TensorRT-LLM [76] 等框架实现,其中 TensorRT-LLM [76] 还使用模式匹配算法来识别各种 LLM 架构中的潜在融合。
内存优化。除了融合之外,解决推理过程中输入和输出token大小动态变化带来的挑战也至关重要。受 CPU 虚拟内存系统的启发,vLLM [79] 引入 PagedAttention,将 KV 缓存分割成可管理的块,从而增强内存管理,吞吐量比 HuggingFace Transformers [34] 高出 24 倍。当 GPU 内存不足时,DeepSpeed 的 ZeRO-Inference [33] 等技术会将大模型权重卸载到 CPU 内存,通过重叠计算和权重获取来提高性能。类似地,FlexGen [80] 采用基于线性规划的策略来优化 CPU、GPU 和磁盘空间之间的卸载。利用高容量闪存存储模型参数进一步通过优化内存使用来展示高效的推理 [81]。
- 在线服务:LLM 服务系统的优化主要围绕有效管理异步请求来提高吞吐量和响应速度,并利用动态批处理、内存管理和调度策略。
批处理优化。高效处理可变大小的请求是LLM服务中的首要关注点。ORCA [82] 引入连续批处理或滚动批处理,即在先前请求完成后动态地将新请求批处理,从而优化计算资源的利用。Sarathi [83]、Sarathi-Serve [84] 和 LightLLM [85] 对此方法进行扩展,它们采用拆分融合技术来平衡不同处理阶段的负载,从而最大限度地缩短响应时间并提高吞吐量。
内存管理。由于KV缓存对内存的需求量很大,尤其是在进行长时间上下文交互时,高效的内存使用也至关重要。传统的内存分配策略通常会导致大量的内存浪费。为了解决这个问题,S3 [86] 预测生成长度的上限,从而优化初始内存分配。LLM [79] 进一步改进这一方法,它引入一种类似于操作系统的分页存储机制,分配尽可能大的连续空间,并动态映射键值缓存以减少碎片。LightLLM [85] 通过在token级别分配KV缓存存储,最大限度地提高空间利用率并最大限度地减少浪费,从而改进了这种方法。LLM in a Flash [81] 通过将模型参数存储在闪存中,并根据需要将其动态加载到 DRAM 中,解决高效运行超出可用 DRAM 容量的大语言模型 (LLM) 的挑战。当添加新token时,系统只需要更新最少数量的神经元,而无需重新加载所有神经元。
调度策略。请求长度的变化会显著影响调度效率。传统的先到先服务方法通常会导致资源利用率低下,即所谓的队头阻塞 [79]、[82]、[85]。为了应对这一挑战,FastServe [87] 采用抢占式调度策略,根据请求的预计完成时间对其进行优先级排序,从而提高吞吐量并缩短作业完成时间。此外,VTC [88] 引入一种面向公平性的调度模型,该模型根据传入请求的工作负载调整资源分配,确保不同用户之间服务的均衡性。分布式架构中的调度为扩展大型语言模型 (LLM) 服务提供独特的机会。SpotServe [89] 通过实现动态调整和状态恢复策略,解决使用云端抢占式 GPU 资源的挑战,确保服务的稳健连续性。最后,Splitwise [90] 和 TetriInfer [91] 等技术将计算密集型的预填充过程与内存密集型的解码过程分离,并根据每个阶段的具体需求定制资源分配。
异构计算。大语言模型 (LLM) 推理对计算和内存的巨大需求通常需要多个高端加速器。然而,随着对延迟不敏感任务需求的日益增长,一些研究[81]、[92]–[95]探索利用有限资源(例如单个GPU、边缘设备和移动设备)进行高吞吐量LLM推理的方法。其中最关键的挑战是由于内存容量不足导致的数据传输。数据传输通常有两种情况:第一种情况[81]、[92]、[93]是由于DRAM容量有限,模型参数和中间结果需要存储在存储器(例如闪存)中,从而导致DRAM和存储器之间的数据传输;第二种情况是CPU和GPU无法共享内存[94]、[95],由于GPU内存有限,模型参数和中间结果需要存储在主机内存中,从而导致CPU和GPU之间的数据传输。降低数据传输成本通常成为优化边缘设备上LLM的首要考虑因素。
这些研究可以从多个角度优化系统,以减少数据传输并降低存储成本。现有研究表明,仅保留部分有效激活值并不会降低模型性能,且激活值的稀疏性模式是可预测的[81],[92],[95]–[97]。利用激活值的稀疏性,计算仅需部分模型参数,从而显著降低数据传输和存储成本。
高效LLM算法
对于大模型,尤其是具有商业潜力的模型而言,更快的推理速度至关重要。针对大型模型的不同方面,人们提出各种算法来提高推理效率。
具体来说,专家混合模型(MoE)可以加速前馈神经网络(FFN),高效注意机制可以加速注意模块,推测解码可以加快自回归速度,而结构化状态空间模型(SSM)可以作为Transformer的替代方案,提高长序列的计算效率。
- 专家混合模型:专家混合模型(MoE)最早由Michael I. Jordan和Robert A. Jacobs在三十多年前的[98]和[99]中提出。最初的构想是提出一种架构,使每个专家处理不同的输入数据子集。后来,随着深度学习的兴起,[100]提出堆叠多个基于神经网络的MoE层来加深模型。近年来,大模型时代在缩放定律[101]的指导下兴起,该定律指出,随着模型规模的增大,模型的预测性能会得到提升。如今,由于其可扩展性,专家混合模型(MoE)越来越受到关注;也就是说,大幅增加参数数量几乎不会增加计算开销。MoE为大型模型的快速推理提供了一种解决方案,并已被一些著名的LLM所采用,例如GPT-4[102]和Mixtral[103]。
一个MoE层由若干专家模型和一个路由函数(或在某些文献中称为门控函数)组成。路由函数会为每个输入实体选择合适的专家进行计算。具体来说,令g(·)表示路由函数,{f_i(·)}表示E个专家。令M表示专家混合(MoE)模型,h表示路由函数。通常,h是一个线性模型,用于对专家进行线性分类。用p表示所有专家的概率分布。集合I表示被选中的专家;不同的选择会产生各种混合专家(MoE)技术。
使用混合专家(MoE)技术,在大语言模型(LLM)领域取得许多突破。Shazeer [104] 开发一个拥有 1370 亿个参数的 LSTM 模型,在计算开销极小的情况下显著提升模型容量。Switch Transformer [105] 将其扩展到一个基于 Transformer 的 MoE 模型,该模型拥有 1.6T 个参数,证实 MoE 的扩展遵循缩放定律。GShard [18] 高效地实现大规模 MoE,将其参数扩展 6000 亿以上。Clark [106] 研究基于路由的语言模型的缩放定律,推导出可扩展模型的有效参数计数。
针对训练大型 MoE 模型的不稳定性问题,ST-MoE [107] 提高迁移学习的性能。混合深度(MoD)[108] 探索在 Transformer 模型中跳过某些层的方法。 Xue [109] 和 Riquelme [110] 开发基于视觉 Transformer 的 MoE 模型,其中 Riquelme 的模型在计算量减半的情况下实现了最先进的性能。Obando [111] 构建一个用于强化学习的 MoE 模型,为该领域的扩展规律提供经验证据。MoEfication [112]、[113] 通过将权重分组到前馈神经网络 (FFN) 中,将密集模型转换为 MoE 模型。人们探索路由策略来平衡负载并解决训练不稳定性问题。基础层 [114] 使用线性分配问题来实现负载均衡,而哈希层 [115] 使用预定义的哈希函数。StableMoE [116] 通过学习一个平衡的路由函数来稳定训练。可微的 MoE 架构,例如 Soft MoE [117] 和 Lory [118],通过使操作可微来增强稳定性。在每次前向传播期间仅激活部分权重的 MoE 模型可以提高 GPU 内存效率和吞吐量。 SE-MoE [119]、M3ViT [120] 和 SiDA-MoE [121] 引入了优化吞吐量和专家缓存的策略。与 MoE 类似,FoE(专家融合)[122] 也聚合来自不同领域专家的知识,这些专家可以在各自的领域进行预训练。
- 高效注意机制:Transformer 模型计算的瓶颈在于注意机制,这体现在时间和内存两方面。目前已有一些研究致力于开发高效的注意机制算法,以加快推理速度或提高内存利用率。主要的研究方向可以分为两类:一类是对K-V对进行分组,另一类是利用核方法或低秩方法来近似计算注意得分。
推测性解码。推测性解码[131][132]旨在加速自回归大语言模型(LLM)的解码过程。其动机源于对内存加载是LLM推理瓶颈的观察,而较小规模的模型可以在内存效率较高的情况下输出正确的token。具体而言,推测性解码使用一个小型模型来生成token,LLM持续评估该小型模型生成的草稿,以决定是否接受或拒绝该生成。如果拒绝小型模型,则会从LLM中重新采样。大型语言模型的推理主要受限于大量的I/O操作,这是其瓶颈所在。推测性解码显著减少推理过程中的内存I/O,从而改善延迟,但可能会增加浮点运算次数(FLOPs)。
推测性解码的研究重点在于提高LLM对模型生成的接受率。一条研究路线侧重于利用计算单元,要求小型模型生成多个候选模型,以便由 LLM 并行评估 [133]–[135]。另一条研究路线旨在从算法的角度解决这个问题,改进 LLM 和小模型之间的匹配 [136]–[138]。
- 多模态LLM:纯文本LLM模型的进步为多模态LLM模型的快速发展铺平了道路 [7],后者可以处理图像和视频等视觉输入。这些多模态LLM模型的构建遵循一套成熟的流程。首先,使用视觉编码器(例如 CLIP [147])将视觉输入编码成一系列嵌入向量。然后,将这些嵌入向量通过投影器(例如多层感知器 (MLP))进行投影,使其与原始纯文本LLM 模型的嵌入空间对齐。对齐后,将视觉嵌入向量与文本嵌入向量以自回归的方式连接起来,使LLM模型能够基于两种模态处理和生成输出。然而,与纯文本LLM模型相比,视觉token/嵌入向量的集成会带来显著的计算负担。这主要是由于需要大量的视觉 tokens(通常成百上千个)才能全面表示视觉输入[7][148]。
为了降低多模态LLM带来的计算成本增加,人们开发多种方法来减少视觉 tokens 的数量。其中一种方法是使用感知器模块[149],该模块利用带有查询的Transformer进行学习池化,有效地替代多层感知器(MLP)作为投影器[150]。这种方法可以显著降低训练和推理的计算需求。另一种方法是PruMerge算法[151],它选择性地保留重要的视觉tokens,同时合并不太重要的tokens。尽管取得了这些进展,但由于系统性的探索仍然相对有限,该领域仍有很大的发展潜力。我们相信,持续的研究和创新将带来更高效的多模态LLM token标记处理技术。
压缩方法和加速器
LLM 的庞大规模给部署带来了巨大挑战,这既源于其计算复杂性,也源于其对资源可用性的要求。为了缓解这些瓶颈,同时保持模型的性能,提高推理效率并持续减少执行所需的资源,人们开展大量研究,旨在对 LLM 进行策略性压缩。模型压缩可分为四种主要方法:量化、剪枝、知识蒸馏和低秩分解。
总之,通过权重剪枝和稀疏注意等技术实现大语言模型(LLM)的稀疏化,可以提高效率并降低计算复杂度。然而,与量化不同,稀疏性带来的效率提升并非直接,需要仔细考虑硬件配置才能实现显著改进。非结构化稀疏性可以提供良好的压缩比并保持准确性,但这需要专门的硬件设计。虽然针对非结构化稀疏性提出的解决方案是有效的,但它们不可避免地会引入额外的硬件开销来处理不规则性。因此,在当前高效的语言模型处理实践中,结构化稀疏性通常更受青睐。它引入了一定程度的规律性,从而可以更高效地进行并行处理,在性能提升和硬件成本之间取得平衡。在实践中,稀疏性和量化通常结合使用来压缩语言模型。[208] 提供了关于如何在深度神经网络中最佳结合稀疏性和量化的理论和实证证据,为模型压缩和大语言模型的高效部署提供了宝贵的见解。
用于推理的加速器
使用LLM处理复杂语言任务需要极高的数据量和计算量。因此,迫切需要节能型专用处理器来最大限度地降低这些成本,尤其是在功耗受限的边缘设备上。实现这一目标并提高 LLM 推理效率的解决方案涉及硬件和算法的改进,相关研究总结于下表。

产业主导的AI加速器
尽管学术界提出了许多硬件和算法加速方案,但它们的应用范围和用途有限。本文主要关注LLM,例如BERT和GPT-2。这与产业应用截然不同,因为目标不仅是LLM 模型,而是所有AI工作负载。因此,架构设计必须考虑更具体的需求。IBM推出RaPiD [211]、[212],这是一款专为超低精度训练和推理而设计的AI加速芯片。它支持多种精度,包括最低的2位定点。通过精度扩展,从VGG-16到BERT等各种AI工作负载的性能和能耗均得到提升。IBM的最新产品NorthPole [213]、[214] 与其之前被归类为ASIC加速器的产品有所不同。 NorthPole 的目标是处理大规模工作负载,其性能可与 Google TPUv4 [215] 以及 NVIDIA A100 和 H100 AI 处理器相媲美。其卓越的性能得益于架构和 SDK 工具链的共同努力。这种软件辅助方法也已在他们的工作 [216] 中得到应用。
与此同时,微软发布其首款自主研发的 AI 加速器 Azure Maia 100,旨在提升其云端 AI 工作负载的性能。该加速器通过端到端系统优化,实现了可扩展性和可持续性。它配备了完全定制的网络协议和全面的 AI 框架环境。以晶圆级计算而闻名的 Cerebras 公司为深度学习的软硬件协同设计提供了指导 [217]。显然,LLM 在短短几年内就取得了飞速发展,参数规模从 BERT 的 1 亿个增长到 GPT-3 的 1750 亿个。为了跟上超大规模机器学习模型的增长步伐,他们提出了一种晶圆级的新型芯片架构。
尽管学术界已经提出许多LLM加速器,但它们大多用于推理,并且仅限于某些特定模型。换句话说,它们无法通用化应用于不同的工作负载。然而,它们能够利用特定工作负载中独特的数据路径或观测数据来加速计算,同时提高能效。另一方面,产业界主导的AI加速器则侧重于不同的视角。虽然这些加速器值得称道,但它们并非普遍适用。无论是边缘计算还是云端AI计算,客户目标都非常多样化,因此加速器的设计必须能够兼顾所有AI工作负载。这不仅包括推理,还包括高效的训练。尽管学术界和产业界的方案有所不同,但它们都拥有一个共同的关键目标:加速LLM以提高准确性、能效、延迟和可扩展性。
更多推荐
所有评论(0)