普林斯顿大学的研究人员推出了MeZO:一种内存高效的零阶优化器,可以对大型语言模型(LLMs)进行微调
Princeton researchers launch MeZO, a memory-efficient zeroth-order optimizer for fine-tuning large language models (LLMs).
大型语言模型在过去几个月中以生成式人工智能的巨大成功快速发展。这些模型为一些令人瞩目的经济和社会转型做出了贡献,其中最好的例子就是由OpenAI开发的著名ChatGPT,自发布以来就拥有数百万用户,并且数量呈指数增长。这个基于自然语言处理(NLP)和自然语言理解(NLU)的聊天机器人允许用户生成像人类一样有意义的文本。它能有意义地回答问题,总结长段落,完成代码和电子邮件等任务。其他的LLM,如PaLM、Chinchilla、BERT等,在人工智能领域也表现出了出色的性能。
微调预训练的语言模型是许多与语言相关的任务的常用方法。微调允许这些模型适应专业领域,融入人类指令,并满足个体偏好。基本上,它使用一个较小且领域特定的数据集来调整已经训练好的LLM的参数。随着语言模型的参数越来越多,微调在计算梯度期间变得计算密集和内存密集。由于涉及缓存激活、梯度和梯度历史的存储,内存使用量显著高于推理所需的内存。
最近,普林斯顿大学的一支研究团队提出了解决内存问题的方法。被称为MeZO的内存高效零阶优化器,这是传统ZO-SGD方法的改进版本,它仅使用损失值的差异估计梯度,并在原地操作,使得可以使用与推理相同的内存占用来微调语言模型。研究团队在MeZO中专注于零阶方法,因为ZO方法可以仅使用两个正向传递来估计梯度,从而使其在内存使用方面更高效。
MeZO算法特别设计用于优化具有数十亿参数的大型语言模型。团队提到的一些主要贡献包括:
- 通过修改ZO-SGD方法和一些变体,开发了MeZO以在任意大小的模型上原地运行,几乎没有任何内存开销。
- MeZO已经证明与PEFT和综合参数调整(如LoRA和前缀调整)兼容。
- MeZO可以提高非可微目标(如准确率或F1得分),同时仍然利用与推理相同数量的内存。
- 充分的预训练确保MeZO的每步优化速率和全局收敛速率取决于特定的条件数,即有效的局部秩,而不是大量参数。这与先前的ZO下界相反,先前的下界暗示收敛速率可能根据参数的数量变慢。
- 实验表明,在各种模型类型(如掩码LM和自回归LM)以及分类、多项选择和生成等下游任务上,该模型从350M扩展到66B。
- 在实验中,MeZO在测试中表现优于零-shot、ICL和线性探测,并且在11个测试中与OPT-13B相比,甚至比RoBERTa-large或普通微调消耗约12倍的内存表现更好或相似。
经过评估,MeZO能够使用单个Nvidia A100 80GB GPU训练一个300亿参数的模型,而反向传播只能在相同的内存限制下训练一个27亿参数的LM。总之,MeZO是一种内存高效的零阶优化器,可以有效地微调大型语言模型。