Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubeflow 對於機器學習平台的願景

Frank Lin
April 29, 2019

Kubeflow 對於機器學習平台的願景

R-Ladies Taipei x Cloud Native Taiwan User Group

Frank Lin

April 29, 2019
Tweet

More Decks by Frank Lin

Other Decks in Technology

Transcript

  1. About Me • Master degree as CSIE, PU. • AI

    Research Center in CGU. 2 @yylin1([email protected]) https://medium.com/@frank.yylin
  2. 如果你是⼀一個演算法⼯工程師 10 機器A 的環境 TensorFlow 只⽀支援CPU 機器B 的環境 TensorFlow 的版本是1.10

    機器C 的環境只安裝 PyTorch 是公司另⼀一位演算法科學家 莉莎
 在做資料分析 LSTM 時做實驗⽤用
 雖然 TensorFlow 已經發布2.0 版本,但⼩小建開發物件偵測習慣使⽤用經典的1.4 版本 但他登錄到了了機器上,發現事情並不簡單
  3. 如果你是⼀一個演算法⼯工程師 11 機器A 的環境 TensorFlow 只⽀支援CPU 機器B 的 TensorFlow 的版本是1.10

    機器C 的環境只安裝 PyTorch 於是⼩小建開始針對實驗機進⾏行行環境配置: • 移除CPU版本,重新配置對應 GPU驅動 • 安裝顯⽰示卡對應 CUDA & cuDNN • 移除舊有版本並重裝 Tensorflow 版本 • 發現TensorFlow v1.4不⽀支持機器B上的CUDA 9.0 • Remove CUDA 9.0 and install CUDA 8.0 • 問題不多,直接安裝 Tensorflow • 但可能依賴套件會與PyTouch 衝突
  4. 如果你有⼀一個機器學習平台 12 • 幾週後,Infra團隊 利利⽤用開源項⽬目Kubeflow為演算法⼯工程師和資料科學家 們搭建了了⼀一個⿇麻雀雖⼩小五臟俱全的機器學習平台 • ⼩小建透過已經團隊打包好的 TensorFlow v1.4

    的 Docker Images,⽤用平台 發起了了⼀一次分散式訓練。從訓練中的服務發現,異異常處理理等都由平台⾃自動 完成,包含⽀支持從準備數據到模型部署的⼀一整套機器學習端到端的過程 Images
  5. 機器學習平台要解決問題 13 • 「系統環境問題」等應該由 Infra 團隊來來解決的問題 • 這些問題已經都交由平台來來⾃自動化處理理,他可以專注於「模型的開發」 • TensorFlow、PyTorch

    等這些框架改變的是機器學習的編譯規範⽅方式 - 平台要改變的是機器學習的「開發與部署」流程
 • 機器學習⼯工作流的構建 - 流⽔水線 - 使⽤用者透過指定使⽤用的 - 資源數量量 (節點與GPU) - 分佈式模型(AllReduce、ParameterServer等) - 分佈式配置(ParameterServer數量量等)直接在平台上進⾏行行模型訓練
  6. 16

  7. 老⽅方式: Bare-metal Machines kernel libs app app app app •

    沒有隔離 • 沒有命名空間 • 共⽤用常⾒見見的函式庫 • ⾼高耦合的應⽤用程式與作業系統 18
  8. • 隔離性⾼高 • 效能會損失 • 同樣有⾼高耦合的應⽤用程式與作業系統 • 多虛擬機管理理效率差 • 啟動時間慢

    • 系統映像檔容量量較肥 • 粒度粗 老⽅方式: Virtual Machines 19 app libs kernel libs app app kernel app libs libs kernel kernel 作業系統層級
  9. • 效能佳 • 透過 namespace 隔離網路、UID 等 • 與 OS

    Kernel 高耦合 • 啟動時間快 • 應用映像檔容量較小(小至 10 MB)︐攜帶性佳 • 粒度細︐利用密度提升 新⽅方式: Containers(OS-Level Virtualization) libs app kernel libs app libs app libs app 20 應⽤用程式層級
  10. OCI(The Open Container Initiative)是由多家頂尖 IT 公司共同組成的組織,其⽬目 標是制定 Container 的標準規範,以利利 Container

    發展。該標準讓開發者打包、 簽署應⽤用程式,並且可以⾃自由選⽤用不同的 Container runtime 環境外,在近⽇日則 更更⼀一步延伸。⽽而⽬目前基於 OCI 標準 runtime 的 runC 已經是許多容器引擎的基 礎。 Open Container Initiative (OCI) 23
  11. Kubernetes 特性概觀 Kubernetes 管理理跨區域與主機的容器節點,提供基本部署、維運、管理理,以及 執⾏行行各項應⽤用程式,並具備多種特性。 26 資源監控 Monitoring 滾動升級 Rolling-update

    ⾼高可靠性 High-availability ⾃自我修復 Self-healing 雲端⽀支援 Cloud Provider 持久性儲存 Persistent Volumes 組態檔案 Configmap 安全性 Secret
  12. Why choose kubernetes ? 27 ⽣生產環境中,我們將可能有多台機器需要被編配設置,且環境可能是複雜的,需要網路路、運算與儲存需求 • 適合⼤大規模管理理與擴展,⾃自動化部屬 • 透過

    Kubernetes DNS 機制來來解析伺服器位址 • 透過 Replication Controller 來來管理理故障重啟問題 - k8s Pods for Training - k8s Deployments for Serving • Kubernetes 提供 Monitoring 與 Logging 等功能 • 能夠⽀支援使⽤用 CPU 與 GPU 排程來來指定節點 • 可擴展性好,⽀支持CRD 和operator,能滿⾃自定義需求
  13. 建構於 kubernetes上的機器學習平台 28 • Kubeflow [Kubeflow,2017]
 • RiseML [RiseML,2017],
 •

    Microsoft OpenPAI [Microsoft,2016]
 • IBM FfDL [IBM,2018]
 機器學習平台漫談-by gaocegege
  14. 29 What is Kubeflow? • What is kubeflow mession •

    Kubeflow Components • Deploy Kubeflow
  15. 30 Make it Easy for Everyone to Develop, Deploy and

    Manage Portable, Distributed ML on Kubernetes # MESSION
  16. What is Kubeflow? Kubeflow ⽬目標是簡化在 Kubernetes 上運⾏行行 Machine learning (ML)

    的過程, 使之通過更更簡單、可攜帶與可擴展的創建。 • ⽬目標不是在於重建其他服務,⽽而是提供⼀一個最佳開發系統,來來部署到任何集群中,有效確 保ML在集群之間移動性,並輕鬆將任務擴展任何叢集。 • 由於使⽤用 Kubernetes 來來做為基礎,因此只要有 Kubernetes 的地⽅方,都能夠運⾏行行部署 Kubeflow。 Ref: https://www.kubeflow.org/
  17. Simple Potable Scalable 更簡單 可攜帶 可擴展 Data Scientist / ML

    Engineer 能夠專注於模型創建
 部署學習成本較低 保持 Kubernetes Cluster 位於不同平台上可移植性 Kubernetes 上啟⽤用
 ⼯工作負載平衡 # Concept
  18. Inference ML Environment Ref: How to Get Started with Kubeflow

    https://medium.com/@amina.alsherif/how-to-get-started-with-kubeflow
  19. Kubernetes managing resources 透過 Kubernetes 和 containers來管理操作系統和硬體資源 Ref: How to

    Get Started with Kubeflow https://medium.com/@amina.alsherif/how-to-get-started-with-kubeflow
  20. Use Kubeflow Ref: How to Get Started with Kubeflow https://medium.com/@amina.alsherif/how-to-get-started-with-kubeflow

    Kubeflow 透過kubeflow在Kubernetes上︐簡化移植和擴展機器學習(ML)工作流程的部署
  21. Kubeflow architecture • Kubeflow 整合,它把諸多對機器學習的⽀支持, 例例如 模型訓練、超參參數訓練、模型部署 等, 進⾏行行組合併已容器化的⽅方式進⾏行行部署,提供整 個流程各個系統的⾼高可⽤用及⽅方便便的進⾏行行擴展部

    署了了kubeflow的⽤用⼾戶就可以利利⽤用它進⾏行行不同的 機器學習任務。 • 使⽤用者可根據需求使⽤用 Kubeflow components 組合 40 Libraries and CLIs - Focus on end users Systems - Combine multiple services Low Level APIs / Services (single function) Arena kfctl kubectl katib pipelines notebooks fairing TFJob PyTorch Job Jupyter CR Seldon CR kube bench Metadata Orchestration Pipelines CR Argo Study Job MPI CR Spark Job Model DB TFX Developed By Kubeflow Developed Outside Kubeflow * Not all components shown IAM Scheduling
  22. 41 Libraries and CLIs - focus on end users •

    Kfctl • Kfctl 部署 Kubeflow ,可執⾏行行⼆二進製⽂文件 • Arena • ⽤用⼀一個命令⾏行行⼯工具屏蔽所有底層資源、環境管理理、任務調度和GPU調 度分配的複雜性 • 簡化資料科學家在Kubeflow上運⾏行行 ML / DL 應⽤用 • 監控管理理ML/DL程序⽣生命週期(作業狀狀態、⽇日誌和GPU使⽤用情況) • 利利⽤用 top 命令監控GPU資源的分配和調度 Libraries and CLIs - Focus on end users Arena kfctl kubectl fairing $ arena submit mpijob --name=my-dist \ --image=uber/horovod:0.13.11-tf1.10.0-torch0.4.0-py3.5 \ --data=input:/data --data=output:/training \ --syncMode=git --syncSource=https://github.com/**/benchmarks.git \ --gpus=1 \ --rdma \ --workers=2 \ --tensorboard \ "mpirun python main.py --data_dir=/data --train_dir=/training"
  23. 42 Libraries and CLIs - focus on end users Fairing

    • 是⼀一個 Python package,可以輕鬆地在Kubeflow或Google AI Platform上訓練和部署ML模型 1. Preprocesses the code, converting notebooks or gathering source or data dependencies
 2.Builds and uploads a Docker image
 3.Deploys a job using Kubernetes or Kubeflow primitives Libraries and CLIs - Focus on end users Arena kfctl kubectl fairing Preprocessor Builder Deployer Notebook Function Python Append Docker Cluster Job TfJob Serving Train and Predict
  24. 43 System combine multiple service Systems - Combine multiple services

    katib pipelines notebooks kube bench Model DB TFX • Katib • Katib是⼀一個超參參數訓練系統 • pipelines • 端到端的ML/DL ⼯工作流系統 (流⽔水線) • Kubebench • 通過各種系統和模型與配置輕鬆在Kubeflow 上運⾏行行benchmark jobs • Notebooks • 透過 Jupyter 創建和管理理多使⽤用者操作的 Jupyter -notebooks
  25. 44 System combine multiple service • Katib • Katib是⼀一個超參參數訓練系統 •

    在有效嘗試次數中,盡可能嘗試輸入組合 - Learning Rate - Number of NN Layer - Optimizer
  26. 45 System combine multiple service • Pipelines • 實現⼀一個⼯工作流,稱之為流⽔水線 (pipeline)

    • 其中的每⼀一個節點,組件(component) • 組件在圖中作為⼀一個節點,其會處理理真正 的邏輯,比如數據預處理理、模型訓練等等
 • 可視化所有運⾏行行結果,每個步驟都可以有 輸入和輸出 component ,系統可追蹤所有 結果
  27. 46 Kubeflow operator • 包含分別對應主流的分佈式計算框架 • PyTorch Operator • TF

    Operator • Caffe 2 Operator • MXNet Operator • MPI Operator • .. Low Level APIs / Services (single function) TFJob PyTorch Job Jupyter CR Seldon CR Pipelines CR Argo Study Job MPI CR Spark Job Pic-Ref:基於Kubeflow 的機器學習調度平台落落地實戰-by蘑菇街
  28. 舉例例: Tensoflow GPU 分散式訓練 TensorFlow 分佈式訓練,繁雜的節點配置將成為 ML Developer 新的負擔 47

    tf.train.ClusterSpec({ "worker": [ "worker0.example.com:2222", "worker1.example.com:2222", "worker2.example.com:2222" ], "ps": [ "ps0.example.com:2222", "ps1.example.com:2222" ]})
  29. 48 Kubeflow / tf-operator  worker  (How mamy pods)

     : Scheduler  Kube-batch   args Images Pod  GPU
  30. Kubeflow web UIs Kubeflow 附帶很多 UI 服務提供使⽤用 • Argo UI

    • Jupyter Notebooks • TFJobs Dashboard • Katib Dashboard • Pipeline Dashboard 50
  31. Deploy Kubeflow # Download Kfctl $ wget https://github.com/kubeflow/kubeflow/releases/download/v0.5.0/kfctl_v0.5.0_darwin.tar.gz $ tar

    -xvf kfctl_v0.5.0_darwin.tar.gz 
 # The following command is optional, to make kfctl binary easier to use. export PATH=$PATH:<path to kfctl in your kubeflow installation> export KFAPP=<your choice of application directory name> 
 # Default uses IAP
 $ kfctl init ${KFAPP} cd ${KFAPP} kfctl generate all -V kfctl apply all -V 58