Flyte 如何针对“数据和机器学习”进行定制?

Mak*_*e42 5 workflow directed-acyclic-graphs airflow flyte

https://flyte.org/说它是

适用于大规模复杂、任务关键型数据和机器学习流程的工作流自动化平台

我浏览了相当多的文档,但我不明白为什么它是“数据和机器学习”。在我看来,它是容器编排(此处为 Kubernetes)之上的工作流管理器,其中工作流管理器意味着我可以定义有向无环图(DAG),然后将 DAG 节点部署为容器,并且 DAG 是跑步。

当然,这对于“数据和机器学习”来说非常有用且重要,但我也可以将它用于任何其他微服务 DAG。除了功能/细节之外,这与https://airflow.apache.org或其他工作流程管理器(其中有很多)有何不同。还有更专门的“数据和机器学习”工作流程管理器,例如https://spark.apache.org

作为软件架构师我应该记住什么?

小智 6

这是一个很好的问题。你在一件事上是对的,它的核心是一个无服务器工作流编排器(无服务器,因为它确实启动了运行代码的基础设施)。是的,它可以用于多种其他情况。对于微服务编排等其他一些系统来说,它可能不是最好的工具。

但是,真正使其对 ML 和数据编排有利的是以下因素的组合:

  1. 特点(如下所列)&
  2. 集成(下面列出)
  3. 使用它的人的社区
  4. 路线图

特征

  1. 长时间运行的任务:它是为极长时间运行的任务而设计的。可以运行数天和数周的任务,即使控制平面出现故障,您也不会丢失工作。您可以继续部署而不影响现有工作。
  2. 版本控制 - 允许多个用户在同一工作流程上独立工作,使用不同的库、模型、输入等
  3. 记忆化。让我们以包含 10 个步骤的管道为例,您可以记住所有 9 个步骤,如果第 10 个步骤失败,或者您可以修改第 10 个步骤,然后它将重用前 9 个步骤的结果。这会大大加快迭代速度
  4. 强类型和 ML 特定类型支持 Flyte 理解数据帧,并且能够从 Spark.dataFrame -> pandas.DataFrame -> Modin -> Polars 等转换数据帧,而无需用户考虑如何有效地完成它。还支持张量(正确序列化)、numpy 数组等。模型也可以从过去的执行中保存和检索,因此实际上是模型真值存储
  5. 对内部任务检查点的本机支持。这可以帮助在节点故障之间甚至跨执行之间恢复模型训练。添加了对检查点回调的新支持。
  6. Flyte Decks:一种可视化指标(如 ROC 曲线等)或自动可视化任务数据输入分布的方法。
  7. 可扩展的编程接口,可以编排分布式作业或本地运行 - 例如 Spark、MPI、sagemaker
  8. 库隔离的参考任务
  9. 调度程序独立于用户代码
  10. 了解 GPU 等资源 - 在 GPU 和/或 Spot 机器上自动调度。通过智能处理现货机器 - n-1 次重试,最后一次自动转移到按需机器上,以更好地保证
  11. 映射任务和动态任务。(映射区域列表),动态 -> 根据输入动态创建新的静态图
  12. 多个启动计划。Schedule 2 针对超参数或模型值等略有不同的工作流程运行

对于管理员

  1. 对于真正长时间运行的任务,管理员可以部署管理层而不终止任务
  2. 支持spot/arm/gpu(不同版本等)
  3. 每个项目/域的配额和限制
  4. 升级基础设施而不升级用户库

集成

  1. pandas 数据框本机支持
  2. 火花
  3. mpi 工作(计划的组)
  4. pandera / 对数据质量的厚望
  5. 贤者
  6. 轻松部署服务模型
  7. Polars / Modin / Spark 数据框
  8. 张量/检查点等以及路线图中的许多其他内容

社区

专注于 ML 特定功能

路线图

  1. CD4ML,具有人在环和基于外部信号的工作流程。这将允许用户自动部署模型或执行人工循环标记等
  2. 支持Ray/Spark/Dask集群跨任务复用
  3. 与 WhyLogs 和其他监控工具集成
  4. 与 MLFlow 等集成
  5. 更多原生 Flytedecks 渲染器

希望这能回答您的问题。另外,请加入 Slack 社区并帮助传播此信息。还可以问更多问题