91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Kubeflow

發布時間:2021-10-12 10:34:40 來源:億速云 閱讀:228 作者:柒染 欄目:云計算

本篇文章為大家展示了如何理解Kubeflow,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

提起機器學習,尤其是深度學習,大家可能會對諸如Tensorflow,Pytorch,Caffee的工具耳熟能詳。但其實在實際的機器學習的生命周期中,訓練模型(上述工具主要解決的問題)只是整個機器學習生命周期的很小一部分。

如何理解Kubeflow

數據如何準備?模型訓練好了如何部署?如何上云?如何上規模Scale?等等挑戰隨之而來。隨著機器學習的廣泛應用,許多工具響應而生,以解決模型部署的問題。例如:

  • Oracle 的 graphpipe

  • Databricks 的 mlflow

  • Google的 kubeflow

我們今天就來看一看Google推出的Kubeflow。Kubeflow,顧名思義,是Kubernetes + Tensorflow,是Google為了支持自家的Tensorflow的部署而開發出的開源平臺,當然它同時也支持Pytorch和基于Python的SKlearn等其它機器學習的引擎。與其它的產品相比較,因為是基于強大的Kubernetes之上構建,Kubeflow的未來和生態系統更值得看好。

Kukeflow主要提供在生產系統中簡單的大規模部署機器學習的模型的功能,利用Kubernetes,它可以做到:

  • 簡單,可重復,可移植的部署

  • 利用微服務提供松耦合的部署和管理

  • 按需擴大規模

Kubeflow是基于K8S的機器學習工具集,它提供一系列的腳本和配置,來管理K8S的組件。Kubeflow基于K8s的微服務架構,其核心組件包括:

  • Jupyterhub  多租戶Nootbook服務

  • Tensorflow/Pytorch/MPI/MXnet/Chainer  主要的機器學習引擎

  • Seldon 提供在K8s上對于機器學習模型的部署

  • Argo 基于K8s的工作流引擎

  • Ambassador  API Gateway

  • Istio 提供微服務的管理,Telemetry收集

  • Ksonnet  K8s部署工具

基于K8s,擴展其它能力非常方便,Kubeflow提供的其它擴展包括:

  • Pachyderm 基于容器和K8s的數據流水線 (git for data)

  • Weaveworks flux 基于git的配置管理

  • ... ...

如何理解Kubeflow

我們可以看出,基于K8s,Kubeflow利用已有的生態系統來構微服務,可以說充分體現了微服務的高度擴展性。

我們下面就來看看Kubeflow是如何整合了這些組件,來提供機器學習模型部署的功能的。

JupyterHub

Jupyter Notebook是深受數據科學家喜愛的開發工具,它提供出色的交互和實時反饋。JupyterHub提供一個使用Juypter Notebook的多用戶使用環境,它包含以下組件:

  • 多用戶Hub

  • 可配置的HTTP代理

  • 多個但用戶Notebook server

如何理解Kubeflow

運行以下的命令通過port-forward訪問jyputer hub

kubectl port-forward tf-hub-0 8000:8000 -n <ns>

第一次訪問,可以創建一個notebook的實例。創建的實例可以選擇不同的鏡像,可以實現對GPU的支持。同時需要選擇配置資源的參數。

創建好的jupyterlab (JupyterLab是新一代的Juypter Notebook)的界面如下:

如何理解Kubeflow

不過我還是比較習慣傳統的notebook界面。Lab的優點是可以開Console,這個不錯。(Lab也支持打開傳統的notebook界面)

Kubeflow在notebook鏡像中集成了Tensorboard,可以方便的對tensflow的程序進行可視化和調試。

在jyputerlab的Console中,輸入下面的命令開啟Tensorboard:

tensorboard --logdir <logdir>
$ tensorboard --logdir /tmp/logs
2018-09-15 20:30:21.186275: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
W0915 20:30:21.204606 Reloader tf_logging.py:121] Found more than one graph event per run, or there was a metagraph containing a graph_def, as well as one or more graph events.  Overwriting the graph with the newest event.
W0915 20:30:21.204929 Reloader tf_logging.py:121] Found more than one metagraph event per run. Overwriting the metagraph with the newest event.
W0915 20:30:21.205569 Reloader tf_logging.py:121] Found more than one graph event per run, or there was a metagraph containing a graph_def, as well as one or more graph events.  Overwriting the graph with the newest event.
TensorBoard 1.8.0 at http://jupyter-admin:6006 (Press CTRL+C to quit)

訪問tensorboard也需要port-forward,這里user是創建notebook的用戶名,kubeflow為為一個實例創建一個Pod。缺省的tensorboard的端口是6006。

kubectl port-forward jupyter-<user> 6006:6006 -n <ns>

如何理解Kubeflow

Tensorflow 訓練

為了支持在Kubernete中進行分布式的Tensorflow的訓練,Kubeflow開發了K8s的CDR,TFJob (tf-operater)。

如何理解Kubeflow

如上圖所示,分布式的Tensorflow支持0到多個以下的進程:

  • Chief  負責協調訓練任務

  • Ps Parameter servers,參數服務器,為模型提供分布式的數據存儲

  • Worker 負責實際訓練模型的任務. 在某些情況下 worker 0 可以充當Chief的責任.

  • Evaluator 負責在訓練過程中進行性能評估

下面的yaml配置是Kubeflow提供的一個CNN Benchmarks的例子。

---
apiVersion: kubeflow.org/v1alpha2
kind: TFJob
metadata:
  labels:
    ksonnet.io/component: mycnnjob
  name: mycnnjob
  namespace: kubeflow
spec:
  tfReplicaSpecs:
    Ps:
      template:
        spec:
          containers:
          - args:
            - python
            - tf_cnn_benchmarks.py
            - --batch_size=32
            - --model=resnet50
            - --variable_update=parameter_server
            - --flush_stdout=true
            - --num_gpus=1
            - --local_parameter_device=cpu
            - --device=cpu
            - --data_format=NHWC
            image: gcr.io/kubeflow/tf-benchmarks-cpu:v20171202-bdab599-dirty-284af3
            name: tensorflow
            workingDir: /opt/tf-benchmarks/scripts/tf_cnn_benchmarks
          restartPolicy: OnFailure
      tfReplicaType: PS
    Worker:
      replicas: 1
      template:
        spec:
          containers:
          - args:
            - python
            - tf_cnn_benchmarks.py
            - --batch_size=32
            - --model=resnet50
            - --variable_update=parameter_server
            - --flush_stdout=true
            - --num_gpus=1
            - --local_parameter_device=cpu
            - --device=cpu
            - --data_format=NHWC
            image: gcr.io/kubeflow/tf-benchmarks-cpu:v20171202-bdab599-dirty-284af3
            name: tensorflow
            workingDir: /opt/tf-benchmarks/scripts/tf_cnn_benchmarks
          restartPolicy: OnFailure

在Kubeflow中運行這個例子,會創建一個TFjob。可以使用Kubectl來管理,監控這個Job的運行。

# 監控當前狀態
kubectl get -o yaml tfjobs <jobname> -n <ns>

# 查看事件
kubectl describe tfjobs <jobname> -n <ns>

# 查看運行日志
kubectl logs mycnnjob-[ps|worker]-0 -n <ns>

Tensoflow 服務(Serving)

Serving就是指當模型訓練好了以后,提供一個穩定的接口,供用戶調用,來應用該模型。

基于Tensorflow的Serving功能,Kubeflow提供一個Tensorflow模型服務器(model server)的Ksonnet模塊來提供模型服務的功能。

如何理解Kubeflow

模型部署好了之后,通過API Gateway暴露的endpoint來訪問和使用模型。

http://<ambassadorEndpoint>/seldon/<deploymentName>/api/v0.1/predictions

如何理解Kubeflow

機器學習同樣可以抽象為一個或者多個工作流。Kubeflow繼承了Argo來作為其機器學習的工作流引擎。

可以通過Kubectl proxy來訪問Kubeflow中的Argo UI。 http://localhost:8001/api/v1/namespaces/kubeflow/services/argo-ui/proxy/workflows

現階段,并沒有實際的Argo工作流來運行機器學習的例子。但是Kubeflow在使用Argo來做自己的CICD系統。

如何理解Kubeflow

Pychyderm是容器化的數據池,提供像git一樣的數據版本系統管理,并提供一個數據流水線,來構建你的數據科學項目。

Kubeflow利用Google自家的兩大利器Kubernete和Tensorflow,強強聯手,來提供一個數據科學的工具箱和部署平臺。我們可以看到他有很多優點:

  • 云優化 - 基于K8s,可以說,所有功能都很容易的在云上擴展。諸如多租戶功能,動態擴展,對AWS/GCP的支持等等

  • 利用微服務架構,擴展性強,基于容器,加入心得組件非常容易

  • 出色的DevOps和CICD支持,使用Ksonnet/argo,部署和管理組件和CICD都變得非常輕松

  • 多核心支持,除了我們本文提到的深度學習引擎,Kubeflow很容易擴展新的引擎,例如Caffe2正在開發中。

  • GPU支持

同時我們也可以看到Kubeflow的一些問題:

  • 組件比較多,缺乏協調,更像是一推工具集合。希望能有一個整合流暢的工作流,能統一各個步驟。

  • 文檔還需改善

當然,kubeflow的當前版本是0.2.5,我相信,未來Kubeflow會有很好的發展。

上述內容就是如何理解Kubeflow,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广平县| 临湘市| 平邑县| 东乡县| 托克托县| 玉林市| 恭城| 天等县| 宁晋县| 鄂伦春自治旗| 台安县| 温泉县| 古丈县| 宁阳县| 新津县| 丹东市| 濮阳市| 铁岭市| 京山县| 东光县| 德州市| 上林县| 甘肃省| 桐城市| 惠来县| 平南县| 确山县| 平武县| 曲松县| 成都市| 启东市| 黄浦区| 丽水市| 石狮市| 新绛县| 新乐市| 英吉沙县| 密云县| 甘南县| 安平县| 广南县|