通过环境变量配置资源信息
根据模型框架选择对应的指导示例。
TensorFlow
- 下载TensorFlow代码仓中master分支中的“ResNet50_ID0360_for_TensorFlow2.X”作为训练代码,请根据该模型代码TensorFlow版本选择训练镜像中的TensorFlow版本包。
- 管理员用户上传数据集到存储节点。
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/resnet50/imagenet_TF”。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet_TF# pwd
回显示例如下:1
/data/atlas_dls/public/dataset/resnet50/imagenet_TF
- 执行du -sh命令,查看数据集大小。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet_TF# du -sh
回显示例如下:1
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/”目录。
- 将ResNet50_for_TensorFlow_2.6_code文件上传至环境的“/data/atlas_dls/public/code/”路径下。
- 进入“mindxdl-deploy”仓库,根据mindxdl-deploy开源仓版本说明进入版本对应分支。获取“samples/train/basic-training/without-ranktable/tensorflow”目录中的“train_start.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 │ ... │ ... ├── tensorflow │ ├── resnet_ctl_imagenet_main.py │ ├── resnet_model.py │ ├── resnet_runnable.py │ ... │ ... ├── benchmark.sh ├── modelzoo_level.txt ... └── requirements.txt
PyTorch
- 下载PyTorch代码仓中master分支的“ResNet50_ID4149_for_PyTorch”作为训练代码。
- 自行准备ResNet50对应的数据集,使用时请遵守对应规范。
- 管理员用户上传数据集到存储节点。
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/resnet50/imagenet”。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet# pwd
回显示例如下:1
/data/atlas_dls/public/dataset/resnet50/imagenet
- 执行du -sh命令,查看数据集大小。
root@ubuntu:/data/atlas_dls/public/dataset/resnet50/imagenet# du -sh
回显示例如下:1
11G
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/resnet50/imagenet”。
- 将1中下载的训练代码解压到本地,将解压后的训练代码中“ModelZoo-PyTorch/PyTorch/built-in/cv/classification/ResNet50_ID4149_for_PyTorch”目录上传至环境,如“/data/atlas_dls/public/code/”路径下。
- 在“/data/atlas_dls/public/code/ResNet50_ID4149_for_PyTorch”路径下,注释或删除main.py文件中的加粗字段。
def main(): args = parser.parse_args() os.environ['MASTER_ADDR'] = args.addr #os.environ['MASTER_PORT'] = '29501' # 注释或删除该行代码 if os.getenv('ALLOW_FP32', False) and os.getenv('ALLOW_HF32', False): raise RuntimeError('ALLOW_FP32 and ALLOW_HF32 cannot be set at the same time!') elif os.getenv('ALLOW_HF32', False): torch.npu.conv.allow_hf32 = True elif os.getenv('ALLOW_FP32', False): torch.npu.conv.allow_hf32 = False torch.npu.matmul.allow_hf32 = False
- 进入“mindxdl-deploy”仓库,根据mindxdl-deploy开源仓版本说明进入版本对应分支。获取“samples/train/basic-training/without-ranktable/pytorch”目录中的train_start.sh,在“/data/atlas_dls/public/code/ResNet50_ID4149_for_PyTorch/scripts”路径下,构造如下的目录结构。
root@ubuntu:/data/atlas_dls/public/code/ResNet50_ID4149_for_PyTorch/scripts# scripts/ ├── train_start.sh
MindSpore
- 下载MindSpore代码仓中master分支的“ResNet”代码作为训练代码。
- 自行准备ResNet50对应的数据集,使用时请遵守对应规范。
- 管理员用户上传数据集到存储节点。
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/imagenet”。
root@ubuntu:/data/atlas_dls/public/dataset/imagenet# pwd
回显示例如下:1
/data/atlas_dls/public/dataset/imagenet
- 执行du -sh命令,查看数据集大小。
root@ubuntu:/data/atlas_dls/public/dataset/imagenet# du -sh
回显示例如下:1
11G
- 进入“/data/atlas_dls/public”目录,将数据集上传到任意位置,如“/data/atlas_dls/public/dataset/imagenet”。
- 在本地解压1中下载的训练代码,将“models/official/cv/”下的“ResNet”目录重命名为“ResNet50_for_MindSpore_2.0_code”。后续步骤以“ResNet50_for_MindSpore_2.0_code”目录为例。
- 将ResNet50_for_MindSpore_2.0_code文件上传至环境“/data/atlas_dls/public/code/”路径下。
- 进入“mindxdl-deploy”仓库,根据mindxdl-deploy开源仓版本说明进入版本对应分支。获取“samples/train/basic-training/without-ranktable/mindspore”目录中的“train_start.sh”文件,结合训练代码中“scripts”目录,在host上构造如下的目录结构。
root@ubuntu:/data/atlas_dls/public/code/ResNet50_for_MindSpore_2.0_code/scripts/# scripts/ ├── docker_start.sh ├── run_standalone_train_gpu.sh ├── run_standalone_train.sh ... └── train_start.sh
- 进入“/data/atlas_dls/public/code/ResNet50_for_MindSpore_2.0_code/train.py”目录下,修改train.py对应部分,如下所示。
... if config.run_distribute: if target == "Ascend": #device_id = int(os.getenv('DEVICE_ID', '0')) #注释该行代码 #ms.set_context(device_id=device_id) #注释该行代码 ms.set_auto_parallel_context(device_num=config.device_num, parallel_mode=ms.ParallelMode.DATA_PARALLEL, gradients_mean=True) set_algo_parameters(elementwise_op_strategy_follow=True) if config.net_name == "resnet50" or config.net_name == "se-resnet50": if config.boost_mode not in ["O1", "O2"]: ms.set_auto_parallel_context(all_reduce_fusion_config=config.all_reduce_fusion_config) elif config.net_name in ["resnet101", "resnet152"]: ms.set_auto_parallel_context(all_reduce_fusion_config=config.all_reduce_fusion_config) init() # GPU target ...
父主题: 脚本适配