工作流運行
定義內涵
工作流運行是工作流模板的依次執(zhí)行,在工作流運行時,用戶可以隨時取消或查看正在
運行的任務。由于工作流運行的模板的不同,運行過程中可能會產生不同的新資源,如數據
處理類型的工作流會產生新的數據集,AI 算法類的工作流會產生新的模型,甚至超參調優(yōu)類
型的工作流會產生新的模型訓練代碼,這些新生成的資源都可以在本模塊中進行保存,來完
善本平臺的數據集庫、模型庫和算法庫。
技術背景
在項目的 jupyterlab 中,用戶可以自由安裝 Elyra 搭建工作流。在使用 Elyra 搭建可視
化工作流之前,用戶首先需要基于容器和 Kubernetes 構建 Kubeflow。Kubeflow 提供面向
機器學習業(yè)務的敏捷部署、開發(fā)、訓練、發(fā)布和管理平臺,通過集成開源生態(tài)中越來越多
的項目,如 Jupyter, Knat
ive, Seldon Core 等,搭建了機器學習應用從開發(fā)到上線到迭代的生命周期
內的工具鏈,解決企業(yè)應用機器學習中遇到的和 DevOps 類似的工具鏈的困擾,因此,Kubeflow 也成為了當前云原生
場景下主流的 MLOps 平臺。Elyra 利用 Kubeflow Pipelines 進行工作流的構建。使用 Elyra 中的 Pipeline Editor,用
戶可以將若干個 ipynb 文件組裝成工作流,并在任何 Kubernetes 環(huán)境中的 Kubeflow 管道
上運行。如本小節(jié)上述內容,將機器學習工作流程拆分為多個階段后,每個階段中的具體
任務對應的代碼被封裝為鏡像,作為 Elyra 中的 ipynb 文件。Elyra 根據流程之間的順序或
并行特性,連接各個 ipynb 文件,確保在工作流中,執(zhí)行完上游節(jié)點的任務后,處理下游
節(jié)點的任務。
思路方案
在 SecXOps 中,用戶可以自由擴展 jupyterlab 的功能,因此可以輕易實現容器內工作流
編排。然而當在用戶需要實現跨項目跨容器的工作流運行時,SecXOps 支持將用戶創(chuàng)建的模
塊以 DAG 圖的形式進行編排,將一個個工作流模塊編排起來即是將一個個容器編排起來,隨
后按照一定的資源動態(tài)調度策略在集群上運行,獲取每一個模塊的運行結果。

如上圖所示,每個方塊代表一個模塊,模塊的運行會按照其內部關聯的 Dockerfile 創(chuàng)建
一個容器,容器運行在以 Job 創(chuàng)建的 Pod 中。當一個模塊運行結束后,該模塊的后繼節(jié)點會
判斷其全部前驅節(jié)點是否完成運行,若完成則開始啟動該模塊的運行,反之則繼續(xù)等待。當
一個模塊運行失敗時,該模塊所在路徑會被阻塞,用戶需要重新修改參數或調整模塊才能繼續(xù)運行