新建AITraining任务
更新时间:2024-06-18
您可以新建一个AITraining类型的任务。AITrainingJob是一种优化的AI训练作业任务,在算力浪费、资源供给、容错与弹性调度上进行了优化改进。
前提条件
- 您已成功安装CCE AI Job Scheduler和CCE Deep Learning Frameworks Operator组件,否则云原生AI功能将无法使用。
- 若您是子用户,队列关联的用户中有您才能使用该队列新建任务。
- 安装组件CCE Deep Learning Frameworks Operator时,系统安装了Pytorch深度学习框架。
操作步骤
- 登录百度智能云官网,并进入管理控制台。
- 选择“产品服务 > 云原生 > 容器引擎 CCE”,单击进入容器引擎管理控制台。
- 单击左侧导航栏中的集群管理 > 集群列表。
- 在集群列表页面中,单击目标集群名称进入集群管理页面。
- 在集群管理页面单击云原生AI > 任务管理。
- 在任务管理页面单击新建任务。
- 在新建任务页面中,完成任务基本信息配置:
- 任务名称:自定义任务名称,支持大小写字母、数字、以及-_ /.特殊字符,必须以中文或字母开头,长度 1-65。
- 命名空间:选择新建任务所在的命名空间。
- 选择队列:选择新建任务关联的队列。
- 任务优先级:选择任务对应的任务优先级。
- 允许超发:允许超发将使用任务抢占超发功能,需要先安装CCE AI Job Scheduler组件并升级到1.4.0及以上版本。
- 延迟容忍:系统将优先把任务或工作负载调度到集群碎片资源,以提高集群资源利用率,但可能对业务延迟行能造成影响。
- 完成代码基本信息配置:
- 代码配置类型:指定代码配置方式,目前支持“BOS文件”、“本地文件上传”与“暂不配置”。
-
执行命令:指定代码的执行命令。
9.完成数据相关信息配置:
-
设置数据源:当前支持数据集、持久卷声明、选择临时路径和选择主机路径。选择数据集时列出所有可用的数据集,选择后会同时选择与数据集同名的持久卷声明;使用持久卷声明时直接选择即可。
10.点击“下一步”,进入容器相关配置。
11.完成任务类型相关信息配置:
- 选择框架:选择“ AITrainingJob ”,同时指定训练机制,目前可以选择“horovod”或“paddle”。
- 训练方式:指定训练方式为“单机”或“分布式”。
-
选择角色:训练方式为“单机”时,只能选择“Trainer”;训练方式为“分布式”时,可额外选择“Launcher”,同时需要指定pod的弹性范围。
12.完成容器组相关信息配置,可以根据需要同时进行高级设置。
- 期望Pod数:指定容器组的Pod数目。
- 重启策略:指定容器组的重启策略,可选择的策略有“失败重启”或“从不重启”。
- 镜像地址:指定容器的镜像拉取地址,也可以直接点击“选择镜像”,选择需要使用的镜像。
- 镜像版本:指定镜像的版本,若不指定默认拉取latest版。
-
容器配额:指定容器的CPU、内存、GPU资源相关信息。
13.完成任务高级信息相关配置。
- 最大训练时长:指定允许的最大训练时长,若不指定,则为不限制时间。
- 私有仓库凭证:若需要使用私有镜像仓库,请在此处添加对应镜像仓库的访问凭证。
- Tensorboard:若需要任务可视化时,可开启Tensorboard功能,开启后需要指定“服务类型”与“ 训练日志读取路径”。
- K8S标签:指定任务对应的K8S Label。
- 注释:指定任务对应的Annotation。
- 点击“完成”按钮,完成任务的新建。
Yaml创建任务示例
apiVersion: kongming.cce.baiudbce.com/v1
kind: AITrainingJob
metadata:
name: job-horovod-test
namespace: default
spec:
# 任务结束时,pod的清理策略,All表示所有pod,none表示不清理
cleanPodPolicy: All
# 完成策略,All表示所有pod完成即任务完成,Any表示任何pod完成即任务完成
completePolicy: Any
# 失败策略,All表示所有pod失败即任务失败,Any表示任何pod完成即任务完成
failPolicy: Any
# 支持horovod与paddle框架
frameworkType: horovod
# 弹性选项,true表示开启弹性,false不开启,开启时需开启trainer容器的容错选项
faultTolerant: true
plugin:
ssh:
- ""
discovery:
- ""
priority: normal
replicaSpecs:
launcher:
completePolicy: Any
failPolicy: Any
maxReplicas: 1
minReplicas: 1
replicaType: master
replicas: 1
restartLimit: 100
restartPolicy: OnNodeFailWithExitCode
restartTimeLimit: 60
restartTimeout: 864000
template:
metadata:
creationTimestamp: null
spec:
initContainers:
- args:
- --barrier_roles=trainer
- --incluster
- --name=$(TRAININGJOB_NAME)
- --namespace=$(TRAININGJOB_NAMESPACE)
image: registry.baidubce.com/cce-plugin-dev/jobbarrier:v0.9
imagePullPolicy: IfNotPresent
name: job-barrier
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: "1"
memory: 1Gi
restartPolicy: Never
schedulerName: volcano
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
securityContext: {}
containers:
- command:
- /bin/bash
- -c
- horovodrun -np 3 --min-np=1 --max-np=5 --verbose --log-level=DEBUG --host-discovery-script /etc/edl/discover_hosts.sh python /horovod/examples/elastic/pytorch/pytorch_synthetic_benchmark_elastic.py
env:
image: registry.baidubce.com/cce-plugin-dev/horovod:v0.1.0
imagePullPolicy: Always
name: aitj-0
resources:
securityContext:
capabilities:
add:
- SYS_ADMIN
volumeMounts:
- mountPath: /dev/shm
name: cache-volume
dnsPolicy: ClusterFirstWithHostNet
terminationGracePeriodSeconds: 30
volumes:
- emptyDir:
medium: Memory
sizeLimit: 1449Gi
name: cache-volume
trainer:
completePolicy: None
failPolicy: None
# 容错配置,控制器将会以下面的配置作为容错判断条件进行容错
faultTolerantPolicy:
# 程序退出码
- exitCodes: 129,10001,127,137,143,129
restartPolicy: ExitCode
restartScope: Pod
# 集群异常事件
- exceptionalEvent: "nodeNotReady,PodForceDeleted"
restartPolicy: OnNodeFail
restartScope: Pod
# 开启弹性的最大副本数
maxReplicas: 5
# 开启弹性的最小副本数
minReplicas: 1
replicaType: worker
replicas: 3
restartLimit: 100
restartPolicy: OnNodeFailWithExitCode
restartTimeLimit: 60
restartTimeout: 864000
template:
metadata:
creationTimestamp: null
spec:
containers:
- command:
- /bin/bash
- -c
- /usr/sbin/sshd && sleep 40000
image: registry.baidubce.com/cce-plugin-dev/horovod:v0.1.0
imagePullPolicy: Always
name: aitj-0
resources:
# limit与request需保持一致
limits:
baidu/gpu_p40_8: "1"
requests:
baidu/gpu_p40_8: "1"
securityContext:
capabilities:
add:
- SYS_ADMIN
volumeMounts:
- mountPath: /dev/shm
name: cache-volume
dnsPolicy: ClusterFirstWithHostNet
terminationGracePeriodSeconds: 300
volumes:
- emptyDir:
medium: Memory
sizeLimit: 1449Gi
name: cache-volume
schedulerName: volcano