Netflixは、Metaflow機械学習インフラストラクチャに重要な機能強化を導入した:MLワークフローに強力な構成管理をもたらす新しいConfigオブジェクトである。この追加は、多様なMLとAIのユースケースにわたって何千ものユニークなMetaflowフローを管理するNetflixのチームが直面する共通の課題に対処する。
Netflix Metaflowはオープンソースのデータサイエンスフレームワークで、データ集約的なワークフローの構築と管理のプロセスを簡素化するように設計されている。ユーザーはワークフローを有向グラフとして定義でき、可視化と反復が容易になる。Metaflowは、ワークフローのスケーリング、バージョン管理、デプロイメントを自動的に処理し、機械学習やデータエンジニアリングのプロジェクトでは重要な役割を果たす。データストレージ、パラメータ管理、計算実行などのタスクを、ローカルとクラウドの両方でビルトインサポートする。
Metaflow infrastructure stack
新しいConfig機能は、NetflixでMLワークフローを構成・管理する方法の根本的な転換を意味する。Metaflowはデータアクセス、コンピュートリソース、ワークフローオーケストレーションのためのインフラストラクチャを提供することに常に優れているが、チームはこれまで、特にデコレーターやデプロイメント設定など、フローの振る舞いを構成する統一された方法を欠いていた。
ConfigオブジェクトはMetaflowの既存の構成要素であるアーティファクトとパラメータに加わるが、タイミングに決定的な違いがある。アーティファクトは各タスクの終了時に保持され、パラメータは実行開始時に解決されるが、Configはフローのデプロイ時に解決される。このタイミングの違いにより、コンフィグはデプロイ特有の設定するのに特に威力を発揮する。
Configは人間が読めるTOMLファイルを使って指定できるので、フローのさまざまな側面を簡単に管理できる:
[schedule]
cron = "0 * * * *"
[model]
optimizer = "adam"
learning_rate = 0.5
[resources]
cpu = 1
Netflixの社内ツールであるMetaboostは、この構成システムがいかに強力かを示している。Metaboostは、ETLワークフロー、MLパイプライン、データウェアハウスのテーブルを管理するための統一インターフェースだ。新しいConfig機能により、チームはコアフロー構造を維持しながら、さまざまな実験的構成を作成できる。
例えば、ML実践者は、構成ファイルを入れ替えるだけで、モデルのバリエーションを簡単に作成でき、異なる機能、ハイパーパラメータ、ターゲットメトリクスの迅速な実験が可能になる。この機能は、数百のデータ列と複数のメトリクスを扱うNetflixのコンテンツMLチームにとって、特に価値があることが証明されている。
新しいConfigシステムにはいくつかの利点がある:
- 柔軟なランタイム設定:パラメータとConfigを混在させることで、固定配置とランタイム設定のバランスをとることができる。
- バリデーションの強化:Pydanticのような一般的なツールとの統合を含め、カスタムパーサーで構成を検証できる。
- 高度な構成管理:OmegaConf やHydraのような構成マネージャのサポートにより、洗練された構成階層が可能になる。
- オンザフライで構成を生成: ユーザーは、外部サービスからcongfigを取得したり、現在のGITブランチのような実行環境を分析したりして、実行中に追加のコンテキストとして含めることができる。
この機能強化は、機械学習インフラプラットフォームとしてのMetaflowの進化を大きく前進させるものだ。構成をより構造的に管理する方法を提供することで、Netflixは、チームが特定の開発プラクティスとビジネス目標を遵守しながら、MLワークフローを維持し、拡張することを容易にした。
この機能は現在Metaflow 2.13で利用可能で、ユーザーはすぐにワークフローに実装し始めることができる。
Netflix Metaflowに似たツールはいくつかあり、データ科学者やエンジニアがワークフローを管理し、パイプラインをオーケストレーションし、スケーラブルな機械学習やデータ駆動型システムを構築するのを助けるように設計されている。これらのツールのニーズや優先順位はそれぞれ微妙に異なるが、いずれも複雑なワークフローを簡素化し、データオペレーションを拡張することを目的としている。注目すべき例をいくつか紹介しよう:
- Apache Airflow:ワークフローをオーケストレーションするための、広く使われているオープンソースのプラットフォームだ。タスクとその依存関係をDAG(Directed Acyclic Graph)として定義できる。Metaflowがデータサイエンス・パイプラインにフォーカスしているのに対し、Airflowはより汎用的で、異なるドメインにまたがるワークフローの管理に優れている。
- Luigi(Spotify):複雑なパイプラインを構築するために設計されたオープンソースのPythonフレームワーク。Metaflowと同様に、Luigiは依存関係、ワークフローオーケストレーション、タスク管理を扱うが、機械学習に特化したニーズにはあまり焦点を当てていない。
- Kubeflow:Kubernetes用の機械学習ツールキット。MLワークフローの管理と本番環境でのモデルのデプロイに特化しており、Kubernetesベースの環境では有力な選択肢となる。
- MLflow:実験のトラッキング、再現性、デプロイ、モニタリングなど、MLのライフサイクルを管理するオープンソースのプラットフォーム。MLflowはモデルのバージョニングとデプロイを強力にサポートしているが、Metaflowの広範なワークフロー・オーケストレーション機能には欠けている。
- Argo Workflows:コンテナ化されたインフラ上で複雑なワークフローを実行するために設計されたKubernetesネイティブのワークフローエンジンだ。すでにKubernetesを使用しており、軽量なソリューションを探しているチームに最適だ。
これらのツールは一部機能が重複しているが、Metaflowはそのシンプルさ、スケーラビリティ、機械学習ワークフローのビルトインサポートで際立っており、データサイエンスチームにとって特に魅力的だ。