首先要熟悉平台的开发流程(debug、train、test)
https://git.openi.org.cn/zeizei/OpenI_Learning
https://git.openi.org.cn/OpenIOSSG
比赛过程
官方pytorch版本代码:
https://github.com/microsoft/Swin-Transformer/blob/main/models/swin_transformer_v2.py
参考mindspore版本代码:
https://git.openi.org.cn/a-861414389/Swin_v2;
https://gitee.com/mindspore/models/tree/r1.6/research/cv/swin_transformer
最终训练:
Swin-B 跑32卡NPU并行(4节点,每节点8卡),训练时长90h左右(当时资源回收影响,手动kill)
涨点关键:
- 参考官方pytorch版本代码对齐mindspore版本代码实现
- 不同机器设置的随机种子设计成固定(train.py)
- 采用混合精度策略amp_level为02(train.py)
- 参数配置至关重要!参考官方(如window大小设置为16)和 调参经验(如考虑时间问题,训练轮数不足官方给出的300,更少的epoch数目,需要更大的base_lr),具体查看swinv2_base_patch4_window16_256.yaml
其他:
- 其他配置,为了更方便的控制训练和查看结果
- 注意openi平台与后端obs存储的数据交换(train.py、eval.py)
运行方法
调试:
镜像:tensorflow1.15-mindspore1.7.0-cann5.1.0-euler2.8-aarch64
数据集不能太大,选择imagenet small或tiny版本
debug过程设置run_modelarts=False,运行脚本在./scripts/里,具体运行看README_CN.md,其中RANK_TABLE_FILE在该环境下直接用/user/config/nbstart_hccl.json;
训练:
镜像:MindSpore-1.6.1-python3.7-aarch64
数据集:imagenet-1K
train过程设置run_modelarts=True,目前args.py
配置可直接运行
启动文件train.py
即可,选择4节点,每节点8卡
测试:
镜像:MindSpore-1.7-c81-python3.7-euleros2.8-aarch64
数据集:imagenet-1K
test过程设置run_modelarts=True,目前args.py配置可直接运行
往模型
中导入训练好的模型,开启推理任务,选择相应的模型,启动文件eval.py
即可,选择单节点1卡
注意:
数据读写要使用绝对路径!结果要上传到指定的obs路!debug模式可以直接查看当前全路径,train和test模式可先获取当前目录,然后拼接成全路径