TencentARC / LLaMA-Pro

[ACL 2024] Progressive LLaMA with Block Expansion.
https://tencentarc.github.io/LLaMA-Pro/
Apache License 2.0
482 stars 35 forks source link

请教下训练的显存需求 #20

Open denghj3 opened 8 months ago

denghj3 commented 8 months ago

想请教下,llama-pro训练的显存需求是多少,和lora比要多多少

hills-code commented 8 months ago

这取决于您添加的层数,以及训练的设置,根据我的经验8卡A100-40G是能够支持ctx-length=4096的预训练的,我试过将LoRA的rank调大到1024,使得lora和我们可训练的参数量相近,此时显存占用也是差不多的

denghj3 commented 8 months ago

这取决于您添加的层数,以及训练的设置,根据我的经验8卡A100-40G是能够支持ctx-length=4096的预训练的,我试过将LoRA的rank调大到1024,使得lora和我们可训练的参数量相近,此时显存占用也是差不多的

噢我理解是llama-pro在预训练时仅需调整新加的block,所以应该远小于全参数训练所需的显存?

hills-code commented 8 months ago

是的,但是如果新增加的要训练的层很多,同样也会带来很大的显存占用,并且训练的时候其实原有模型的参数也需要load进去,尽管不需要微调

denghj3 commented 8 months ago

是的,但是如果新增加的要训练的层很多,同样也会带来很大的显存占用,并且训练的时候其实原有模型的参数也需要load进去,尽管不需要微调

噢噢。感谢回答!~

tammypi commented 1 month ago

是的,但是如果新增加的要训练的层很多,同样也会带来很大的显存占用,并且训练的时候其实原有模型的参数也需要load进去,尽管不需要微调

请问为什么14B模型,可以在L20 40G 2的机器上使用lora进行预训练,但是改为LLAMA_PRO之后,在A800 80G 3的机器上,会显存溢出? 只有把层数改为1,才可以在A800 80 * 3的机器上训练,占用显存大概170G+。如果是14B模型,扩展的层数为1的话,是可以的吗?会对于效果产生影响吗?

tammypi commented 1 month ago

好像从图里看,添加几个块之间的差距并不大。 1