Kubeflow 1.0:适合全部人的云原生ML

咱们荣幸地表明整个社区宣布咱们的第一个主要版本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开发,构建,训练和部署

m-01.png

使用Kubeflow 1.0,用户可使用Jupyter开发模型。而后,他们可使用fairing(Kubeflow的python SDK)之类的Kubeflow工具来构建容器,并建立Kubernetes资源来训练他们的模型。一旦有了模型,他们就可使用KFServing建立和部署用于推理的服务器。web

Kubernetes上的ML入门

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

Kubernetes上的Jupyter

在Kubeflow的用户调查中,数据科学家一直在表达Jupyter notebooks的重要性。此外,他们须要可以将孤立的Jupyter notebooks与Kubernetes on Cloud的效率集成在一块儿,以使用GPU训练更大的模型并并行运行多个实验。 Kubeflow使利用Kubernetes进行资源管理变得容易,并将数据中心的所有功能置于数据科学家的掌握之中。数据库

借助Kubeflow,能够为每一个数据科学家或团队提供各自的命名空间,以在其中运行其工做负载。命名空间提供安全性和资源隔离。使用Kubernetes资源配额,平台管理员能够轻松限制我的或团队能够消耗多少资源,以确保公平的调度。flask

部署Kubeflow以后,用户能够利用Kubeflow的中央仪表板来启动notebooks:bootstrap

m-02.png

在Kubeflow UI中,用户能够经过选择Jupyter的预构建docker镜像之一或输入自定义镜像的URL来轻松启动新notebook。接下来,用户能够设置要链接到notebook的CPU和GPU数量。notebook还能够包含配置和密码参数,以简化对外部存储库和数据库的访问。后端

m-03.png

经过分布式训练更快地训练模型

分布式训练是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监控模型训练

为了训练高质量的模型,数据科学家须要使用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提供了如下功能:

  1. Deploy your model using out-of-the-box model servers (no need to write your own flask app)
  2. Auto-scaling based on load, even for models served on GPUs
  3. Safe, controlled model rollout
  4. Explainability (alpha)
  5. Payload logging (alpha)

如下是一个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镜像和标志。

m-04.png

若是这听起来像您要找的东西,咱们建议:

1.访问咱们的文档,以了解如何在公共或私有云上部署Kubeflow。

2.逐步完成mnist教程,亲自尝试咱们的核心应用程序。

Kubeflow其余的功能

除了咱们在本博文中介绍的内容外,Kubeflow还有不少其余功能。除了此处列出的应用程序,咱们还在开发许多应用程序:

  • Pipelines(beta) for defining complex ML workflows
  • Metadata(beta) for tracking datasets, jobs, and models,
  • Katib(beta) for hyper-parameter tuning
  • Distributed operators for other frameworks like xgboost

在未来的版本中,咱们会将这些应用程序升级到1.0。

相关文章
相关标签/搜索