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 方法,我们不仅找到了更小、更高效的网络架构,还比剪枝和稀疏化技术更有效、更高效。而且,我们的方法不需要任何专用的软件内核或硬件,能够与其他量化方法无缝结合。随着对大语言模型的兴趣日益增加,我们的工作为自动创建能够在更便宜、更易获得的硬件平台上运行的网络提供了一条可行的道路。

参考文献

  1. Anthony Sarah, Sharath Nittur Sridhar, Maciej Szankin, Sairam Sundaresan. "LLAMA-NAS: Efficient Neural Architecture Search for Large Language Models."

希望这篇文章能让你对我们的工作有更深入的了解,同时也希望你能像看完这篇文章一样开心。如果你对大语言模型的优化感兴趣,不妨试试我们的 LLAMA-NAS 方法,让你的模型也来次 「瘦身」 吧!

发表评论