DLRover
DLRover makes the distributed training of large AI models easy, stable, fast and green. It can automatically train the Deep Learning model on the distributed cluster. It helps model developers to focus on model arichtecture, without taking care of any engineering stuff, say, hardware acceleration, distributed running, etc. Now, it provides automated operation and maintenance for deep learning training jobs on K8s/Ray.
蚂蚁开源的(大模型)分布式训练框架|系统;在k8s上实现模型训练的故障恢复、节点状态检测、弹性调度、Async Flash checkpoint 等功能,“实现PyTorch分布式训练的自动容错和弹性”。
- 出现故障后,快速执行节点健康检测,定位故障机并将其隔离,然后重启 Pod 来替换故障节点
- 健康检测通过后,重启训练子进程来自动恢复模型训练,无需重启作业或者所有 Pod
- 节点故障导致可用机器少于作业配置,自动缩容来继续训练。集群新增机器后,自动扩容来恢复节点数量
- 优化 FSDP 并行训练的模型 save/load,支持根据实际卡数 reshard 模型参数,缩短 checkpoint 保存和加载时间
从这里可以看出,DLRover和蚂蚁内部的ElasticDL 关系甚大,极有可能是ElasticDL的升级、扩展后“改头换面”。
当然具体实现功能如何,经过实测,后文会有补充说明。
本地&GPU 部署
创建K8S集群
准备一个K8S集群,node 全部ready,最好去掉污点。
MAC OS
可以使用minikube ,不过不推荐!
建议本地安装Docker+K8S;这方面文章很多就不赘述了。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane - v1.28.2
GPU 节点
一般选择containerd+kubeadm+kubelet;
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 Ready <none> - v1.28.2
node2 Ready <none> - v1.28.2
node3 Ready <none> - v1.28.2
node4 Ready <none> - v1.28.2
安装Elastic JOB
安装Elasticjob 需要非常小心,坑不少。
git clone dlrover 代码
git clone git@github.com:intelligent-machine-learning/dlrover.git
install CRDs
这里有些许不同,注意本地MAC OS与GPU节点的差异;
本地MAC OS由于存储空间有限,训练测试任务比较简单,能使用DLRover即可;而生产环境或者GPU集群中,往往是复杂、大规模的分布式训练,功能作用的不同导致在CRDs的安装、Docker Image 等都有些许区别,请往下看:
本地
仅安装基础CRDs&#