Prefect

机器学习工作流

Prefect Core是一种新型的工作流管理工具,使得构建数据pipeline非常容易,并且能轻松添加重试、日志、动态映射、缓存、失败告警以及更多的附加功能。 为什么需要工作流 当你的代码按照预期运行,你可能甚至不需要工作流框架。我们将只用编写实现业务逻辑开发代码视为支持业务的正向工程实践。只有当出现问题时候,一个类似Prefect的系统的价值才会凸显。代码掺杂业务目标和成功失败稳定性保证的是业务负向工程实践。从这个角度看,工作流框架实际上是风险管理工具,像保险,需要的时候就在那里,不需要的时候看不到。 为什么选择Prefect Prefect将代码转化成一个健壮的,分布式的pipeline。开发者能继续使用已有工具、语言、基础结构和脚本。Prefect按照支持业务正向工程实践的原则,支持丰富的DAG结构,并且不会阻碍业务。开发者可以通过少量的函数式钩子和功能API就能转化脚本,或者你可以直接访问延迟的计算图,或者任何组合。 Prefect Agent Prefect Agent负责执行Prefect工作流并进行监控,Prefect支持本地、Docker、K8S等Agent。Kubernetes Agent负责创建Kubernetes Job来执行Prefect工作流。 代码示例 一个简单的流水线,获取数据,训练模型两个任务。工作流名称:train-wine-quality-model,归属于项目wine-quality-project,Storage保存到S3,运行结果信息保存到S3,使用IntervalSchedule调度器,间隔2分钟任务调度一次。 from prefect import task, Flow, Parameter, Client from prefect.run_configs import KubernetesRun from prefect.schedules import IntervalSchedule from prefect.storage import S3 from prefect.engine.results.s3_result import S3Result from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score from sklearn.model_selection import train_test_split from sklearn.linear_model import ElasticNet from datetime import timedelta import numpy as np import pandas as pd import mlflow import requests import os os.environ["AWS_ACCESS_KEY_ID"] = "mlflow" os.

继续阅读