开源软件创新大赛Paddle性能优化 赛题9
本文参考:https://hackmd.io/@4wbe4ERfQYOfZ6CegqwhzQ/HJxZHIfo2
特别感谢:婷姐、son师傅、张师傅
学习资料
汪汪队任务 【开源软件创新大赛题目9】https://github.com/PaddlePaddle/Paddle/issues/55663#paddlepaddle09
- tracking issue https://github.com/PaddlePaddle/Paddle/issues/55907
包含模型瓶颈的辨别方法和基本分析思路及对应的工具。
-
Paddle的性能调优:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/performance_improving/index_cn.html
-
Paddle Profiler:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/performance_improving/profiling_model.html
-
timeline分析工具:https://github.com/Xreki/PaPerf
【Paddle的性能优化wiki】https://github.com/PaddlePaddle/Paddle/wiki/Performance-Optimization-in-PaddlePaddle
【算子优化RFC】https://github.com/PaddlePaddle/community/tree/master/rfcs/OPs-Perf
提示
1、修改的原则是没改变模型结构,不影响训练精度指
2、对于dataloader的参数配置,可以调,但是调之前应该问一个问题,有没有必要调,模型现在读数据的过程是它的训练瓶颈吗?如果是,应该调什么参数会加快数据的读取
3、分析方法:分析一下它训练时间的构成,有几大部分,占比如何?去分析每一个过程是不是有瓶颈,借助Profile和nsight 工具分析,找到优化动机,解决对性能影响最大的那些问题,才有可能提升速度。
4、想单独生成timeline就给这个改成True:(参考paddle性能优化工具文档)
性能分析会影响timeline的生成,就是性能分析也会占一些时间,所以单独要timeline的时候还是给这个设置为True比较好。
如果要产出timeline,记得设置timer_only=True,目前是Paddle的Profiler和nsys的封装这两个工具没有做好统一,所以同时启用分析会有问题。暂时的方案就是使用某一个工具,就先把另一个注释掉。或者要用nsys,就把Paddle Profiler设置为timer_only=True也行。
python tools/train.py -c configs/mask_rcnn/mask_rcnn_r50_1x_coco.yml -o LearningRate.base_lr=0.0001 log_iter=1 use_gpu=True save_dir=./test_tipc/output/mask_rcnn_r50_1x_coco/benchmark_train/norm_train_gpus_0_autocast_fp32 epoch=1 pretrain_weights=https://paddledet.bj.bcebos.com/models/mask_rcnn_r50_1x_coco.pdparams TrainReader.batch_size=2 filename=mask_rcnn_r50_1x_coco TrainReader.shuffle=False --enable_ce=True > profier.txt