Intel入局大模型,烧钱搜索130亿种网络结构,让LLaMa2瘦身30%
夕小瑶科技说 原创
作者 | 任同学
大语言模型在多个领域大放异彩,但它们的高内存和计算成本限制了广泛使用。神经架构搜索(NAS)能自动找到最优模型架构,减少手动调试,但在大模型上应用NAS仍然面临高成本和庞大搜索空间的挑战。
来自于自英特尔公司的英特尔实验室(Intel Labs)的研究团队提出了一种基于LLaMA2-7B的高效神经架构搜索方法,通过一次性微调和遗传算法搜索来找到更小、更高效的网络架构,而无需从头训练超网络。研究表明,预训练的LLaMA2-7B模型在某些标准基准任务上过于庞大和复杂,该方法减少了1.5倍的模型大小,提高1.3倍的吞吐量,而准确率几乎没有下降。
论文题目:
LLaMA-NAS: Efficient Neural Architecture Search for Large Language Models
论文链接:
http://arxiv.org/abs/2405.18377
论文单位:Intel Labs
方法
为了优化大语言模型,使其能够在不同硬件平台和性能需求下高效运行,本文提出了基于InstaTune方法的高效神经架构搜索(NAS)策略。
InstaTune是该团队之前发表在ICCV2023上的工作,它通过在微调阶段创建超网络,将模型结构设计空间扩展为弹性架构,使其能够适应不同任务、数据集和计算资源。这种方法通过利用现有的模型权重避免了从头训练超网络的高成本。在微调过程中嵌入NAS过程,节省计算资源,并确保所衍生的子网络针对目标任务进行了优化,而非仅针对预训练目标进行优化。
在本文中,预训练的LLaMA2-7B模型使用Alpaca数据集进行微调,创建了超网络和搜索空间。然而,与InstaTune不同的是,由于计算和内存限制,作者并未对LLaMA2-7B进行任何强教师或超网络知识蒸馏。
此外,InstaTune在同一微调迭代中计算超网络和随机抽样子网络的损失,而作者在这个工作中则是交替计算超网络和随机抽样子网络,以缓解内存使用问题。
值得注意的是,该工作中的超网络是基础的LLaMA2-7B模型,没有额外的层或MLP模块中间大小扩展。
继InstaTune方法后,作者采用进化搜索框架在多目标设置下优化架构,兼顾模型大小和目标任务的准确性。具体而言,作者使用了轻量级迭代神经架构搜索(LINAS)算法。LINAS结合了NSGA-II搜索和网络性能预测器,能够高效识别帕累托最优的网络配置。该算法通过对子网络在真实数据上的评估,指导性能预测器的训练,然后利用预测器预测大量子网络的性能,并选择最有前景的子网络进行进一步评估。这个过程在指定的评估轮数内进行。
在使用 InstaTune 对预先训练的 LLaMA2-7B 模型和 Alpaca 数据集进行微调后,作者定义了一组在搜索最佳子网络期间使用的参数值。
搜索空间是通过改变整个网络的层数和每个 MLP 模块的中间大小来创建的。这些参数值如表 1 所示,将用于后文的所有任务,而搜索空间大小约为 。
实验与评估
作者在三个评估任务上进行了实验,包括AI2推理挑战(ARC)、TruthfulQA、WinoGrande。
AI2推理挑战 对于ARC数据集来说,通常分为两个主要部分,即 Easy(5197 个问题)和 Challenge(2590 个问题),其中后者包含需要更复杂推理的问题。这项工作中提出的结果包括 ARC Challenge 和 ARC Easy,分别表示为 ARC-c 和 ARC-e。而任务则是分别在“准确率/模型大小”的目标空间中,找到多个在准确率和模型大小上优于预训练模型的子网络。
在执行搜索后,作者发现了几个子网架构,它们能够提供更高的精度和(或)更小的尺寸。例如,一些子网的 ARC-c 精度高于红点所示的预训练 LLaMA2-7B 网络。在一种情况下,子网的准确率 (45.9%) 与预训练的LLaMA27B网络相同,但小了10%,而另一个具有相同大小的子网的精度则是高了 1.9%。
MMLU任务 作者还使用表1所示的参数,在 MMLU 任务上搜索帕累托最优子网络。在“模型尺寸/MMLU精度”的目标空间中进行搜索。此外,还评估了搜索后发现的帕累托最优子网的吞吐量,以量化推理速度的增益。图 2 显示了 LLaMA27B 在“模型尺寸/MMLU精度”和“吞吐量/MMLU精度”空间中的帕累托前沿。
在帕累托最优子网集中,有几种架构在模型大小和吞吐量方面都具有明显的优势。例如,多个子网的MMLU精度高于红点所示的预训练LLaMA2-7B 网络。在一种情况下,子网比预训练的 LLaMA2-7B 网络的精度高了1.1%,但是体积减小了33%,速度提高了 30%。
TruthfulQA任务 由于使用的 LLAMA2-7B 中的结果不包括 TruthfulQA MC1 任务,因此作者首先使用:
https://huggingface.co/meta-llama/Llama-2-7b
公开的预训练权重计算基线准确性。然后,将本文的方法应用于这项任务,并在“模型大小/TruthfulQA精度”目标空间中进行搜索。经过搜索,预训练的 LLaMA2-7B 网络显然对 TruthfulQA MC1 进行了过度参数化。在图 3 中,发现的许多网络架构的精度明显高于预训练的 LLaMA2-7B 网络,同时体积明显更小。事实上,通过LLAMA-NAS的方法可以找到一种网络架构,它比预训练的 LLaMA2-7B 网络提高了3.6%的准确率,同时模型规模小了约40%。
WinoGrande任务 当将 LLAMA-NAS 应用于WinoGrande 任务时,结果与ARC-c的结果非常相似。图 4 显示了模型尺寸/WinoGrande 空间中的帕累托前沿。
通过搜索发现的几个子网架构,它们比预训练LLaMA2-7B网络具有更高的精度和(或)更小的尺寸。例如,一个子网达到相同的准确率 (69.2%),但比原网络小了 10%,而另一个具有相同大小的子网的精度高了 1.4%。
在应用本文的方法 LLAMA-NAS 找到标准基准的帕累托最优子网后,作者为每个任务选择了几个性能突出的子网络,并在表 2 中总结了它们的标准基准性能。
表 2 中突出显示的网络取自第 4.1 节中的帕累托前沿,并与 LLaMA2-7B 的标准基准性能进行了比较。
与剪枝和稀疏化方法的性能比较
在找到帕累托最优子网络之后,作者选择了一些与剪枝和稀疏化产生的子网络尺寸相同或相似的子网络,并在不同任务上进行了评估。然后在表3和表4中,将它们的标准基准性能与LLM-Pruner 和SliceGPT 进行了比较。在表3中,有些用LLAMA-NAS找到的子网络,在ARC-c和MMLU任务上的准确率比找到的大型子网络要高。出现这种情况的原因是,网络架构中不同中间尺寸的位置可能不会影响模型大小,但会影响准确率。因此,一个较小的子网络可能会因为有更好的中间尺寸选择,而获得较高的准确率。对于LLAMA-NAS找到的尺寸类似的子网络,它们在每个任务上的准确率都高于LLM-Pruner和SliceGPT。即使是SliceGPT网络经过了恢复性微调,而LLAMA-NAS并不需要任何搜索后的微调。
量化对子网络性能的影响
由于找到的子网不包含任何特殊操作或其他修改,因此量化只是使用任意数量的现有技术直接应用量化。为了进一步提高找到的帕累托最优子网的性能,作者应用了INT8量化。首先量化搜索后找到的帕累托最优子网(见图1]到(4),然后在“模型大小/精度”目标空间中重新评估它们。解码器层中的所有线性操作都量化为 INT8,而其余层(例如嵌入)则保留在 FP16 中。图 5 显示了在“模型大小/精度”目标空间中搜索后量化子网之前和之后的帕累托前沿。
将INT8量化应用于帕累托最优子网后,帕累托前沿在目标空间中“左移”。很明显,量化对准确性影响不大,但在缩小模型大小方面提供了很大的好处,能显著减小模型的大小。
这指的是一个非量化的子网络相比原模型在MMLU任务的准确率上有1.1%的提升,并且其模型大小减小了33%。量化后,这个子网络保留了其准确率,但其模型大小进一步减小到了原来的40%。
在ARC-e任务上,量化后的网络比未量化的网络有轻微的准确率提升。对于WinoGrande任务,量化后的子网络分别是原大小的55.6%和50%,并且在减小模型的同时,较小的网络准确率仍然获得了0.2%的提升!
总结与未来展望
本文提出了一种高效的NAS方法,通过一次性微调和遗传算法搜索,成功减少了LLMs的计算复杂性和内存需求,同时保持了高性能。这为在更廉价和易获得的硬件平台上使用LLMs提供了可能性。
微信扫码关注该文公众号作者