FlagEmbedding icon indicating copy to clipboard operation
FlagEmbedding copied to clipboard

关于微调所占用GPU内存的问题

Open GavinYang1113 opened this issue 2 years ago • 6 comments

您好,请问微调过程中是哪些因素占用了大量GPU内存?明明模型参数和输入的批数据都不大。

GavinYang1113 avatar Nov 14 '23 07:11 GavinYang1113

max_length, train_group_size, 以及batch size。如果占用过多,可以参考https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/finetune#3-train 开启deepspeed和gradient

staoxiao avatar Nov 14 '23 07:11 staoxiao

请问能具体介绍下训练过程中哪些变量会占用较多内存吗?在测试中,我发现程序在后向传播会出现OOM。

GavinYang1113 avatar Nov 14 '23 10:11 GavinYang1113

请问batch size大小会对微调模型的performance有影响吗?在数据量为5W左右时,batch size取多少合适?

GavinYang1113 avatar Nov 14 '23 12:11 GavinYang1113

请问能具体介绍下训练过程中哪些变量会占用较多内存吗?在测试中,我发现程序在后向传播会出现OOM。

主要是模型的中间结果,使用gradient checkpointing能大幅降低显存

staoxiao avatar Nov 14 '23 18:11 staoxiao

请问batch size大小会对微调模型的performance有影响吗?在数据量为5W左右时,batch size取多少合适?

会有一定的影响。在使用难负样本的情况下,建议总的batch size可以开到128, 256的样子。

staoxiao avatar Nov 14 '23 18:11 staoxiao

请问能具体介绍下训练过程中哪些变量会占用较多内存吗?在测试中,我发现程序在后向传播会出现OOM。

主要是模型的中间结果,使用gradient checkpointing能大幅降低显存

对于中间结果占用大量内存这一点,请问能提供论文或其它资料吗?我很想知道具体原因

GavinYang1113 avatar Nov 25 '23 07:11 GavinYang1113

请问能具体介绍下训练过程中哪些变量会占用较多内存吗?在测试中,我发现程序在后向传播会出现OOM。

主要是模型的中间结果,使用gradient checkpointing能大幅降低显存

对于中间结果占用大量内存这一点,请问能提供论文或其它资料吗?我很想知道具体原因

可参考DeepSpeed或者Megatron的论文,激活值显存。可以用激活值重计算解决

kisseternity avatar Apr 11 '24 09:04 kisseternity

想请教一下,为何开启DeepSpeed之后没有显存上的节省,ZeRO1/2/3都没有效果,是因为模型本身原因不支持吗?但是ZeRO1/2应该只有优化器和梯度相关

kisseternity avatar Apr 11 '24 09:04 kisseternity

想请教一下,为何开启DeepSpeed之后没有显存上的节省,ZeRO1/2/3都没有效果,是因为模型本身原因不支持吗?但是ZeRO1/2应该只有优化器和梯度相关

支持的。可以确认一下是否真开启了DeepSpeed,ZeRO2目前是无法使用的 。另外,优化器所占空间不大,所以可能节省不太明显。

staoxiao avatar Apr 11 '24 13:04 staoxiao