# Metaflow
『機械学習システムデザイン』第10章で、Kubeflowと並んで、Airflow・Argoの実行に通常必要なインフラのボイラープレートコードを抽象化し、開発環境と本番環境の両方でワークフローを実行できるようにするツールとして紹介される。AWS BatchやKubernetesと組み合わせて使用でき、完全にパラメーター化された動的なワークフローを定義できる。
Pythonのデコレーター`@conda`で各ステップに必要な依存ライブラリ・メモリ・コンピューティング要件を定義でき、Metaflowが自動的にその要件を満たすコンテナを作成してステップを実行する。ローカルマシン上で小規模データセットによる実験を行い、クラウド上の大規模データセットで実行する準備が整ったら`@batch`デコレーターを追加するだけでAWS Batch上で実行できる。同一ワークフロー内で、メモリ使用量の小さいステップはローカルマシンで、大きなメモリを必要とするステップは`@batch`を付けてクラウド上で実行するといった環境の混在も可能である。著者は、Kubeflowより有名だが、ユーザー体験の面ではMetaflowに軍配が上がると評している。Kubeflowでは事前にDockerfileやYAMLファイルで各コンポーネントの仕様を定義してからPythonのワークフローに結合する必要があるのに対し、Metaflowはこの手順を`@conda`によって抽象化する。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]] §10.3.2)
## 関連
- 実体: [[Apache Airflow]]
- ソース: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]](§10.3.2)