深度解析:AI大模型高效推理技术全览,掌握顶尖性能优化策略!

news2024/9/21 4:41:09

1 介绍

大型语言模型在人工智能领域中具有巨大的潜力 ,但推理过程中的禁止记忆和计算预算阻碍了其部署。 为了应对这些挑战,提出了许多针对LLMs的专业压缩方法,包括剪枝、知识传递、量化、紧凑的架构设计以及动态网络等。这些方法有助于减少模型推理过程中的内存和计算成本,以便模型可以在各种资源受限的设备上运行。

2 预备基本知识

2.1 Transformer

Transformer最初被应用在机器翻译中,其基本结构如图1所示。

图1 Transformer 基本结构

注意力。 注意力机制是将输入序列中的每个令牌映射到查询和/或键值对向量,然后将查询与一组键值对映射到输出,输出是值的加权和计算得出的,权重通过查询与相应键的兼容性函数计算。最常见的注意力模块是归一化点积函数:

其中,权重通过Q和K的点积计算得出,√dk是一个常量的缩放因子。

多头注意力。 此外,Transformer采用多头注意力机制,如图1所示,而不是仅用一个键值对注意力函数。它通过不同的线性层将输入标记映射到h个不同的查询(Qi)、键(Ki)和值(Vi | i ∈ [1, h])上。最后,输出变为:

其中 Wo 是线性投影矩阵。

编码器和解码器。 Transformer模型是一种编码器-解码器结构,用于神经机器翻译。编码器首先独立处理输入序列,解码器将编码器的输出作为输入并预测最终输出。编码器和解码器之间的两个核心区别是:编码器采用全注意力,解码器采用单向注意力;编码器采用自注意力模块,解码器采用跨注意力。随着技术的发展,除了编码器-解码器模型,还有许多后续的语言模型采用纯编码器结构和纯解码器结构。

2.2 中/大型语言模型

随着Transformer架构的流行,出现了许多基于纯Transformer架构的自然语言处理模型,这些模型参数越来越多。一般认为真正意义上的“大”语言模型应该从BERT和GPT-1算起,它们的参数规模都达到了数亿级别。之后出现了许多中等规模模型和大型模型,这些模型利用大规模的自我监督预训练来使模型具有许多小型模型所不具备的能力。中等规模模型参数数量在一亿或以下,而大型模型参数数量超过一亿。

2.3 参数高效的微调(PEFT)

许多模型压缩算法(如知识传递和剪枝)在压缩后需要进行微调甚至训练来恢复精度,但对于大型模型,全参数微调和训练成本高昂。因此,参数有效的微调(PEFT)算法被提出,旨在减少微调参数或迭代次数,降低微调成本。

3 量化

量化方法在降低内存成本和提高推理速度方面具有优势,特别是在支持低比特数据类型的硬件上。量化方法相对于其他压缩方法具有高压缩比、低成本和高灵活性等优势。我们将介绍标准量化方法和一些基本概念,并重点介绍近年来在LLM推理方面的量化方法,包括无需重新训练的方法和需要重新训练的方法。最后,我们将讨论一些高级主题,这些主题对未来的研究具有潜力。

3.1 基础概念

1)均匀量化。 均匀量化是一种基本的量化方法,它将实数值范围划分为均匀的有限区间,例如,对于b位整数的2b个区间。然后,同一区间内的实数值被映射到相同的整数。

2)非均匀量化。 非均匀量化可以提供更高的精度和更低的量化误差,但可能会因为涉及耗时的查找操作而效率低下。神经网络的权重通常不是均匀分布的,因此非均匀量化是可行的。

3)剪切范围和校准。 剪切范围和校准是均匀量化中的一个重要因素,选择合适的剪切范围可以减少异常值的数量,但也会导致更大的尺度系数和量化误差。常见的校准选择包括使用最小/最大值、绝对最大值或最小化信息损失。

4)对称/非对称量化。 对称/非对称量化是处理截断范围[α,β]的方法,当范围在0处对称时,称为对称量化;否则为非对称量化。非对称量化的剪枝范围更紧凑,对激活可能严重失衡的神经网络中的激活尤为重要。然而,在解量化步骤中,对称量化的计算效率更高。

5)量化粒度。 神经网络量化的分类标准是量化粒度,它对应于哪些权重/激活一起量化并共享量化参数。常见的量化粒度包括层级量化、通道量化、行/列量化、标记量化、组量化等。一般来说,更细的粒度可以减少量化误差,但需要存储更多的量化参数并引入更高的计算开销。

6)训练后的量化/量化感知训练。 训练后的量化/量化感知训练可以有效减少量化误差。其中,PTQ无需重新训练,而QAT需要重新训练。QAT通过模拟量化过程或微调量化模型来学习一个更好的性能点,但重新训练对于大多数研究人员来说成本高昂。

7)静态/动态量化。 静态量化是在推理前预先计算量化参数,通过校准输入找到典型的激活统计信息。动态量化是在运行时动态计算量化参数,通常更准确但需要较高的开销来计算所需的统计信息。

8)模拟/仅整数量化 模拟量化可以减少神经网络的内存成本和数据移动时间,对于一些工作表明LLM推断是内存密集型的来说有帮助。而仅整数量化可以利用特定硬件支持的高效低位操作加速。

9)仅权重/权重+激活量化。 量化目标是否仅是权重还是包括权重和激活。先前的工作[21]发现,激活量化通常更容易受到权重量化的影响,因此仅权重量化可以达到更低的位宽。然而,量化后的权重在乘以激活之前必须进行反量化,因此仅权重量化不能仅整数量化,在推理时将引入额外的计算开销。

根据这些基本概念将LLM的主要量化方法分类在表1中。

表1 LLMs几种强基线量化方法的详细分类。✓表示一种量化方法属于特定类别,×反之,◦表示一种量化方法可以在两种情况下使用。对于在不同位宽下工作的方法,我们报告最低的有效位宽。

3.2 中型语言模型的量化方法

中等规模的语言模型主要采用QAT方法,而不是PTQ方法,因为重新训练QAT带来的评估指标改进显著,特别是在极端低比特设置下。我们将首先介绍QAT方法,然后再介绍PTQ方法。QAT方法相对可以接受的成本代价,使得重新训练成为可能。

中等规模语言模型中的QAT, 主要致力于将BERT类模型中的权重和激活进行量化,以降低位宽。一些工作使用更复杂的方法实现了低于8位的量化宽度,并采用知识传递教育来克服性能下降。同时,一些工作在模型性能退化和量化位宽之间实现了自动平衡,通过可微神经架构搜索方法来自动分配参数的精度。这些技术有助于提高模型性能和效率。

中等规模语言模型中的PTQ,经过精心设计,通常不需要额外的微调和重新训练来补偿量化误差。一些方法如GOBO和I-BERT为特定的非线性函数设计了仅整数近似的方法,从而无需任何浮点运算即可实现端到端仅整数BERT推断。此外,使用更精细的粒度来减少量化误差,如组量化,可以将权重和激活量化为4位,并使用校准集来确定每个组的缩放因子。精心定制的PTQ方法所得到的量化参数可以作为QAT方法重新训练的一个良好的初始化点。

量化生成的中型语言模型, 尽管对BERT类模型进行量化的方法取得了成功,但在生成语言模型(如GPT、BART)出现之前,对生成式LLM进行量化的尝试却很少见。关键的区别在于,量化误差在token-by-token生成过程中逐个累积,因此量化生成式语言模型通常是一个更复杂的问题。根据Tao等人的研究,直接将专为BERT类模型设计的量化方法应用于生成语言模型会受到同质词嵌入和权重分布差异的阻碍。为了应对这些挑战,作者提出了两个解决方案:token级别的对比性引导和模块依赖的动态缩放。DQ-BART使用QAT框架和一种序列到序列模型的量化和去噪训练目标,即BART,进行去噪训练。DQ-BART采用标准对称均匀量化,并设定训练目标为最小化量化后的低精度学生模型和全精度教师模型之间的输出logits、注意力以及隐藏状态之间的差异。

3.3 LLM的PTQ

针对LLM的PTQ工作大致分为两类:仅权重量化(weight-only quantization)和权重+激活量化(weight + activation quantization)。

仅权重量化方法可以减少模型大小和内存使用,但无法享受低比特运算加速。这种方法在优化数据传输方面具有重要意义,但需要更多比特宽度存储权重。主要挑战包括LM推理依赖内存和激活模式阻碍量化过程。

权重+激活量化的方法通过同时量化权重和激活,以减少模型的内存使用和计算量,但这种方法存在挑战,包括量化误差对权重和激活的影响以及量化误差对模型性能的影响不同。一些方法采用量化误差最小化的方法,而另一些方法则采用量化误差和模型性能之间的权衡方法。

3.4 对LLM的量化感知训练(QAT)

量化感知训练是一种用于恢复量化模型性能的方法,通常涉及整个模型的重新训练。对于LLM模型,这种方法成本较高,因此一些尝试将量化与参数高效的训练方法相结合。当前针对LLM的QAT方法分为两类:全参数重新训练和参数-高效再训练。

全参数重新训练是一种在量化LLM时对LLM进行完整的参数重新训练的方法,通过使用边缘蒸馏方法、数据生成方法以及QAT和蒸馏技术,可以保留原始模型的涌现能力,同时减少内存使用和计算量。这种方法还使用数据生成方法生成数据,并使用原始LLM对生成的数据进行训练,以匹配量化LLM的输出分布。

参数-高效再训练是指采用参数高效的方法重新训练LLM。其中,QLoRA和QA-LoRA提出了将组量化集成到QLoRA中,缓解量化与低秩适应之间的不平衡问题。此外,还讨论了其他工作,如冻结量化指数并仅微调量化参数、使用二进制量化等。这些方法在具有相对可接受的计算预算下,采用低秩适应来重新训练量化LLM。这些方法有助于提高LLM的性能和效率。

3.5 关于LLM量化的其他主题

量化相关工作还包括设计高效的内核、量化方法以及将量化方法集成到实际应用中。一种有效内核LUT-GEMM用于扩展版本的BCQ方法,可表示均匀和非均匀量化,将OPT-175B模型的延迟加速了2.1倍,实现了3位量化。一些工作还专注于研究LLM中出现异常值的原因,并寻找从源头抑制异常值的方法。可量化变压器认为激活中的异常值是由于注意力头部的行为,并设计了截断softmax和门控注意力来赋予模型产生最小幅度(甚至完全零)的能力。这些工作为LLM的量化提供了重要的理论和实践指导。

4 剪枝

神经网络剪枝是一种压缩和加速技术,通过消除非必要权重或结构来保持网络性能。在LLMs中,剪枝效果不稳定,受限于微调过程。由于模型参数众多,微调成本高昂,难以实现剪枝的全部效果。为了增强和改进剪枝效果,需要进一步探索,以在LLMs中获得更好的结果。剪枝对于模型压缩至关重要。

4.1 基本概念

1) 剪枝单元: 剪枝单元在剪枝过程中起到关键作用,包括权重、神经元、注意力头、层等。非结构化剪枝关注单个权重,可以获得更高的稀疏度比并保持更好的性能,但计算效率较低。结构化剪枝可以轻松实现推理速度提升,但稀疏度比低于非结构化剪枝模型。在结构化剪枝中,需要避免集成结构删除导致模型性能下降。

2) 剪枝度量: 剪枝度量是用于确定是否剪枝或保留元素的准则,包括基于幅度的、基于损失的和基于正则化的方法。这些方法可以单独使用,也可以组合使用。GBLM-Pruner结合了三种剪枝方法,通过比较权重的绝对值、梯度和L1或L2范数来确定剪枝单元的重要性,有助于提高模型性能和泛化能力。

3) 动态/静态剪枝: 动态剪枝在训练过程中实时调整模型结构,以适应数据分布的变化,但计算复杂度较高;静态剪枝则在训练结束后一次性剪枝,计算复杂度较低,但可能无法充分利用数据分布的信息。

4) 迭代/一次性剪枝: 迭代式方法在训练、微调过程中多次迭代,保持模型性能,适用于剪枝较小的模型,计算时间较长,但效果较好;一次性方法只进行一次剪枝,不涉及迭代和微调,适用于剪枝较大的模型,计算时间较短,但可能无法保持模型性能。

5)全局/局部剪枝: 全局剪枝方法通过比较所有剪枝单元来识别并消除不那么重要的单元,可能导致特定区域过度剪枝。局部剪枝方法对每个区域的稀疏性施加约束,以避免模型崩溃的风险。

6) 数据驱动和免数据裁剪: 数据驱动裁剪依赖于可用数据推导出裁剪决策,表现更优,但免数据裁剪独立于数据输入执行网络裁剪,简单易实现且在复杂方法中取得具有竞争力的结果。免数据裁剪解决了在某些场景下数据集可能不可用的挑战。

7) 上/下游剪枝: 语言模型训练分为预训练和微调两个阶段。上游修剪在微调前对模型进行修剪,保留其多功能性;下游修剪在微调过程中进行,指导模型专注于特定任务。上游修剪有助于提高模型的泛化能力,下游修剪则有助于提高精度和效率。

4.2 中型语言模型的剪枝方法

针对语言模型的专业设计剪枝方法专门针对其独特特性,不同于传统的剪枝方法。其中包括专门针对基于转换器的模型和适用于多种不同架构模型的通用方法。剪枝方法分为无结构和结构化方法,

4.2.1 针对中型语言模型的非结构化剪枝

非结构剪枝方法在不考虑任何特定约束的情况下,将非必要的权重置为零。我们按照修剪标准的顺序介绍三种修剪方法:基于规模的剪枝、基于损失的剪枝和正则化。这些技术有助于减少模型参数数量,提高模型性能和效率。

基于规模的剪枝。 基于规模的剪枝是一种简单有效的方法,它考虑了权重和激活值的规模。在中型语言模型中,剪枝方法主要关注权重的规模。幅度修剪是一种常用的剪枝方法,研究发现约30-40%的权重可以丢弃而不影响BERT的性能。一次性修剪所有任务在微调前对所有任务进行一次性修剪,无需为每个任务单独修剪,同时保持性能完整性。与幅度修剪相比,渐变幅度修剪引入了稀疏度比例计划,在整个修剪过程中逐渐降低稀疏度比例。一次性修剪和GMP⋆都是专门应用于语言模型修剪的GMP的实现。GMP⋆还引入了一个初始的实质性修剪步骤,以更好地适应高目标稀疏度,最终导致性能改善。

基于损失的剪枝。 基于损失的剪枝是一种更准确的剪枝方法,通过分析权重对损失函数的贡献来确定哪些权重可以被剪枝。它包括基于梯度和基于Hessian矩阵的两种主要方法。在语言模型剪枝中,基于损失的剪枝取得了很好的效果,例如SparseGPT和LLM Surgeon方法。这些方法将OBD和OBS方法应用于GPT-family模型和非结构化和结构化剪枝中,实现了高效的大规模语言模型剪枝。

正则化。 正则化方法包括 L1、L2 和 Lo 正则化,其中 Lo 正则化在模型压缩中更为常用。Lo 正则化将权重的 Lo 范数纳入损失函数,以实现非零权重的稀疏化。然而,离散的 Lo 范数在梯度下降优化中存在挑战,因此使用硬混凝土分布作为二进制掩码的近似,如图4。

图4 使用蒙特卡洛模拟对硬混凝土分布的近似概率密度直方图。该硬混凝土分布的参数为对数α=0,β=0.5,γ=−0.1,和ζ=1.1。在该规格下,硬混凝土分布大致将其质量的一半分配到{0,1}中,其余分配到(0,1)中。

其他。

非结构剪枝方法在高稀疏度下保持模型性能,但面临推理加速挑战。N:M稀疏性原则通过要求连续的M组权重中不超过N个权重具有非零值,实现有效的推理加速。这种压缩依赖于硬件的独特架构,如稀疏张量核心。N:M稀疏性与非结构化修剪方法无缝集成,提供推理速度提升。例如,稀疏模式可以基于权重的幅度进行初步确定,2:4稀疏性在没有牺牲性能的情况下,展示了计算速度的两倍显着加速。

4.2.2 针对中型语言模型的结构化剪枝

结构化剪枝在应用于中型语言模型时,选择适当的剪枝单位与度量同样重要。通常考虑的剪枝单元包括注意力头、全连接层神经元、隐层维度等。使用与架构相关的结构作为剪枝单元能产生更理想的结果,因为这可以保留模型构造中固有的基本原则。接下来将深入探讨结构化剪枝的领域,包括基于权重的剪枝、基于损失的剪枝和正则化技术。

基于权重的剪枝。 修剪单元权重的加权和可以作为有意义的表示,这可以广泛地应用于CNN中的卷积核。同样地,也可以将其扩展到中型语言模型。例如,可以将权重大小与L2范数进行加权和,以表示注意力头、FFN神经元和权重块中的相应重要性。然后,根据其重要性得分的顺序去除不重要的结构。

基于损失的剪枝。 基于损失的剪枝方法在注意力头部得到了关注,其中米歇尔等人提出了一种迭代剪枝方法,剪枝注意力头部的20-40%不会显著损害目标任务上的测试准确性。然而,可区分子集剪枝表明,米歇尔等人对可剪枝的Transformer头数量做出了显著低估。此外,块移动修剪方法通过考虑任意大小的块并集成到运动修剪中来扩展结构方法。同时,也有许多方法同时修剪FFN中的神经元和注意力头。一些结构化剪枝方法可以泛化,因为其中的剪枝单元是神经元,例如稀疏与低秩逼近在神经元级别剪枝权重矩阵。

正则化。 除了基于损失的剪枝方法,正则化方法也是适用于中型语言模型的有结构剪枝技术中的一类。其中,L0正则化因其广泛的应用而脱颖而出。这些L0正则化方法主要应用于剪枝注意力头和FFN神经元,并使用低秩剪枝和增广拉格朗日方法来调节稀疏度比率。此外,L1正则化也得到了相关研究,通过稀疏性诱导的目标学习可压缩组件的掩码,得到不同大小的剪枝模型。这些剪枝后的模型随后可以通过因果传递目标进行微调以提高性能。

其他。 结构化剪枝还有层修剪、令牌修剪等方法。层修剪的特点是规模相对较小,需要更详细的修剪方案来确定哪些应该被修剪。令牌修剪则涉及在推理过程中从序列中删除不重要的令牌,以减少计算需求。学习令牌剪枝(LTP)是一种直接有效的方法,用于根据输入序列穿过转换器层的情况来适当地删除不重要令牌。每个令牌的剪枝度量由Transformer块中归一化注意力概率的总和确定。除了这些,结构化剪枝还包括许多不同的单元,例如谱归一化身份先验(SNIP),它采取了一种策略来剪枝注意力层和FFN子层,即将残差连接转化为严格的身份映射。

4.3 LLM的修剪方法

在这一部分,我们将介绍针对LLM的剪枝方法,反映中等规模语言模型剪枝方法部分中建立的顺序。针对LLM的剪枝方法采用与中等规模语言模型所使用的并行方法相同的方法,某些方法中的一些区别主要在于省略微调过程。为了便于对这些方法进行更全面的比较,我们将这些剪枝方法的特性进行了整合,具体可见表3。

表3 对LLM的各种修剪方法的总结

4.3.2 LLM的非结构化剪枝

非结构剪枝方法回避微调过程,采用回避微调过程的方法,如表3,可以在模型性能相对折衷的情况下达到50%的稀疏度比率。后续的非结构化剪枝方法在各种NLP任务中超越SparseGPT和Wanda,获得优越结果。这些非结构化的剪枝方法需要最少的校准数据,可分为基于规模的剪枝和基于损失的剪枝。

基于规模的剪枝。 基于规模的剪枝是一种基于权重大小的剪枝方法,它通过剪枝权重较小的神经元来减少模型的大小。在LLM中,这种方法通常结合激活值来评估神经元的重要性。Wanda和RIA等方法使用权重和激活值的乘积作为剪枝指标,而E-Sparse方法还引入了信息熵作为剪枝指标。

基于损失的剪枝。 基于损失的剪枝方法,包括一阶和二阶方法。其中,二阶剪枝方法包括OBD和OBS,而SparseGPT将OBS应用于GPT家族模型,无需微调过程且不会损失太多精度。此外,还介绍了LLM外科医生对无结构和结构剪枝的通用性,以及基于梯度的一阶剪枝方法。Shao等人引入了新型剪枝度量,为剪枝过程提供全面和精细的评估,并提出了稀疏性比率分配给每个矩阵的方法。

4.3.3 LLM的结构化剪枝

LLM的结构剪枝方法,不受硬件限制,能够在剪枝过程后实现推理加速,但需要微调过程来恢复性能。这种方法开创性的方法有LLM-Pruner,作为后续方法的基准,促进了有意义的比较。微调在非结构剪枝中已被废弃,但在LLM中广泛采用。LLM的结构化剪枝包括基于规模的剪枝、基于损失的剪枝和正则化。

基于规模的剪枝。 基于规模的剪枝方法将行或列作为剪枝单位。例如,FLAP方法以列为剪枝单位,通过“波动度量”来测量每个列的重要性得分。波动度量是输入特征的样本方差,与权重矩阵相应列的平方范数相关联。此外,FLAP还引入了偏差补偿机制,以消除组件删除所带来的负面影响,从而避免了微调的必要性。

基于损失的剪枝。 在应用于LLM的基于损失的结构化剪枝方法领域中,梯度信息至关重要。现有方法以不同方式利用梯度信息,如定义剪枝结构、选择剪枝目标等。与传统方法相比,这些方法避免了预定义的剪枝单元,能够动态识别和指定剪枝单元。例如,LLM-Pruner在修剪过程中移除非关键耦合结构,通过结构依赖性的定义自动识别和提取。LoRAShear在依赖图中发现最小删除结构,专门针对LoRA模块构建依赖图,利用知识分布分析来识别关键结构。Ji等人提出了一种新颖的方法,使用非神经模型,特别是梯度提升决策树(GBDT)作为精度预测器,进一步优化搜索空间和搜索过程,以自动识别最佳修剪模型。

正则化。 剪枝LLaMA和Compresso都是应用于LLMs的正则化方法,其中剪枝LLaMA通过联合修剪粗粒度和细粒度模块,引入了目标结构剪枝和动态批量加载两个新颖组件,实现了紧凑替代方案并优于从头开始训练的模型。而Compresso将LoRA集成到L0正则化中,通过协作剪枝范式提高LLM在剪枝过程中的理解和合作,从而提高性能并适应修改后的模型结构。两者都利用了剪枝技术来优化模型结构并加速训练过程。

4.4 关于LLM剪枝的其他主题

4.4.1 提高LLM的剪枝效率

为了增强LLMs定制修剪方法的效果,已经开发出多种辅助技术,包括定制稀疏性比率、后修剪微调方法和硬件优化。这些技术可以与现有方法集成,增强整体修剪效果。其中,一种定制稀疏比率的方法是“离群加权分层稀疏”(OWL),它根据每一层观察到的离群比率定制非均匀分层稀疏比率。另一种后修剪微调方法是“动态稀疏无训练”(Dynamic Sparse No Training),它引入了无需训练的微调方法,可进行轻微更新并最小化重建误差。实验表明,这些技术能够显著提高现有剪枝方法(如Wanda和SparseGPT)的性能,说明剪枝性能的潜在提升可以通过与剪枝方法核心无关的手段实现。

4.4.2 LLM剪枝的未来工作

尽管LLM领域在修剪方面取得了一定成果,但仍面临两大挑战。首先,将修剪与其他方法(如量化和知识蒸馏)相结合对于实现竞争力强的性能至关重要。当前LLM修剪的成果相对不太令人满意,因此,增强修剪方法的内在有效性,确保其独立使用时的熟练程度是关键。其次,LLM修剪中的微调成本是一个重大挑战。许多方法采用一次性修剪而无需微调来最小化计算负担,但这会损害修剪模型的性能。科研人员和从业人员必须应对无法执行完整微调的挑战,特别是当处理旨在增强修剪性能的LLM时。解决这些挑战对于提高修剪技术的有效性和实用性至关重要。

5 知识蒸馏(KD)

知识蒸馏是一种将教师模型的知识转移给学生模型的技术,通过简化学生模型,使其能够以更简洁和更有效的方式表示教师模型的知识。

5.1 基本概念

知识蒸馏主要分为以下四类:基于逻辑的知识蒸馏(logit-based KD)、基于特征的知识蒸馏(feature-based KD)、基于关系的知识蒸馏(relation-based KD)和黑箱知识蒸馏(black-box KD)。前三种蒸馏方法属于白盒蒸馏,需要访问教师模型内部数据。而黑盒知识蒸馏则是通过教师模型的预测结果来传递知识,不需要访问模型内部数据。当代封闭源大型模型内部信息不可获取,只能得到预测结果。黑盒知识蒸馏是一种有效的知识传递方式。在图5中,我们简要概述了这些知识蒸馏方法及其之间的关系。

图5 知识蒸馏分类

5.2 中等规模语言模型的知识蒸馏方法

中等规模的语言模型通过预训练和微调两个阶段进行训练,其中预训练阶段使用大规模的无标签数据集学习语言的通用特征和结构,微调阶段使用带标签的数据使其适应特定任务。模型蒸馏可分为微调蒸馏和预训练蒸馏两类。微调蒸馏是在微调阶段使用知识蒸馏的方法,而预训练蒸馏是在预训练阶段使用知识蒸馏的方法。表4展示了各种中等规模模型蒸馏方法的训练阶段、知识来源和损失函数。这些方法有助于提高模型性能和泛化能力。

5.3 大语言模型的知识蒸馏方法

大型语言模型数量增长,但许多闭源,限制了学生模型的知识获取。知识蒸馏通过利用教师模型的响应,即知识剩余来源,将信息传递给学生模型。根据学生模型的知识来源,大型语言模型的知识蒸馏可分为黑盒蒸馏和白盒蒸馏。黑盒蒸馏适用于学生模型可以从教师模型响应之外的其他来源获取知识的场景,而白盒蒸馏适用于学生模型只能从教师模型响应中获取知识的场景。

6 紧凑架构设计

紧凑架构设计是一种提高效率和精简的理念,通过优化网络结构和算法,显著提高模型效率,同时减少计算资源和内存的使用。它可分为微观和宏观两个层次进行研究,重点优化注意力计算和Transformer架构设计。

6.1 高效注意力

Transformer中的标准自注意力机制时空复杂度为O(N2),阻碍了处理长序列问题的能力。为了解决这个问题,出现了高效注意力工作,包括稀疏注意力、线性近似注意力和闪存注意力等。

6.2 神经架构搜索(NAS)

神经架构搜索(NAS)是一种有前途的解决方案,用于自动设计神经网络模型的结构和参数。为了解决硬件设备部署和资源有限硬件设备上的低延迟推理问题,提出了HAT方法,通过离线训练延迟预测器来加速搜索速度。HAT还观察到关注多个编码层对解码层是有益的,不同的硬件对模型有不同的偏好,这为不同硬件条件和延迟要求下的Transformer模型提供了一种高效的NAS方案。同时,它可以很好地与其他压缩加速方法相结合。

7 动态网络(DyNN)

扩大语言模型的规模可以提升其在自然语言处理任务上的性能,但会带来巨大的计算成本和内存需求。动态神经网络(DyNN)仅使用网络的一部分来处理每个输入,使得整个模型在资源受限的环境下更灵活、更有效地满足计算需求。目前对DyNN的研究主要包括早期退出、级联推理和专家混合(MoE)。早期退出是为了在深度神经网络(DNN)的早期层中动态终止推理过程,从而降低计算成本并提高响应时间。级联推理利用一系列不同规模的语义模型来处理不同复杂程度的请求。MoE在多个子网络上横向扩展前馈网络(FFN),其中只有一个或少数几个子网络在单个前向传递过程中被激活。MoE被广泛纳入当今LLMs的架构中,以提供高效而强大的服务。表5中总结了一些具有代表性的MoE方法。

表5 各种MoE方法总结

7.1 将MoE与其他高效技术结合使用

在稀疏MoE模型领域,研究人员探索了将传统模型压缩技术引入MoE模型的几种方法。其中,Switch Transformer将大型稀疏模型转化为小型密集模型,DeepSpeed-MoE将大型教师MoE模型转化为具有较浅专家网络的小型学生MoE模型,并采用阶段式KD训练策略。MoE模型的剪枝旨在去除冗余或影响较小的组件,而Z-code尝试了两种专家选择方法:随机选择和基于验证集利用率的选择。这些方法在保留MoE模型质量的同时,减少了内存消耗和资源消耗。实验结果表明这些方法的有效性。

8 加速框架

随着Transformer模型的发展,各种模型层出不穷,但由于应用场景不同,对延迟、吞吐量、内存等有额外要求,导致模型难以部署。本文介绍了一些针对LLM的推理加速框架,这些框架在不同场景下有效提高了模型的效率。我们将框架分为一般框架和专用框架,并根据泛化性进行了分类。

表6 各种加速框架的总结

零基础如何学习大模型 AI

领取方式在文末

为什么要学习大模型?

学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。

大模型实际应用案例分享

①智能客服:某科技公司员工在学习了大模型课程后,成功开发了一套基于自然语言处理的大模型智能客服系统。该系统不仅提高了客户服务效率,还显著降低了人工成本。
②医疗影像分析:一位医学研究人员通过学习大模型课程,掌握了深度学习技术在医疗影像分析中的应用。他开发的算法能够准确识别肿瘤等病变,为医生提供了有力的诊断辅助。
③金融风险管理:一位金融分析师利用大模型课程中学到的知识,开发了一套信用评分模型。该模型帮助银行更准确地评估贷款申请者的信用风险,降低了不良贷款率。
④智能推荐系统:一位电商平台的工程师在学习大模型课程后,优化了平台的商品推荐算法。新算法提高了用户满意度和购买转化率,为公司带来了显著的增长。

这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。

学习资料领取

如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

在这里插入图片描述

部分资料展示

一、 AI大模型学习路线图

整个学习分为7个阶段
在这里插入图片描述

二、AI大模型实战案例

涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
在这里插入图片描述

三、视频和书籍PDF合集

从入门到进阶这里都有,跟着老师学习事半功倍。
在这里插入图片描述

在这里插入图片描述

如果二维码失效,可以点击下方链接,一样的哦
【CSDN大礼包】最新AI大模型资源包,这里全都有!无偿分享!!!

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

219页PDF || 大模型技术引领行业变革:2024大模型典型示范应用案例集(附案例集下载)

大家好,今天给大家分享一本《2024大模型典型示范应用案例集》我已将这本案例集打包好了,包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。 引…

Nacos配置内容加密实现

一,背景 因为项目中安全检查的要求,需要将nacos配置的内容进行加密,所以需要实现将配置内容加密处理,这里引入nacos-aes-encryption-plugin插件来完成这一需求。 二,实现步骤 1, 重新编译nacos服务端 1.1 从githu…

海量数据处理商用短链接生成器平台 - 17

第五十八章 数据可视化ADS层-应用数据服务开发实战 第1集 数据可视化ADS层介绍和微服务整合ClickHouse项目 简介: 数据可视化ADS层介绍和微服务整合ClickHouse项目 数据分层 数据分层分层描述数据生成计算工具存储ODS原生数据,短链访问基本信息Sprin…

计算机的启动过程

通常搜索到的往往是 BIOS 按照“启动顺序”,把控制权转交给排在第一位的存储设备:硬盘。然后在硬盘里寻找主引导记录的分区,这个分区告诉电脑操作系统在哪里,并把操作系统被加载到内存中,然后你就能看到经典的启动界面…

HarmonyOS NEXT - 三方库axios的使用和封装

demo 地址: https://github.com/iotjin/JhHarmonyDemo 代码不定时更新,请前往github查看最新代码 在demo中这些组件和工具类都通过module实现了,具体可以参考HarmonyOS NEXT - 通过 module 模块化引用公共组件和utils HarmonyOS NEXT - 三方库axios的使用…

Matplotlib入门与进阶:数据可视化的强大工具

Matplotlib入门与进阶:数据可视化的强大工具 在当今数据驱动的世界中,数据可视化成为了数据分析的重要一环。数据可视化不仅能够帮助开发者理解和分析数据,还能使数据展示更具说服力。本文将详细介绍Python中的2D绘图库——Matplotlib。通过…

通过共享目录上传后门

本文来自无问社区,更多实战内容可前往查看http://www.wwlib.cn/index.php/artread/artid/13337.html 操作步骤 枚举目标主机开启的共享服务信息:10.0.0.6 smbclient -L //10.0.0.6 -U spotWARNING: The "syslog" option is deprecated Ente…

flink车联网项目前篇:数据开发(第66天)

系列文章目录 03_数据仓库开发 开发规范 1.1 数据库划分规范 1.2 表命名规范 1.3 表字段类型规范开发前准备 3.1 业务系统表 3.2 数据导入 04_维度主题相关表结构 1.1 dim_area - 城市字典表 1.2 dim_car_info - 车辆信息表 1.3 dim_car_vendor - 车队信息表 1.4 dim_date_wo…

虹科技术|优化始于数据:Baby-LIN设备如何高效存储总线数据?

记录汽车总线数据对于监控汽车电子控制单元(ECU)间的通信和诊断网络故障具有重要意义。通过记录测试时的总线数据,不仅可以监控产品是否按照预期运行,还能追踪特定错误或故障背后的原因,这对确保汽车产品质量和性能至关…

MySQL查询居然不区分大小写

MySQL查询居然不区分大小写 事故现场真实原因BINARY 关键字总结MySQL 为什么要这样设计呢?解决方案修改排序规则binary !!!!!懵逼了, MySQL 查询居然不区分大小写,第一次听到这么陌…

实验9 根据材料编程《汇编语言》- 王爽

1. 需求 编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 welcome to masm! 2. 分析 (1)材料中提到,一个在屏幕上显示的字符,具有前景(字符色)和背景(底色)…

[000-01-030].第7节:Zookeeper工作原理

1.Zookeeper工作原理: 1.1.Zookeeper的工作机制 1.Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架;2.Zookeeper负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的…

来了,秋天的第一个POC

立秋就这么水灵灵地过了 又到了“秋天的第一杯奶茶”刷屏的时刻 而我们要追求的是“秋天的第一个POC” 做好变强的准备了吗 Yak POC编写,这一篇就够了 文章中指代的POC仅指使用 Yaklang 编程语言编写的POC 在此篇文章中就详细描述 Yaklang 语法的学习了&#x…

【昱合昇天窗】消防排烟天窗设计使用需注意问题

消防排烟天窗在设计和使用过程中,需要避免出现以下三个问题,以免影响其排烟效果和安全性。1、只关注价格 很多人在选择消防排烟天窗时,只关心天窗的价格,不重视天窗型号、配置选择是否满足厂房需求。这样做的坏处在于安装的天窗可…

还在画恐怖片?局部重绘,艺术再创造 —— Stable diffusion inPainting功能详解与实战指南

前言 在AI绘画的世界里,我们常常面临这样的困境:一幅作品,除了手部姿势、面部表情其他都很完美;这时候,如果要重新生成整幅画,不仅效率低下,而且可能会破坏原本满意的部分。幸好,St…

JAVA毕业设计|(免费)ssm视康眼镜网店销售系统的包含文档代码讲解

收藏点赞不迷路 关注作者有好处 编号:ssm538 ssm视康眼镜网店销售系统的 开发语言:Java 数据库:MySQL 技术:SpringSpringMVCMyBatisVue 工具:IDEA/Ecilpse、Navicat、Maven 文末获取源码 1.系统展示 2.万字文档展示 …

为什么MySql使用B+树

mysql索引为什么选择B树? 在回答这个问题之前,得先了解一个概念,页的概念。页是InnoDB中数据管理的最小单位。当我们查询数据时,其是以页为单位,将磁盘中的数据加载到缓冲池中的。同理,更新数据也是以页为…

数据库实验一 创建数据库

一.实验目的 1.学会数据表的创建; 2.加深对表间关系的理解; 3.理解数据库中数据的简单查询方法和应用。 二. 实验内容 1.题目要求 给定一个实际问题,实际应用问题的模式设计中至少要包括3个基本表。应用问题是供应商给工程供…

被嫌弃的35岁程序员,竟找到了职业的新出路:PMP项目管理

35岁,本应是事业发展的高峰期。更多听到的却是35岁职场天花板,特别是IT从业者,35岁就好像是一道迈不过的坎:多年的工作经验,在35岁的生理年龄面前,一文不值。 IT从业者若想安然度过“35岁危机”&#xff0…

【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出

【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出 文章目录 【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出1.简介2.验证用例3.软件代码4.链接脚本5.编译脚本6.仿真结果6.1 复位结束6.2 运行成功6.3 终端打印 7.总结 1.简介 本文将详细阐述如何利用 printf 来打印字符串…