Closed wbfor closed 3 years ago
可以发一下你的 config.yaml 文件吗? 我用64的batchsize,syncBN,效果和单卡是一致的
可以发一下你的 config.yaml 文件吗? 我用64的batchsize,syncBN,效果和单卡是一致的
谢谢你的分享,关注你半年了,真的太强了 请问backbone 和 head都设置为syncBN吗? 冻结层只是在前2000 iter冻结骨干网络? 谢谢
是的,就是按照单卡的config,把bn换成syncbn,效果应该和单卡差不多
可以发一下你的 config.yaml 文件吗? 我用64的batchsize,syncBN,效果和单卡是一致的
我的config设置是: BASE: "../Base-MGN.yml"
MODEL: BACKBONE: PRETRAIN_PATH: "/home/wbfor/pretrained/ibn/r50_ibn_a.pth" WITH_IBN: True NORM: 'syncBN' HEADS: NUM_CLASSES: 751 NORM: 'syncBN'
DATASETS: NAMES: ("Market1501",) TESTS: ("Market1501",)
OUTPUT_DIR: "logs/market/mgn_R50-ibn" 然后用单卡和双卡分别训练对比如下: 蓝色是双卡的loss,橙色是单卡的loss 单卡最终结果是: 双卡最终结果是: 之前还跑过三卡和其他多卡的结果确实是变差,不过结果没有截图,能帮忙分析下是什么原因吗,谢谢
你的 cls_layer
用的是 linear
吗?可以放一个完整的 config.yaml
,这个可以再你的 OUPUT_DIR
里面找到。
你的
cls_layer
用的是linear
吗?可以放一个完整的config.yaml
,这个可以再你的OUPUT_DIR
里面找到。cls_layer使用的是circle
CUDNN_BENCHMARK: true DATALOADER: NUM_INSTANCE: 16 NUM_WORKERS: 16 PK_SAMPLER: true DATASETS: COMBINEALL: false NAMES:
you help me find a bug, there is a single-GPU BN in mgn pool_reduce
I think this is exactly the reason why the multi-GPU training performance is lower than sinlge-GPU training.
I have fixed it.
thank u!
you help me find a bug, there is a single-GPU BN in
mgn pool_reduce
I think this is exactly the reason why the multi-GPU training performance is lower than sinlge-GPU training.
I have fixed it.
sbs_R101-ibn.yml这个的多卡训练效果也会变差(没有改动任何配置)。精度先是升高然后不断降低。
还有想问一下:您之前修正的 mgn pool_reduce
bug更新到github里了吗
you help me find a bug, there is a single-GPU BN in
mgn pool_reduce
https://github.com/JDAI-CV/fast-reid/blob/94d85fe11cde1d972cbd16b4c3d5cd91c54c74cb/fastreid/modeling/meta_arch/mgn.py#L108I think this is exactly the reason why the multi-GPU training performance is lower than sinlge-GPU training. I have fixed it.
sbs_R101-ibn.yml这个的多卡训练效果也会变差(没有改动任何配置)。精度先是升高然后不断降低。 还有想问一下:您之前修正的
mgn pool_reduce
bug更新到github里了吗 另外还想问一下:训练 sbs_R101-ibn (resnet101_ibn_a.pth)的模型里是否使用了随机擦除?
@finger-monkey 如果多卡的话,你要用 syncBN
才行,不能用默认配置,默认配置都是在单卡上跑的。
BTW, 那个 bug 已经 fix 了。
拉取了最新的代码,在bagtricks设置下,Baseline,market1501数据集,分别在一块gpu,和两块gpu(使用syncBN)跑了实验,
两卡设置的是syncBN,性能还是明显对不上,请问还有哪里设置需要修改么,谢谢
现在多卡使用的是 DDP
的方式,因为多卡之间的通讯机制以及跨卡梯度无法传递的问题,triplet loss 确实存在掉点,这个问题还没有很好的解决方法。我们目前采用的是 memory bank 的方式来解决大规模 DDP
训练。
现在多卡使用的是
DDP
的方式,因为多卡之间的通讯机制以及跨卡梯度无法传递的问题,triplet loss 确实存在掉点,这个问题还没有很好的解决方法。我们目前采用的是 memory bank 的方式来解决大规模DDP
训练。
请问最新的多卡分布式训练解决掉点问题了吗?
请问最新的多卡分布式训练解决掉点问题了吗?
应该几乎不掉点了,you can try it by yourself.
现在多卡使用的是
DDP
的方式,因为多卡之间的通讯机制以及跨卡梯度无法传递的问题,triplet loss 确实存在掉点,这个问题还没有很好的解决方法。我们目前采用的是 memory bank 的方式来解决大规模DDP
训练。请问最新的多卡分布式训练解决掉点问题了吗?
请问最新的多卡分布式训练解决掉点问题了吗?
应该几乎不掉点了,you can try it by yourself.
请问使用memory bank 的方式来解决大规模 DDP 训练,相关代码在哪个位置?
我在训练mgn网络时发现,相同超参下如果使用多卡训练,loss的下降速度明显变慢,最终效果会差比较多,考虑到可能是bn的问题,如果把backbone和heads中的bn换为syncBN也没有改善这个问题,请问有什么好的办法或经验使用多卡训练吗,谢谢