[PaddlePaddle/PaddleOCR]训练DBNet,使用det_mv3_db.yml GPU利用率波动

2024-05-13 166 views
0

请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem

  • 系统环境/System Environment:ubuntu 18
  • 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:paddle 2.4.1
  • 运行指令/Command Code:python3 -m paddle.distributed.launch --log_dir=./log/ --gpus '2,5,6,7' tools/train.py -c configs/det/det_mv3_db.yml
  • 完整报错/Complete Error Message:

我们提供了AceIssueSolver来帮助你解答问题,你是否想要它来解答(请填写yes/no)?/We provide AceIssueSolver to solve issues, do you want it? (Please write yes/no):

请尽量不要包含图片在问题中/Please try to not include the image in the issue. image

回答

4

如图中的profile所示,每隔几个step就会出现了一个明显空隙

5

部分定位到原因了,关闭blanceloss后正常了,感觉需要看一下那个blanceloss的实现是否真的需要做排序,另外这个排序在出现空隙的时侯是否真的正确运行在gpu上,感觉像是dispatch了一个cpu算子...(但是为什么前面几个setp是正常的)。

1

image 新的问题,a100*8 运行会出现一个很长的dataloader,增大num_worker没有缓解 @tink2123 Helpppppppp!

6

补充:前面一个空隙在每卡batchsize>=8的时候会出现,batchsize=4的时候就消失了,但是这时候GPU利用率上不去

8

尝试了将数据全部提前预处理并存储到列表中,但并没有缓解这个问题。

0

已解决,dataloader在每个epoch前会重新初始化,绕过初始化后正常。

4

部分定位到原因了,关闭blanceloss后正常了,感觉需要看一下那个blanceloss的实现是否真的需要做排序,另外这个排序在出现空隙的时侯是否真的正确运行在gpu上,感觉像是dispatch了一个cpu算子...(但是为什么前面几个setp是正常的)。

balance loss设置为false后能满足精度要求吗?

7

部分定位到原因了,关闭blanceloss后正常了,感觉需要看一下那个blanceloss的实现是否真的需要做排序,另外这个排序在出现空隙的时侯是否真的正确运行在gpu上,感觉像是dispatch了一个cpu算子...(但是为什么前面几个setp是正常的)。

balance loss设置为false后能满足精度要求吗?

可以收敛到hmean>70,我看新的配置貌似也没有加入balanceloss

4

部分定位到原因了,关闭blanceloss后正常了,感觉需要看一下那个blanceloss的实现是否真的需要做排序,另外这个排序在出现空隙的时侯是否真的正确运行在gpu上,感觉像是dispatch了一个cpu算子...(但是为什么前面几个setp是正常的)。

balance loss设置为false后能满足精度要求吗?

可以收敛到hmean>70,我看新的配置貌似也没有加入balanceloss

哦哦,好的

3

性能吗?单卡/小batch貌似没有很大波动,因为一个epoch的时间还是相对比较长的,所以dataloder的准备时间相对并不是很长。加速比没仔细对比过,但应该没什么大问题。

5

性能吗?单卡/小batch貌似没有很大波动,因为一个epoch的时间还是相对比较长的,所以dataloder的准备时间相对并不是很长。加速比没仔细对比过,但应该没什么大问题。

  1. 我这边测试v100,batch_size=32,单卡波动较大,你这边测试单卡小batch,小batch是指多少呢?
  2. 我测试v100,8卡,线性加速比只有3左右,不知道你这边8卡到多少?或者4卡能到多少?