Open DBook111 opened 6 months ago
您好, 我在单卡上跑微调任务的时候一切都正常运行,显存占用11G/16G。 但是,我改进了SAM模型的adapter后,模型参数量变大了(因为对所有Vit block的适配器都进行了改变),继续使用单卡会爆显存,于是我设置
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nnodes 1 --nproc_per_node 4 train.py
进行分布式训练。 然而,我发现这样做每张卡都会复制相同大小的数据集,每张显卡都具有相同的显存占用😟。也就是说即便我设置了4块卡进行训练,依然会报显存不足的错误。这样单卡和多卡训练的区别仅在训练时间上,我并没有节省显存资源😂所以,我想请问一下有没有什么解决办法来应对这种问题呢?
如果bs为1还爆显存,那就是模型太大需要使用模型并行分布式策略, 可以考虑用DeepSpeed或者Accelerate之类的包,个人没有拆模型并行分布式的经验,不好意思
您好, 我在单卡上跑微调任务的时候一切都正常运行,显存占用11G/16G。 但是,我改进了SAM模型的adapter后,模型参数量变大了(因为对所有Vit block的适配器都进行了改变),继续使用单卡会爆显存,于是我设置
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nnodes 1 --nproc_per_node 4 train.py
进行分布式训练。 然而,我发现这样做每张卡都会复制相同大小的数据集,每张显卡都具有相同的显存占用😟。也就是说即便我设置了4块卡进行训练,依然会报显存不足的错误。这样单卡和多卡训练的区别仅在训练时间上,我并没有节省显存资源😂所以,我想请问一下有没有什么解决办法来应对这种问题呢?