AdaMeZO:以类Adam方式微调LLM,无需在GPU内存中存储动量
AdaMeZO是一种零阶优化器,将Adam算法的优势与MeZO的内存高效性相结合,用于大语言模型微调。仅使用前向传播,相比MeZO减少最多70%的传播次数,同时提升收敛性。
本文由人工智能基于一手来源生成。
研究人员蔡志杰、陈浩龙和朱广旭提出了AdaMeZO,一种零阶优化器,将流行的Adam算法的优势引入大语言模型微调(fine-tuning)——同时不需要在GPU内存中存储动量。
为什么GPU内存是LLM微调的瓶颈?
标准Adam优化器在训练神经网络时,会为每个模型参数追踪两项统计数据:一阶动量(梯度的移动平均)和二阶动量(梯度平方的移动平均)。对于拥有数十亿参数的模型,这会使内存需求增加三倍。MeZO是一种仅使用前向传播、不计算真实梯度的先前方法,解决了内存问题——但由于缺少按参数自适应学习率调整,收敛较慢。
AdaMeZO如何结合两者的优势?
AdaMeZO在不永久存储的情况下估计Adam动量:通过对权重进行随机扰动并测量损失(loss)变化,在每个优化步骤中动态重建自适应动量行为。结果是一个行为类似Adam的优化器——根据估计的损失面几何形状自适应调整学习率——而内存占用与MeZO方法相同。
优化轨迹可视化显示了什么?
作者展示了不同损失面上的优化轨迹可视化,证明AdaMeZO能自适应地导航参数空间的平坦和弯曲区域,而MeZO的行为则更为均匀。在量化方面,AdaMeZO达到相同性能水平所需的前向传播次数最多减少70%,且相比原始MeZO收敛性更好。
常见问题
- 什么是零阶优化器,它有什么用途?
- 零阶优化器(zeroth-order)仅通过前向传播来估计梯度,无需计算真实的反向梯度。这大幅降低了GPU内存需求,因为不需要存储梯度或优化器状态。
- 为什么Adam无法直接替代MeZO中的SGD?
- 直接将Adam应用于MeZO会将内存需求增加三倍,因为Adam需要为每个参数追踪一阶和二阶梯度动量。AdaMeZO通过估计动量而非永久存储来绕过这一问题。
- AdaMeZO比MeZO高效多少?
- AdaMeZO在相同内存效率水平下,相比标准MeZO减少多达70%的前向传播次数,意味着在相同内存限制下更快收敛。