断点续训特性是基于MindCluster集群调度组件的高阶特性,结合昇腾软硬件全栈实现训练故障恢复,使用断点续训特性前需要满足以下前置条件。
MindCluster集群调度组件是基于K8s生态的功能组件,因此训练任务调度基于K8s平台时才支持使用断点续训。断点续训支持的K8s版本与MindCluster集群调度组件一致,当前为1.17.x~1.28.x(推荐使用1.19.x及以上版本)。
以下配置为万卡集群的推荐配置,实际配置时,请根据集群的规模进行调整。
配置项 |
说明 |
推荐配置 |
参考文件路径 |
---|---|---|---|
修改API Server 启动参数 |
--max-request-inflight和--max-mutating-requests-inflight参数表示在给定时间内限制并行处理读写请求的最大数量限制。 若配置过低会出现请求超限错误,若配置过高会出现占用过多内存。 |
--max-request-inflight=20000 --max-mutating-requests-inflight =2000 |
/etc/kubernetes/manifests/kube-apiserver.yaml |
--watch-cache和--watch-cache-sizes参数表示API Server的缓存量大小。 API Server获取etcd对象时,会优先访问本地cache,当cache中没有需要的信息时再访问etcd,并将etcd数据存入cache。若cache达到上限则覆盖cache,配置合理的cache大小可以提升etcd获取效率。 |
--watch-cache=true --watch-cache-sizes=node#1000,pod#2000,event#200,namespace#100,service#200 |
/etc/kubernetes/manifests/kube-apiserver.yaml |
|
修改API Server资源配置 |
API Server配置的CPU资源将影响API Server的处理能力。 |
API Server request的CPU资源上限调整为35核。 resources: requests: cpu: 35000m 说明:
API Server整体的CPU占用率不受此参数限制。 |
/etc/kubernetes/manifests/kube-apiserver.yaml |
修改etcd启动参数 |
--quota-backend-bytes参数为etcd的存储上限,默认为2G。 |
修改为8G。 --quota-backend-bytes=8589934590 |
/etc/kubernetes/manifests/etcd.yaml |
--auto-compaction-retention:进行自动压缩,降低资源占用。 |
进行碎片整理,降低资源占用。 --auto-compaction-retention 说明:
--auto-compaction-retention不会实际释放空间,需要用户手动配合使用etcdctl compact和etcd defrag清理空间。 |
||
修改etcd资源配置 |
etcd配置的CPU和内存资源将影响etcd的处理能力。 |
etcd request的CPU资源上限调整为20核,memory资源上限调整为10G。 resources: requests: cpu: 20000m memory: 10000Mi |
/etc/kubernetes/manifests/etcd.yaml |
修改Volcano资源配置 |
Volcano配置的CPU和内存资源将影响Volcano的处理能力。 |
Volcano request的CPU资源上限调整为20核,memory资源上限调整为8G。 resources: requests: cpu: 20000m memory: 4Gi |
参考配置命令:
kubectl edit deployment -n volcano-system volcano-scheduler |
断点续训特性的部分流程依赖读取存储数据,如加载CKPT、拉起训练和编译缓存加载等,存储性能会影响断点续训整体恢复时间。为避免训练恢复时间劣化,建议进行存储性能配置优化,以下提供的推荐配置以万卡规模集群为例。