问题记录及解决
1、使用ddp训练,生成标签的cache报错,等待时间过长。
方法:先使用dp训练,生成标签的cache,停掉再使用ddp方式训练。
2、
[E ProcessGroupNCC
L.cpp:828] [Rank 6] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=438621, OpType=BROADCAST, Timeout(ms)=1800000) ran for 1806330 milliseconds before timing out.
[E ProcessGroupNCCL.cpp:828] [Rank 4] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=438621, OpType=BROADCAST, Timeout(ms)=1800000) ran for 180633
7 milliseconds before timing out.
参考:https://stackoverflow.com/questions/69693950/error-some-nccl-operations-have-failed-or-timed-out
修改:
# dist.init_process_group(backend='nccl' if dist.is_nccl_available() else 'gloo')
torch.distributed.init_process_group(backend='nccl', timeout=datetime.timedelta(seconds=36000))
速度优化
参考:https://blog.csdn.net/weixin_41012399/article/details/133307450?spm=1001.2014.3001.5501
300万张提前resize好的图片,训练11个小时/epoch
方法一:开启图片缓存失败,机器的系统内存256G,图片占用内存500G左右,不够用,但是这里显示需要3T,不知道为什么。
方法二:查看内存和gpu使用情况。
htop
nvidia-smi
显存和cpu使用率都不高,参考:https://blog.csdn.net/flamebox/article/details/123011129
修改workers和batchsize,提高cpu和gpu使用率。
目前的workers是8,bs是32.
修改workers=16,bs=32.提高cpu使用率,但是会使用更多的内存,需要关注系统内存使用情况,目前是167G/252G。查看cpu使用情况,以及训练速度。
修改workers=12,bs=64,提高gpu使用率。查看gpu使用情况,以及训练速度。