云原生生态系统赋能新的开源深度学习框架MindSpore
Hello World, MindSpore
MindSpore是来自华为的一个新的开源深度学习训练/推理框架,可用于移动、边缘和云场景。
https://gitee.com/mindspore/
MindSpore旨在为数据科学家和算法工程师提供友好设计和高效执行的开发经验,为昇腾AI处理器提供原生支持,以及软件硬件协同优化。
与此同时,MindSpore作为一个全球AI开源社区,旨在进一步推动AI软件/硬件应用生态系统的开发和丰富。
当云原生遇到AI新人
MindSpore向最好的学习,也利用云原生生态系统进行部署和管理。随着Kubeflow 1.0和Kubernetes 1.18的最新发布,我们可以试验最新的云原生计算技术来实现敏捷MLOps。
为了利用Kubeflow和Kubernetes的强大功能,我们所做的第一件事就是编写MindSpore的操作器,ms-operator,并定义一个MindSpore CRD。ms-operator的当前版本是基于PyTorch操作器和TF操作器的早期版本。
https://github.com/mindspore-ai/ms-operator
https://github.com/kubeflow/pytorch-operator
https://github.com/kubeflow/tf-operator
ms-operator的实现包含了MSJob自定义资源定义的规范和实现。我们将演示如何使用MindSpore 0.1.0-alpha镜像,生成一个ms-operator映像,在kubernetes上创建一个简单的msjob。整个MindSpore社区仍然致力于在不同的后端实现分布式训练,这样用户就可以像Kubernetes上的其他内置资源一样在不久的将来创建和管理msjob。
提交给Kubernetes API的MindSpore CRD看起来是这样的:
apiVersion: "kubeflow.org/v1"
kind: "MSJob"
metadata:
name: "msjob-mnist"
spec:
backend: "tcp"
masterPort: "23456"
replicaSpecs:
- replicas: 1
replicaType: MASTER
template:
spec:
containers:
- image: leonwanghui/mindspore-cpu:0.1.0-alpha
imagePullPolicy: IfNotPresent
name: msjob-mnist
command: ["/bin/bash", "-c", "python /tmp/test/MNIST/main.py"]
volumeMounts:
- name: training-result
mountPath: /tmp/result
- name: ms-mnist-local-file
mountPath: /tmp/test
restartPolicy: OnFailure
volumes:
- name: training-result
emptyDir: {}
- name: entrypoint
configMap:
name: dist-train
defaultMode: 0755
restartPolicy: OnFailure
- replicas: 3
replicaType: WORKER
template:
spec:
containers:
- image: leonwanghui/mindspore-cpu:0.1.0-alpha
imagePullPolicy: IfNotPresent
name: msjob-mnist
command: ["/bin/bash", "-c", "python /tmp/test/MNIST/main.py"]
volumeMounts:
- name: training-result
mountPath: /tmp/result
- name: ms-mnist-local-file
hostPath:
path: /root/gopath/src/gitee.com/mindspore/ms-operator/examples
restartPolicy: OnFailure
volumes:
- name: training-result
emptyDir: {}
- name: entrypoint
configMap:
name: dist-train
defaultMode: 0755
restartPolicy: OnFailure
MSJob目前是基于TF Job和PyTorch Job设计的,在未来的版本中可能会有变化。
“Backend”定义了MS worker在初始化worker组时用于通信的协议。MindSpore支持异构计算,包括多个硬件后端(CPU、GPU、昇腾等),MindSpore的device_target默认为昇腾。
MindSpore社区正在推动与Kubeflow社区的协作,并使ms-operator更加复杂、组织良好和保持最新。所有这些组件都使得机器学习工程师和数据科学家能够很容易地利用云资产(公有的或内部的)来完成机器学习工作负载。
治理也很重要
MindSpore不仅受益于原生云的技术生态系统,还建立了模仿Kubernetes的社区治理模式。MindSpore借鉴了技术指导委员会(TSC)、特殊兴趣小组(SIG)和工作小组(WG)等概念,以实现开放和高效的社区治理。第一届的TSC成员由来自各个大学、机构和创业公司的专家组成。
https://www.mindspore.cn/community
期待
MindSpore也期待着让用户能够使用Jupyter来开发模型。未来的用户可以使用Kubeflow工具,如fairing(Kubeflow python SDK)来构建容器,并创建Kubernetes资源来训练他们的MindSpore模型。
当训练完成,用户可以使用KFServing来创建和部署服务器进行推理,从而完成机器学习的生命周期。
https://github.com/kubeflow/kfserving
分布式训练是MindSpore关注的另一个领域。目前主要有两种分布式训练策略:一种基于参数服务器,另一种基于集合通信基本功能,如allreduce。MPI操作器是Kubeflow的核心组件之一,它使Kubernetes上的同步化、全约式分布式训练变得容易。MPI操作器提供了一个CRD,用于在单个CPU/GPU、多个CPU/GPU和多个节点上定义一个训练作业。它还实现了一个自定义控制器来管理CRD、创建依赖资源并协调所需的状态。如果MindSpore能够利用MPI操作器和高性能的昇腾AI处理器,那么MindSpore就有可能将分布式训练提升到更高的水平。
https://github.com/kubeflow/mpi-operator
点击【阅读原文】阅读英文原文。
扫描二维码联系我们!
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。