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。

相關文章
相關標籤/搜索