咱們榮幸地表明整個社區宣佈咱們的第一個主要版本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。