Zhao J., Zhang Z., Chen B., Wang Z., Anandkumar A. and Tian Y. GaLore: Memory-efficient llm training by gradient low-rank projection. ICML, 2024.
概
本文提出了一种优化器中高效的缓存策略.
符号说明
- Wt∈Rm×n, 参数;
- φt, 损失函数;
- Gt=−∇Wφt(Wt)∈Rm×n;
GaLore
-
一般的优化器更新可以归结为:
Wt+1=Wt−η~Gt,
其中 ~Gt=ρt 是对梯度 Gt 进行的一个处理, 在 Adam 中涉及两种动量:
Mt=β1Mt−1+(1−β1)Gt,Vt=β2Vt−1+(1−β2)G2t,ρt(Gt)=Mt/√Vt+ϵ.
-
像 Adam 这种带 momentum 的, 我们需要缓存 2x 模型大小的量用于更新, 这是非常恐怖的消耗.

-
作者通过理论分析发现, Gt 随着梯度更新会逐渐趋于低秩, 本文建议一种 gradient low-rank projection (GaLore) 的方式更新:
Wt+1=Wt−η~Gt,~Gt=Ptρt(PTtGtQt)QTt,
其中 Pt∈Rm×r,Qt∈Rn×r,r≪m,n.
-
即 梯度转移到低秩空间 -> 在低秩空间中完成 ρt -> 恢复到原空间. 于是在整个训练过程中, 我们只需要缓存这些投影矩阵即可. 如下是 Adam 的一个例子 (只用了一半的投影):

-
收敛性是容易理解的, 每一步更新都相当于:
φt(^Wt),^Wt=stop-gradient(Wt)+P~WtQT,~Wt∈Rr×r.
-
则
∇~Wtφt=PTGtQ,
此时便有:
^Wt+1=^Wt+PΔ~WQT=^Wt−ηPρt(PTGtQ)QT.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2022-08-27 DropEdge: Towards Deep Graph Convolutional Networks on Node Classification