工作流运行
定义内涵
工作流运行是工作流模板的依次执行,在工作流运行时,用户可以随时取消或查看正在
运行的任务。由于工作流运行的模板的不同,运行过程中可能会产生不同的新资源,如数据
处理类型的工作流会产生新的数据集,AI 算法类的工作流会产生新的模型,甚至超参调优类
型的工作流会产生新的模型训练代码,这些新生成的资源都可以在本模块中进行保存,来完
善本平台的数据集库、模型库和算法库。
技术背景
在项目的 jupyterlab 中,用户可以自由安装 Elyra 搭建工作流。在使用 Elyra 搭建可视
化工作流之前,用户首先需要基于容器和 Kubernetes 构建 Kubeflow。Kubeflow 提供面向
机器学习业务的敏捷部署、开发、训练、发布和管理平台,通过集成开源生态中越来越多
的项目,如 Jupyter, Knat
ive, Seldon Core 等,搭建了机器学习应用从开发到上线到迭代的生命周期
内的工具链,解决企业应用机器学习中遇到的和 DevOps 类似的工具链的困扰,因此,Kubeflow 也成为了当前云原生
场景下主流的 MLOps 平台。Elyra 利用 Kubeflow Pipelines 进行工作流的构建。使用 Elyra 中的 Pipeline Editor,用
户可以将若干个 ipynb 文件组装成工作流,并在任何 Kubernetes 环境中的 Kubeflow 管道
上运行。如本小节上述内容,将机器学习工作流程拆分为多个阶段后,每个阶段中的具体
任务对应的代码被封装为镜像,作为 Elyra 中的 ipynb 文件。Elyra 根据流程之间的顺序或
并行特性,连接各个 ipynb 文件,确保在工作流中,执行完上游节点的任务后,处理下游
节点的任务。
思路方案
在 SecXOps 中,用户可以自由扩展 jupyterlab 的功能,因此可以轻易实现容器内工作流
编排。然而当在用户需要实现跨项目跨容器的工作流运行时,SecXOps 支持将用户创建的模
块以 DAG 图的形式进行编排,将一个个工作流模块编排起来即是将一个个容器编排起来,随
后按照一定的资源动态调度策略在集群上运行,获取每一个模块的运行结果。
如上图所示,每个方块代表一个模块,模块的运行会按照其内部关联的 Dockerfile 创建
一个容器,容器运行在以 Job 创建的 Pod 中。当一个模块运行结束后,该模块的后继节点会
判断其全部前驱节点是否完成运行,若完成则开始启动该模块的运行,反之则继续等待。当
一个模块运行失败时,该模块所在路径会被阻塞,用户需要重新修改参数或调整模块才能继续运行
参考资料
绿盟SecXOps安全智能分析技术白皮书
友情链接
GB-T 15851.3-2018 信息技术 安全技术 带消息恢复的数字签名方案 第3部分:基于离散对数的机制