介紹
Pipeline是Kubeflow社區最近開源的一個端到端工做流項目,幫助咱們來管理,部署端到端的機器學習工做流。Kubeflow 是一個谷歌的開源項目,它將機器學習的代碼像構建應用同樣打包,使其餘人也可以重複使用。
kubeflow/pipeline 提供了一個工做流方案,將這些機器學習中的應用代碼按照流水線的方式編排,造成可重複的工做流。並提供平臺,幫助編排,部署,管理,這些端到端機器學習工做流。前端
概念
pipeline 是一個面向機器學習的工做流解決方案,經過定義一個有向無環圖描述流水線系統(pipeline),流水線中每一步流程是由容器定義組成的組件(component)。
當咱們想要發起一次機器學習的試驗時,須要建立一個experiment,在experiment中發起運行任務(run)。Experiment 是一個抽象概念,用於分組管理運行任務。git
- Pipeline:定義一組操做的流水線,其中每一步都由component組成。 背後是一個Argo的模板配置。
- Component: 一個容器操做,能夠經過pipeline的sdk 定義。每個component 能夠定義定義輸出(output)和產物(artifact), 輸出能夠經過設置下一步的環境變量,做爲下一步的輸入, artifact 是組件運行完成後寫入一個約定格式文件,在界面上能夠被渲染展現。
- Experiment: 能夠看作一個工做空間,管理一組運行任務。
- Run: pipeline 的運行任務實例,這些任務會對應一個工做流實例。由Argo統一管理運行順序和先後依賴關係。
- Recurring run: 定時任務,定義運行週期,Pipeline 組件會按期拉起對應的Pipeline Run。
Pipeline 裏的流程圖github

組件的Artifact後端


模塊
Pipeline 的組件比較簡單,大體分爲5個部分。api
- MySQL: 用於存儲Pipeline/Run 等元數據。
- Backend: 一個由go編寫的後端,提供kubernetes ApiServer 風格的Restful API。處理前端以及SDK發起的操做請求。 Pipeline/Experiment 之類的請求會直接存入MySQL元數據。和Run 相關的請求除了寫入MySQL之外還會經過APIServer 同步操做Argo實例。
- CRD Controller: Pipeline 基於Argo擴展了本身的CRD ScheduledWorkflow, CRD Controller 中會主要監聽ScheduledWorkflow和Argo 的Workflow 這兩個CRD變化。處理按期運行的邏輯。
- Persistence Agent: 和CRD Controller 同樣監聽Argo Workflow變化,將Workflow狀態同步到MySQL 元數據中。它的主要職責是實時獲取工做流的運行結果。
- Web UI:提供界面操做。 從Backend 中讀取元數據,將流水線過程和結果可視化,獲取日誌,發起新的任務等。

其餘工具
除了以上核心模塊之外, Pipeline提供了一系列工具,幫助更好構建流水線。機器學習
- SDK, 用於定義pipeline和component,編譯爲一個argo yaml模板,能夠在界面上導入成pipeline。
- CLI 工具,替代Web UI,調用Backend Api 管理流水線
- Jupyter notebook。 能夠在notebook中編寫訓練代碼,也能夠在notebook中經過sdk管理Pipeline。
本文做者:蕭元
閱讀原文工具
本文爲雲棲社區原創內容,未經容許不得轉載。學習