LLAMA-NAS:让大语言模型不再“吃硬件” 2024-05-29 作者 C3P00 前言 如果你觉得大语言模型(LLMs)像个贪吃的巨兽,那你就猜对了。这些能处理自然语言、复杂推理、情感分析等任务的模型,虽然能力非凡,但对内存和计算资源的“胃口”也惊人。以至于大部分硬件平台根本承受不起这顿“大餐”。为了让LLMs变得更“苗条”,我们提出了一种基于LLaMA2-7B的高效神经架构搜索方法——LLAMA-NAS。 LLaMA2-7B的“减肥”计划 一次性NAS:给模型做个“全身检查” 我们的方法核心是一次性神经架构搜索(one-shot NAS),这个听起来就很酷对吧?具体来说,我们只对LLaMA2-7B模型进行一次微调,然后用遗传算法(genetic algorithm)来搜索更小、更高效的网络架构。结果显示,对于某些标准基准任务,预训练的LLaMA2-7B模型不仅“体型”庞大,而且“吃”得也多。通过我们的“减肥”计划,我们成功地将模型大小减少了1.5倍,处理速度提高了1.3倍,而准确度几乎没有损失。 InstaTune:超级网络的“变形金刚” 我们借鉴了InstaTune的方法,将NAS嵌入到微调阶段,使模型架构更具弹性,能够适应不同的任务、数据集和计算资源。在这过程中,我们并没有进行强教师或超级网络的知识蒸馏,主要是为了节省计算资源。 搜索空间:模型参数的“百变金刚” 在搜索过程中,我们使用了LINAS算法,这个名字听起来像某种神秘的武器。事实上,它确实很厉害,能够在多目标设置中优化模型大小和准确性。我们定义了一组允许的参数值,搜索空间包含了大约1.3 × 10^10种可能性。 实验与结果 AI2推理挑战 首先,我们将方法应用于AI2推理挑战(ARC)任务,结果显示几个子网络架构在准确率和模型大小上都有明显提升。例如,一个子网络在准确率不变的情况下,模型大小减少了1.1倍。 大规模多任务语言理解 我们的方法在大规模多任务语言理解(MMLU)任务上也表现出色。多个子网络在准确率提升的同时,模型大小减少了1.5倍,处理速度提高了1.3倍。 真诚QA和WinoGrande 在真诚QA任务中,我们发现预训练的LLaMA2-7B模型明显过度参数化。通过我们的方法,找到的子网络在准确率提高3.6%的同时,模型大小减少了1.6倍。WinoGrande任务的结果也类似,我们的子网络在准确率不变的情况下,模型大小减少了1.1倍。 比较与对比 与剪枝和稀疏化技术的对比 与LLM-Pruner和SliceGPT相比,我们的方法不仅在模型大小和准确率上更有优势,而且不需要额外的恢复微调步骤。 量化:让模型“瘦上加瘦” 我们还将INT8量化应用于搜索到的子网络,结果显示,量化后的子网络在准确率几乎不变的情况下,模型大小进一步减少。例如,一个子网络在量化后大小减少了2.5倍,准确率几乎没有损失。 结论 通过我们的LLAMA-NAS方法,我们不仅找到了更小、更高效的网络架构,还比剪枝和稀疏化技术更有效、更高效。而且,我们的方法不需要任何专用的软件内核或硬件,能够与其他量化方法无缝结合。随着对大语言模型的兴趣日益增加,我们的工作为自动创建能够在更便宜、更易获得的硬件平台上运行的网络提供了一条可行的道路。 参考文献 Anthony Sarah, Sharath Nittur Sridhar, Maciej Szankin, Sairam Sundaresan. “LLAMA-NAS: Efficient Neural Architecture Search for Large Language Models.” 希望这篇文章能让你对我们的工作有更深入的了解,同时也希望你能像看完这篇文章一样开心。如果你对大语言模型的优化感兴趣,不妨试试我们的LLAMA-NAS方法,让你的模型也来次“瘦身”吧!
前言
如果你觉得大语言模型(LLMs)像个贪吃的巨兽,那你就猜对了。这些能处理自然语言、复杂推理、情感分析等任务的模型,虽然能力非凡,但对内存和计算资源的“胃口”也惊人。以至于大部分硬件平台根本承受不起这顿“大餐”。为了让LLMs变得更“苗条”,我们提出了一种基于LLaMA2-7B的高效神经架构搜索方法——LLAMA-NAS。
LLaMA2-7B的“减肥”计划
一次性NAS:给模型做个“全身检查”
我们的方法核心是一次性神经架构搜索(one-shot NAS),这个听起来就很酷对吧?具体来说,我们只对LLaMA2-7B模型进行一次微调,然后用遗传算法(genetic algorithm)来搜索更小、更高效的网络架构。结果显示,对于某些标准基准任务,预训练的LLaMA2-7B模型不仅“体型”庞大,而且“吃”得也多。通过我们的“减肥”计划,我们成功地将模型大小减少了1.5倍,处理速度提高了1.3倍,而准确度几乎没有损失。
InstaTune:超级网络的“变形金刚”
我们借鉴了InstaTune的方法,将NAS嵌入到微调阶段,使模型架构更具弹性,能够适应不同的任务、数据集和计算资源。在这过程中,我们并没有进行强教师或超级网络的知识蒸馏,主要是为了节省计算资源。
搜索空间:模型参数的“百变金刚”
在搜索过程中,我们使用了LINAS算法,这个名字听起来像某种神秘的武器。事实上,它确实很厉害,能够在多目标设置中优化模型大小和准确性。我们定义了一组允许的参数值,搜索空间包含了大约1.3 × 10^10种可能性。
实验与结果
AI2推理挑战
首先,我们将方法应用于AI2推理挑战(ARC)任务,结果显示几个子网络架构在准确率和模型大小上都有明显提升。例如,一个子网络在准确率不变的情况下,模型大小减少了1.1倍。
大规模多任务语言理解
我们的方法在大规模多任务语言理解(MMLU)任务上也表现出色。多个子网络在准确率提升的同时,模型大小减少了1.5倍,处理速度提高了1.3倍。
真诚QA和WinoGrande
在真诚QA任务中,我们发现预训练的LLaMA2-7B模型明显过度参数化。通过我们的方法,找到的子网络在准确率提高3.6%的同时,模型大小减少了1.6倍。WinoGrande任务的结果也类似,我们的子网络在准确率不变的情况下,模型大小减少了1.1倍。
比较与对比
与剪枝和稀疏化技术的对比
与LLM-Pruner和SliceGPT相比,我们的方法不仅在模型大小和准确率上更有优势,而且不需要额外的恢复微调步骤。
量化:让模型“瘦上加瘦”
我们还将INT8量化应用于搜索到的子网络,结果显示,量化后的子网络在准确率几乎不变的情况下,模型大小进一步减少。例如,一个子网络在量化后大小减少了2.5倍,准确率几乎没有损失。
结论
通过我们的LLAMA-NAS方法,我们不仅找到了更小、更高效的网络架构,还比剪枝和稀疏化技术更有效、更高效。而且,我们的方法不需要任何专用的软件内核或硬件,能够与其他量化方法无缝结合。随着对大语言模型的兴趣日益增加,我们的工作为自动创建能够在更便宜、更易获得的硬件平台上运行的网络提供了一条可行的道路。
参考文献
希望这篇文章能让你对我们的工作有更深入的了解,同时也希望你能像看完这篇文章一样开心。如果你对大语言模型的优化感兴趣,不妨试试我们的LLAMA-NAS方法,让你的模型也来次“瘦身”吧!