请根据使用须知里的介绍根据实际情况选择合适的yaml。
yaml示例为使用NFS的场景,NFS需要安装在存储节点,安装操作请参见安装NFS。
任务类型 |
硬件型号 |
训练框架 |
yaml文件 |
获取yaml |
说明 |
---|---|---|---|---|---|
AscendJob |
Atlas 800 训练服务器 |
Tensorflow |
tensorflow_multinodes_acjob.yaml |
根据所使用的框架类型,获取yaml |
示例默认为双机8卡任务。 |
Pytorch |
pytorch_multinodes_acjob.yaml |
||||
MindSpore |
mindspore_multinodes_acjob.yaml |
||||
Tensorflow |
tensorflow_standalone_acjob.yaml |
示例默认为单机单卡任务。 |
|||
Pytorch |
pytorch_standalone_acjob.yaml |
||||
MindSpore |
mindspore_standalone_acjob.yaml |
参数 |
取值 |
说明 |
---|---|---|
framework |
|
框架类型,目前只支持三种。 |
schedulerName |
默认值为“volcano”,用户需根据自身情况填写 |
Ascend Operator启用“gang”调度时所选择的调度器。 |
minAvailable |
默认值为任务总副本数 |
Ascend Operator启用“gang”调度生效时,任务运行最少副本数。 |
queue |
默认值为“default”,用户需根据自身情况填写 |
Ascend Operator启用“gang”调度生效时,任务所属队列。 |
successPolicy(可选) |
|
表明任务成功的前提。空值代表只需要一个Pod成功,整个任务判定为成功。取值为“AllWorkers”表示所有Pod都成功,任务才判定为成功代表。 |
container.name |
ascend |
训练容器的名称必须是“ascend”。 |
ports(可选) |
若用户未进行设置,系统默认填写以下参数:
|
分布式训练集合通讯端口。“name”取值只能为“ascendjob-port”,“containerPort”用户可根据实际情况设置,若未进行设置则采用默认端口2222。 |
replicas |
|
分布式任务时woker中N为节点个数。 |
image |
- |
训练镜像名称,请根据实际修改。 |
host-arch |
Arm环境:huawei-arm x86_64环境:huawei-x86 |
需要运行训练任务的节点架构,请根据实际修改。 分布式任务中,请确保运行训练任务的节点架构相同。 |
accelerator-type |
Atlas 800 训练服务器(NPU满配):module Atlas 800 训练服务器(NPU半配):half 服务器(插Atlas 300T 训练卡):card |
根据需要运行训练任务的节点类型,选取不同的值。(可选)如果节点是Atlas 800 训练服务器(NPU满配),可以省略该标签。 |
huawei.com/Ascend910 |
Atlas 800 训练服务器(NPU满配):
Atlas 800 训练服务器(NPU半配):
服务器(插Atlas 300T 训练卡):
|
请求的NPU数量,请根据实际修改。 |
huawei.com/Ascend910-Y |
取值为1 |
请求的vNPU数量,其中Y值和vNPU类型相关。 |
... Worker: replicas: 2 # N节点分布式场景为N,且requests字段的NPU的数目为8 template: metadata: ... resources: requests: huawei.com/Ascend910: 8 # 需要的NPU芯片个数为8。可在下方添加行,配置memory、cpu等资源 limits: huawei.com/Ascend910: 8 # 目前需要和上面requests保持一致 ...
... resources: requests: huawei.com/Ascend910: 8 cpu: 100m # means 100 milliCPU.For example 100m CPU, 100 milliCPU, and 0.1 CPU are all the same memory: 100Gi # means 100*230 bytes of memory limits: huawei.com/Ascend910: 8 cpu: 100m memory: 100Gi ...
... affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: job-name #固定字段 operator: In #固定字段 values: - default-test-mindspore # 需要和任务名一致 - key: replica-type # 固定字段 operator: In # 固定字段 values: - worker # 固定字段 topologyKey: kubernetes.io/hostname ...
TensorFlow、PyTorch、MindSpore框架中对应的Chief、Master、Scheduler的“replicas”字段不能超过1。单机任务时,TensorFlow、PyTorch框架不需要Worker。单卡任务时,MindSpore框架不需要Scheduler。
从昇腾镜像仓库拉取的基础镜像中不包含训练脚本、代码等文件,训练时通常使用挂载的方式将训练脚本、代码等文件映射到容器内挂载的方式将训练脚本、代码等文件映射到容器内。
volumeMounts: - name: code mountPath: /job/code/ # 容器中训练脚本路径 - name: data mountPath: /job/data # 容器中训练数据集路径 - name: output mountPath: /job/output # 容器中训练输出路径
... command: - "/bin/bash" - "-c" - "cd /job/code/ResNet50_for_TensorFlow_2.6_code/scripts/; chmod +x train_start.sh; bash train_start.sh /job/code/ResNet50_for_TensorFlow_2.6_code/ /job/output/ tensorflow/resnet_ctl_imagenet_main.py --data_dir=/job/data/resnet50/imagenet_TF/ --distribution_strategy=one_device --use_tf_while_loop=true --epochs_between_evals=1 --skip_eval --enable_checkpoint_and_export "# 此处省略部分参数 ...
... command: - "/bin/bash" - "-c" - "cd /job/code/ResNet50_for_PyTorch_1.8_code/scripts;chmod +x train_start.sh;bash train_start.sh /job/code/ResNet50_for_PyTorch_1.8_code /job/code/ResNet50_for_PyTorch_1.8_code/output/ DistributedResnet50/main_apex_d76_npu.py --data=/job/data/resnet50/imagenet --seed=49 --workers=128 --learning-rate=1.6 --warmup=8 --label-smoothing=0.1 --mom=0.9 --weight-decay=1.0e-04 --static-loss-scale=128 --print-freq=1 --dist-url='tcp://127.0.0.1:50000' --dist-backend='hccl' --epoch=90 --batch-size=256 --save_ckpt_path=/job/code/ResNet50_for_PyTorch_1.8_code/output/;"# 此处省略部分参数 ...
... command: - "/bin/bash" - "-c" - "cd /job/code/ResNet50_for_MindSpore_2.0_code/scripts; chmod +x train_start.sh; bash train_start.sh /job/code/ResNet50_for_MindSpore_2.0_code/ /job/code/ResNet50_for_MindSpore_2.0_code/output train.py --data_path=/job/data/resnet50/imagenet/train --config=/job/code/ResNet50_for_MindSpore_2.0_code/config/resnet50_imagenet2012_config.yaml"# 此处省略部分参数 ...
... volumeMounts: - name: code mountPath: /job/code/ # 容器中训练脚本路径 - name: data mountPath: /job/data # 容器中训练数据集路径 - name: output mountPath: /job/output # 容器中训练输出路径 ... volumes: ... - name: code nfs: server: 127.0.0.1 # NFS服务器IP地址。 path: "xxxxxx" # 配置训练脚本路径 - name: data nfs: server: 127.0.0.1 path: "xxxxxx" # 配置训练集路径 - name: output nfs: server: 127.0.0.1 path: "xxxxxx" # 设置脚本相关配置模型保存路径 ...