4

我们荣幸地代表整个社区宣布我们的第一个主要版本Kubeflow 1.0。 Kubeflow于2017年12月在美国Kubecon开源,并且在过去两年中,Kubeflow项目的增长超出了我们的期望。现在有来自30多个参与组织的数百名贡献者。在1.0版本中,我们将逐步提供一组稳定的应用程序,这些应用程序是在Kubernetes上有效开发,构建,训练和部署模型所需的。

Kubeflow的目标是使机器学习(ML)工程师和数据科学家能够轻松地利用云资产(公有云或本地机房)来处理ML工作负载。您可以在任何符合Kubernetes的集群上使用Kubeflow。

在1.0版本中,我们将逐步提供一组稳定的应用程序,这些应用程序是在Kubernetes上有效开发,构建,训练和部署模型所需的。

毕业应用包括:

使用Kubeflow开发,构建,训练和部署

m-01.png

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

Kubernetes上的ML入门

Kubernetes是一个出色的平台,可用于基础架构(无论是在公共云还是本地),但是部署针对ML优化并与您的云集成的Kubernetes并非易事。在1.0中,我们提供了CLI和配置文件,因此您可以使用一个命令来部署Kubeflow:

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资源配额,平台管理员可以轻松限制个人或团队可以消耗多少资源,以确保公平的调度。

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

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。


iyacontrol
1.4k 声望2.7k 粉丝

专注kubernetes,devops,aiops,service mesh。