准备模型脚本
根据模型框架选择对应示例。
TensorFlow
- 下载TensorFlow代码仓中master分支中的“ResNet50_ID0360_for_TensorFlow2.X”作为训练代码。
- 管理员用户上传数据集到存储节点。
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/resnet50/imagenet_TF”。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet_TF# pwd /data/atlas_dls/public/dataset/resnet50/imagenet_TF
- 执行du -sh命令,查看数据集大小。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet_TF# du -sh 42G
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/resnet50/imagenet_TF”。
- 在本地解压1中下载的训练代码,将“ModelZoo-TensorFlow-master/TensorFlow2/built-in/cv/image_classification/”下的“ResNet50_ID0360_for_TensorFlow2.X”目录重命名为“ResNet50_for_TensorFlow_2.6_code/”目录。
- 进入“MindXDL-deploy”仓库,选择“3.0.0”分支。获取“samples/train”目录中的“train_start.sh”、“rank_table.sh”和“utils.sh”文件,结合3中的“ResNet50_for_TensorFlow_2.6_code”目录,在host的“/data/atlas_dls/public/code”路径下,构造如下的目录结构。
/data/atlas_dls/public/code/ResNet50_for_TensorFlow_2.6_code/ ├── scripts │ ├── train_start.sh │ ├── utils.sh │ ├── rank_table.sh │ ... │ ... ├── tensorflow │ ├── resnet_ctl_imagenet_main.py │ ├── resnet_model.py │ ├── resnet_runnable.py │ ... │ ... ├── benchmark.sh ├── modelzoo_level.txt ... └── requirements.txt
- 进入“/data/atlas_dls/public/code/ResNet50_for_TensorFlow_2.6_code/tensorflow/”目录,修改”resnet_ctl_imagenet_main.py”文件的对应部分,如下所示。
... import json import npu_device import os # 添加此行 flags.DEFINE_boolean(name='use_tf_function', default=True, ... ... checkpoint_manager = tf.train.CheckpointManager( runnable.checkpoint, directory=flags_obj.model_dir+"/tf-checkpoint/ckpt-"+os.getenv("RANK_ID"), # 修改该行 max_to_keep=10, step_counter=runnable.global_step, checkpoint_interval=checkpoint_interval) ...
Pytorch
- 下载PyTorch代码仓中master分支的“ResNet50_for_PyTorch”作为训练代码。
- 自行准备ResNet-50对应的数据集,使用时请遵守对应规范。
- 管理员用户上传数据集到存储节点。
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/resnet50/imagenet”。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet# pwd /data/atlas_dls/public/dataset/resnet50/imagenet
- 执行du -sh命令,查看数据集大小。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet# du -sh 11G
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/resnet50/imagenet”。
- 将1中下载的训练代码解压到本地,将解压后的训练代码中“ModelZoo-PyTorch/PyTorch/built-in/cv/classification/ResNet50_for_PyTorch”目录重命名为“ResNet50_for_PyTorch_1.5_code/”目录。
- 进入“MindXDL-deploy”仓库,选择“3.0.0”分支。获取“samples/train”目录中的“train_start.sh”、“rank_table.sh”和“utils.sh”文件,结合4中的“ResNet50_for_PyTorch_1.5_code”目录,在host的“/data/atlas_dls/public/code”路径下,构造如下的目录结构。
root@ubuntu:/data/atlas_dls/public/code/ResNet50_for_PyTorch_1.5_code/# ResNet50_for_PyTorch_1.5_code/ ├── DistributedResnet50 ├── infer ├── test ├── ... ├── Dockerfile ├── eval.sh ├── python2onx.py ├── pytorch_resnet50_apex.py └── scripts ├── train_start.sh ├── utils.sh └── rank_table.sh
- (可选)进入“/data/atlas_dls/public/code/ResNet50_for_PyTorch_1.5_code/scripts/”目录,修改“train_start.sh”文件,如下所示,如已修改则跳过该步骤。
... if [ "${framework}" == "PyTorch" ]; then get_env_for_pytorch_multi_node_job ${DLS_PROGRAM_EXECUTOR} ${boot_file_path}${boot_file} ${train_param} --addr=${MASTER_ADDR} --world-size=${WORLD_SIZE} --rank=${RANK} && tee ${log_url} # 修改此行 check_return_code if [[ $@ =~ need_freeze ]]; then ${DLS_PROGRAM_EXECUTOR} ${boot_file_path}${freeze_cmd} --addr=${MASTER_ADDR} --world-size=${WORLD_SIZE} --rank=${RANK} && tee ${log_url} check_return_code fi ...
MindSpore
- 下载MindSpore代码仓中r1.9分支的“resnet”代码作为训练代码。
- 自行准备ResNet-50对应的数据集,使用时请遵守对应规范。
- 管理员用户上传数据集到存储节点。
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/imagenet”。
root@ubuntu:/data/atlas_dls/public/dataset/imagenet# pwd /data/atlas_dls/public/dataset/imagenet
- 执行du -sh命令,查看数据集大小。
root@ubuntu:/data/atlas_dls/public/dataset/imagenet# du -sh 11G
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/imagenet”。
- 在本地解压1中下载的训练代码,将“models-r1.9/models-r1.9/official/cv/”下的“resnet”目录重命名为“ResNet50_for_MindSpore_1.9_code”。后续步骤以“ResNet50_for_MindSpore_1.9_code”目录为例。
- 进入“MindXDL-deploy”仓库,选择“3.0.0”分支。获取“samples/train”目录中的“train_start.sh”、“utils.sh”和“rank_table.sh”文件,结合训练代码中“scripts”目录,在host上构造成如下的目录结构。
root@ubuntu:/data/atlas_dls/public/code/ResNet50_for_MindSpore_1.9_code/scripts/# scripts/ ├── docker_start.sh ├── run_standalone_train_gpu.sh ├── run_standalone_train.sh ... ├── rank_table.sh ├── utils.sh └── train_start.sh
父主题: 训练任务