旅游网站开发参考文献,学校网站开发文档,微信小程序界面设计,射洪网站建设什么是DAG?有向无环图树形结构#xff1a;除根节点#xff0c;每个节点有且仅有一个上级节点#xff0c;下级节点不限。根节点没有上级节点。图结构#xff1a;每个节点上级、下级节点数不限。DAG调度平台的定义及场景任务调度是在各行各业是个基础问题#xff0c;当任务…什么是DAG?有向无环图树形结构除根节点每个节点有且仅有一个上级节点下级节点不限。根节点没有上级节点。图结构每个节点上级、下级节点数不限。DAG调度平台的定义及场景任务调度是在各行各业是个基础问题当任务复杂同时存在任务复杂依赖的时候就需要DAG调度。如机器学习的可视化建模(PAI平台、第四范式)数据的抽取、转换、加载(ETL)在业务复杂情况下就需要DAG的调度管理等接下来说说基于机器学习的DAG调度平台系统架构构图系统架构说明DAG调度平台主要的职责是:1.接受机器学习web传过来的yaml文件(dag定义文件)2.解析yaml文件变成结构化数据存储到mysql数据库3.开始调度dag定义各个算子任务4.算子执行引擎根据算子类型分发到各个环境进行执行名词说明yaml:类型XML的数据描述语言语法更加简单算子:机器学习的DAG中各个节点即为算子在算子执行引擎中称为算子任务。算子背后是python实现的一些算法组件1.机器学习前端交互机器学习平台前端主要是将机器学习的流程装成一个dag定义各个算子的出入参以及算子的配置参数组装成一个yaml文件传给DAG调图平台(Azkaban是zip方式交互Airflow是通过py文件定义Oozie通过xml)。一个完整的DAG定义应包含以下算子数据读取/数据预处理特征功能模型训练模型预测模型评估模型部署下图是个简化版的DAG定义除去了模型部署算子2.DAG调度平台各模块介绍dag engine(图引擎)负责解析传入的yaml文件。根据yaml的配置生成算子的出入参以及运行配置信息保存到数据库。同时负责任务的调用。opertor engine(算子执行引擎):负责算子执行根据算子类型分发到不同的执行器中。统一的启停接口日志查询接口任务状态查询接口executor(执行器)local executor(本地执行器)执行单机的python任务执行单机文件方式的机器学习算法。当没有大数据平台的时候只能通过本地执行器执行DAGdc executor(分布式计算平台执行器)将python算法发送至大数据计算平台使用大数据平台资源运行算子。base executor (执行器接口):以后的执行器实现需要实现这个基类方便拓展。3.分布式计算平台交互针对不同的的计算平台实现base executor去自定义扩充。本系统通过dc executor实现分布式计算平台需要将python code通过http接口发送过去进行执行。部署架构图separation方式mixture方式实现细节yaml定义格式dag:operator_list: [algo_local_read_file_45_1517360824080,algo_local_split_data_45_1517360836712,algo_local_model_2c_l_45_1517362008544,algo_local_model_predict_45_1517362016532,algo_local_model_2c_eval_45_1517362022452,algo_local_model_gbdt_111_1517801573063]operator_rels:algo_local_read_file_45_1517360824080: [{target:algo_local_split_data_45_1517360836712,source_index:0,target_index:0}]algo_local_split_data_45_1517360836712: [{target:algo_local_model_2c_l_45_1517362008544,source_index:0,target_index:0},{target:algo_local_model_gbdt_111_1517801573063,source_index:1,target_index:0}]algo_local_model_predict_45_1517362016532: [{target:algo_local_model_2c_eval_45_1517362022452,source_index:0,target_index:0}]algo_local_model_gbdt_111_1517801573063: [{target:algo_local_model_predict_45_1517362016532,source_index:0,target_index:0}]algo_local_model_2c_l_45_1517362008544: [{target:algo_local_model_predict_45_1517362016532,source_index:0,target_index:1}]operator_details:algo_local_read_file_45_1517360824080:algo_name: algo_local_read_filedata_type: 本地pythontype: 数据源cn_name: 读文件coordinate:x: 137y: 69params:data_id: 40algo_local_split_data_45_1517360836712:algo_name: algo_local_split_datadata_type: 本地pythontype: 数据预处理cn_name: 拆分组件coordinate:x: 226y: 164params:split_type: 1ext1: 0.8ext2: nullalgo_local_model_2c_l_45_1517362008544:algo_name: algo_local_model_2c_ldata_type: 本地pythontype: 模型算法cn_name: 逻辑回归二分类coordinate:x: 130y: 262params:x_cols: [LIMIT_BAL,SEX,EDUCATION,MARRIAGE,AGE,PAY_0,PAY_2,PAY_3,PAY_4,PAY_5,PAY_6,BILL_AMT1,BILL_AMT2,BILL_AMT3,BILL_AMT4,BILL_AMT5,BILL_AMT6,PAY_AMT1,PAY_AMT2,PAY_AMT3,PAY_AMT4,PAY_AMT5,PAY_AMT6]y_col: next_monthpre_value: 1penalty: l2C: 1max_iter: 100senior: trueclass_weight: nulldual: falsefit_intercept: trueintercept_scaling: 1multi_class: ovrn_jobs: 1random_state: nullsolver: liblineartol: 0.0001verbose: 0warm_start: falsealgo_local_model_predict_45_1517362016532:algo_name: algo_local_model_predictdata_type: 本地pythontype: 模型预测cn_name: 模型预测coordinate:x: 258y: 396params:x_cols: [LIMIT_BAL,SEX,EDUCATION,MARRIAGE,AGE,PAY_0,PAY_2,PAY_3,PAY_4,PAY_5,PAY_6,BILL_AMT1,BILL_AMT2,BILL_AMT3,BILL_AMT4,BILL_AMT5,BILL_AMT6,PAY_AMT1,PAY_AMT2,PAY_AMT3,PAY_AMT4,PAY_AMT5,PAY_AMT6]algo_local_model_2c_eval_45_1517362022452:algo_name: algo_local_model_2c_evaldata_type: 本地pythontype: 模型评估cn_name: 二分类评估coordinate:x: 270y: 503params:y_col: next_monthpre_col: predict_resultpre_value: 1algo_local_model_gbdt_111_1517801573063:algo_name: algo_local_model_gbdtdata_type: 本地pythontype: 模型算法cn_name: GBDTcoordinate:x: 432.1111111111111y: 295.3333333333333params:x_cols: [LIMIT_BAL,SEX,EDUCATION,MARRIAGE,AGE,PAY_0,PAY_2,PAY_3,PAY_4,PAY_5,PAY_6,BILL_AMT1,BILL_AMT2,BILL_AMT3,BILL_AMT4,BILL_AMT5,BILL_AMT6,PAY_AMT1,PAY_AMT2,PAY_AMT3,PAY_AMT4,PAY_AMT5,PAY_AMT6]y_col: next_monthpre_value: 1n_estimators: 10max_depth: 5senior: truecriterion: friedman_mseinit: nulllearning_rate: 0.1loss: deviancemax_features: nullmax_leaf_nodes: nullmin_impurity_decrease: 0min_impurity_split: nullmin_samples_leaf: 1min_samples_split: 2min_weight_fraction_leaf: 0presort: autorandom_state: nullsubsample: 1verbose: 0warm_start: falseparams:translate: [41,-20]scale: 0.9dag engine实现逻辑1.当前节点采用广度优先遍历获取所有需要执行的算子(节点)信息。2.轮询所有算子(节点)判断上算子(节点)是否全部执行完成执行完成开始执行当前算子(节点)。3.发送请求到operator engine开始执行当前算子(节点)任务。operator engine实现逻辑1.主进程接受task请求添加任务执行队列、任务监听队列。2.任务执行进程轮询接受到的队列根据不同任务类型调用不同executor3.任务监听进程轮询接受到的队列调用不同executor查询任务执行状态是任务执行的最终状态(成功、失败)回调dag enginelocal executor实现逻辑1.local executor接受任务发送到队列中。2.local worker进程池(cpu数*2个进程)轮询获取队列中任务使用importlib的python去执行对应算子。