Open ccssu opened 1 year ago
我认为需要确认两个问题:
从2卡到8卡学习率是不是应该调整一下,乘以4?应该有个公式计算的
我认为需要确认两个问题:
- pytorch在这种情况是否也有严重的精度下降问题?
- 打开sync-bn的话我们是否还存在精度严重下降问题?
使用ultralytics/yolov5最新的main分支代码。
配置:
启动指令:
python -m torch.distributed.run --nproc_per_node 8 train.py --data data/coco.yaml --weights ' ' --cfg yolov5s.yaml --batch 512 --epochs 300
使用one-yolov5最新main分支代码
配置:
sync-bn = True
启动指令:
python -m oneflow.distributed.launch --nproc_per_node 8 train.py --data data/coco.yaml --weights ' ' --cfg models/yolov5n.yaml --batch 512 --sync-bn
从2卡到8卡学习率是不是应该调整一下,乘以4?应该有个公式计算的
我觉得可以先确认一下这个问题 @ccssu
从2卡到8卡学习率是不是应该调整一下,乘以4?应该有个公式计算的
我觉得可以先确认一下这个问题 @ccssu
@Ldpe2G 德澎哥 请问下我调整学习率只要将 lrf
, lr0
乘4就行了吗
请问下我调整学习率只要将
lrf
,lr0
乘4就行了吗
官方文档有没有讲8卡训练要做哪些修改,还有就是确认下晓雨说的,代码中有没有根据卡数自动修改 lr
请问下我调整学习率只要将
lrf
,lr0
乘4就行了吗官方文档有没有讲8卡训练要做哪些修改,还有就是确认下晓雨说的,代码中有没有根据卡数自动修改 lr
- ultralytics/yolov5官方文档没有讲8卡训练要做哪些修改,官方介绍如下:
已和晓雨确认,ultralytics/yolov5 代码中有没有根据卡数自动修改 lr
修改 lrf , lr0 乘4 mAP@.5:.95 更低 数据如下:
epoch | batch | gpu | lr0 | lrf | mAP@.5 | mAP@.5:.95 | |
---|---|---|---|---|---|---|---|
对照实验 | 53 | 512 | 8 | 0.01 | 0.01 | 37.813 | 21.698 |
本次实验 | 53 | 512 | 8 | 0.04 | 0.04 | 31.869 | 17.304 |
本次-对照 | 53 | -5.944000000000005 | -4.394000000000001 |
图中画红框的为本次实验数据曲线.
注意:
python -m oneflow.distributed.launch --nproc_per_node 8 train.py --data data/coco.yaml --weights ' ' --cfg models/yolov5n.yaml --batch 512
更多数据 hyp.txt opt.txt results.csv
可以再跑两组实验,4卡 和 6卡都分别跑下,看下精度怎样,学习率就保持和2卡一样的就行了
增加 batch_size ,在300个epoch训练下,mAP_0.5:0.95 精度值下降了
2.4750000000000014
。数据表如下所示:
趋势图:
注意:
实验01
启动指令python -m oneflow.distributed.launch --nproc_per_node 8 train.py --data data/coco.yaml --weights ' ' --cfg models/yolov5n.yaml --batch 256
实验02
启动指令python -m oneflow.distributed.launch --nproc_per_node 8 train.py --data data/coco.yaml --weights ' ' --cfg models/yolov5n.yaml --batch 512
复现实验数据
recurrence_batch_have_an_impact_on_mAP
实验01
启动指令python -m oneflow.distributed.launch --nproc_per_node 8 train.py --data data/coco.yaml --weights ' ' --cfg models/yolov5n.yaml --batch 256
实验02
启动指令python -m oneflow.distributed.launch --nproc_per_node 8 train.py --data data/coco.yaml --weights ' ' --cfg models/yolov5n.yaml --batch 512
实验环境