Oneflow-Inc / libai

LiBai(李白): A Toolbox for Large-Scale Distributed Parallel Training
https://libai.readthedocs.io
Apache License 2.0
390 stars 55 forks source link

Adpter finetune #528

Closed xiezipeng-ML closed 10 months ago

xiezipeng-ML commented 11 months ago

显存占用情况

llama 7b

1. full finetune

levi131 commented 10 months ago

(1)应该用的都是混合精度训练吧。(2)llama 7b模型并行每张卡上模型大概0.875B,占用显存24G / 0.875 = 27.4,比这个(https://zhuanlan.zhihu.com/p/624740065) 知乎上分析的模型参数、后向传递计算得到的梯度、优化器状态三部分20倍,前向计算过程中产生的中间激活在bs=1时0.75倍略大一些,不过还算合理。(3)流水并行的时候显存占用更小一些,记得分离编译也是更适合流水并行。(4)adapter finetune这里显存降低了一半,不太清楚这个是偶发现象还是有特定规律的。

xiezipeng-ML commented 10 months ago

(1)应该用的都是混合精度训练吧。(2)llama 7b模型并行每张卡上模型大概0.875B,占用显存24G / 0.875 = 27.4,比这个(https://zhuanlan.zhihu.com/p/624740065) 知乎上分析的模型参数、后向传递计算得到的梯度、优化器状态三部分20倍,前向计算过程中产生的中间激活在bs=1时0.75倍略大一些,不过还算合理。(3)流水并行的时候显存占用更小一些,记得分离编译也是更适合流水并行。(4)adapter finetune这里显存降低了一半,不太清楚这个是偶发现象还是有特定规律的。

(1)都是混合精度。 (2)知乎这个看起来不包含数据的显存。 (3)纯pipeline并行显存占用更少。 (4)adapter这里是有规律的: