QCon 旧金山:在 Netflix 使用 Metaflow 支持多样化的机器学习系统

QCon SF 2024 演讲总结:Netflix 如何使用 Metaflow 支持多样化机器学习系统

在 QCon SF 2024 上,Netflix 的高级软件工程师 David Berg 和 Romain Cledat 分享了 Netflix 如何使用开源框架 Metaflow 来支持多种机器学习系统。他们的演讲涵盖了 Metaflow 的设计原则,并展示了 Netflix 的几个应用案例,包括媒体处理、内容需求建模以及用于解释模型的元模型。

Metaflow 的设计原则

Berg 和 Cledat 首先介绍了 Metaflow 的几项设计原则,旨在通过减少开发者的认知负荷来加速 Python 中的 ML 模型开发。他们提出了几个希望最小化的效应:

  • 纸牌屋效应:框架的底层不够稳固,可能导致系统崩溃。
  • 拼图效应:可组合的模块具有独特或不直观的接口,增加了复杂性。
  • 水床效应:系统的复杂性固定,当在一个地方被压下去时,会在另一个地方冒出来。

Metaflow 的发展历史

Cledat 回顾了 Metaflow 的发展历程。Metaflow 于 2017 年在 Netflix 内部启动,2019 年开源,但 Netflix 仍然维护其内部版本。2021 年,一些 Netflix 前员工创立了 Outerbounds 公司,负责维护和支持开源项目。同年,Netflix 的内部版本和开源版本进行了重构,创建了一个共享的“核心”。

Metaflow 的核心概念

Metaflow 的核心思想是将计算表示为有向无环图(DAG)的步骤。所有内容都使用 Python 代码表达,任何 Python 开发者都能轻松编写。DAG 可以在开发者的本地机器上执行,也可以在生产集群中运行,无需修改。每次执行(称为“run”)都可以被标记和持久化,以便于协作。

Netflix 的应用案例

Berg 展示了 Netflix 开发者使用 Metaflow 处理的多种 ML 任务:

  1. 内容需求建模:预测用户在整个内容生命周期中对视频的需求。这涉及多个数据源和模型,利用 Metaflow 编排多个流 DAG 的能力,特别是使用流可以信号其他流的功能,例如当一个流完成时。
  2. 元模型:训练一个模型来解释其他模型的结果。这依赖于 Metaflow 支持可重复环境的能力。Metaflow 打包了运行流所需的所有依赖项,使开发者能够进行可重复的实验。训练元模型时,可能需要加载多个环境,因为元模型可能具有与解释模型不同的依赖项。

问答环节

在问答环节,Berg 和 Cledat 回答了观众的提问:

  1. 集群规格的忽略:当流 DAG 的代码包含指定计算集群大小的注释时,如果 DAG 在单机上执行,这些注释是否会被忽略?他们确认确实如此。
  2. 集群规格的调优:关于如何调整这些集群规格,特别是在过度配置的情况下,Berg 表示框架可以提供资源使用的“提示”,并且正在进行自动调优资源的研究,但并非所有内容都能被抽象化。

结论

通过 Metaflow,Netflix 能够高效地开发和管理多样化的机器学习系统,同时减少开发者的认知负担。Metaflow 的设计原则和应用案例展示了其在复杂 ML 工作流中的强大能力。

阅读 30
0 条评论