咱们荣幸地表明整个社区宣布咱们的第一个主要版本Kubeflow 1.0。 Kubeflow于2017年12月在美国Kubecon开源,而且在过去两年中,Kubeflow项目的增加超出了咱们的指望。如今有来自30多个参与组织的数百名贡献者。在1.0版本中,咱们将逐步提供一组稳定的应用程序,这些应用程序是在Kubernetes上有效开发,构建,训练和部署模型所需的。python
Kubeflow的目标是使机器学习(ML)工程师和数据科学家可以轻松地利用云资产(公有云或本地机房)来处理ML工做负载。您能够在任何符合Kubernetes的集群上使用Kubeflow。ios
在1.0版本中,咱们将逐步提供一组稳定的应用程序,这些应用程序是在Kubernetes上有效开发,构建,训练和部署模型所需的。git
毕业应用包括:github
使用Kubeflow 1.0,用户可使用Jupyter开发模型。而后,他们可使用fairing(Kubeflow的python SDK)之类的Kubeflow工具来构建容器,并建立Kubernetes资源来训练他们的模型。一旦有了模型,他们就可使用KFServing建立和部署用于推理的服务器。web
Kubernetes是一个出色的平台,可用于基础架构(不管是在公共云仍是本地),可是部署针对ML优化并与您的云集成的Kubernetes并不是易事。在1.0中,咱们提供了CLI和配置文件,所以您可使用一个命令来部署Kubeflow:docker
kfctl apply -f kfctl_gcp_iap.v1.0.0.yaml kfctl apply -f kfctl_k8s_istio.v1.0.0.yaml kfctl apply -f kfctl_aws_cognito.v1.0.0.yaml kfctl apply -f kfctl_ibm.v1.0.0.yaml
在Kubeflow的用户调查中,数据科学家一直在表达Jupyter notebooks的重要性。此外,他们须要可以将孤立的Jupyter notebooks与Kubernetes on Cloud的效率集成在一块儿,以使用GPU训练更大的模型并并行运行多个实验。 Kubeflow使利用Kubernetes进行资源管理变得容易,并将数据中心的所有功能置于数据科学家的掌握之中。数据库
借助Kubeflow,能够为每一个数据科学家或团队提供各自的命名空间,以在其中运行其工做负载。命名空间提供安全性和资源隔离。使用Kubernetes资源配额,平台管理员能够轻松限制我的或团队能够消耗多少资源,以确保公平的调度。flask
部署Kubeflow以后,用户能够利用Kubeflow的中央仪表板来启动notebooks:bootstrap
在Kubeflow UI中,用户能够经过选择Jupyter的预构建docker镜像之一或输入自定义镜像的URL来轻松启动新notebook。接下来,用户能够设置要链接到notebook的CPU和GPU数量。notebook还能够包含配置和密码参数,以简化对外部存储库和数据库的访问。后端
分布式训练是Google的规范,也是TensorFlow和PyTorch等深度学习框架最使人兴奋和要求最高的功能之一。
当咱们启动Kubeflow时,咱们的主要动机之一就是利用Kubernetes简化分布式训练。 Kubeflow提供Kubernetes自定义资源,这些资源使使用TensorFlow和PyTorch进行分布式训练变得简单。用户须要作的就是定义一个TFJob或PyTorch资源,以下图所示。定制控制器负责扩展和管理全部单个进程,并将它们配置为彼此对话:
apiVersion: kubeflow.org/v1 kind: TFJob metadata: name: mnist-train spec: tfReplicaSpecs: Chief: replicas: 1 spec: containers: image: gcr.io/alice-dev/fairing-job/mnist name: tensorflow Ps: replicas: 1 template: spec: containers: image: gcr.io/alice-dev/fairing-job/mnist name: tensorflow Worker: replicas: 10 spec: containers: image: gcr.io/alice-dev/fairing-job/mnist name: tensorflow
为了训练高质量的模型,数据科学家须要使用Tensorboard之类的工具调试和监控训练过程。使用Kubernetes和Kubeflow,用户能够经过建立以下所示的YAML文件轻松地在他们的Kubernetes集群上部署TensorBoard。在Kubeflow上部署TensorBoard时,用户能够利用Kubeflow的AuthN和AuthZ集成来安全地访问Kubeflow进入公共云后的TensorBoard:
// On GCP: https://${KFNAME}.endpoints.${PROJECT}.cloud.goog/mnist/kubeflow-mnist/tensorboard/ // On AWS: http://8fb34ebe-istiosystem-istio-2af2-925939634.us-west-2.elb.amazonaws.com/mnist/anonymous/tensorboard/
无需使用Kubectl port-forward
转发到各个Pod。
KFServing是基于Knative的自定义资源,用于部署和管理ML模型。 KFServing提供了如下功能:
如下是一个KFServing规范的示例,该示例显示了如何部署模型。用户要作的就是使用storageUri提供其模型文件的URI:
apiVersion: "serving.kubeflow.org/v1alpha2" kind: "InferenceService" metadata: name: "sklearn-iris" spec: default: predictor: sklearn: storageUri: "gs://kfserving-samples/models/sklearn/iris"
查看示例以了解如何使用上述功能。
为了使ML正常工做,您一般须要将该模型整合到应用程序中-不管是Web应用程序,移动应用程序仍是某些后端报告管道的一部分。
诸如flask和bootstrap之类的框架使数据科学家能够轻松地建立丰富的,具备视觉吸引力的Web应用程序,从而使他们的模型可以正常工做。下面是咱们为Kubeflow的mnist示例构建的UI的屏幕截图。
借助Kubeflow,数据科学家无需学习新的概念或平台便可部署其应用程序,也无需处理入口,网络证书等。他们能够像TensorBoard同样部署其应用程序。惟一更改的是Docker镜像和标志。
若是这听起来像您要找的东西,咱们建议:
1.访问咱们的文档,以了解如何在公共或私有云上部署Kubeflow。
2.逐步完成mnist教程,亲自尝试咱们的核心应用程序。
除了咱们在本博文中介绍的内容外,Kubeflow还有不少其余功能。除了此处列出的应用程序,咱们还在开发许多应用程序:
在未来的版本中,咱们会将这些应用程序升级到1.0。