機械学習タスクオーケストレーションツールの比較

機械学習タスクオーケストレーションツールの比較

[[349374]]

タスクオーケストレーションツールとワークフロー

最近、タスクとデータのワークフローをオーケストレーションするための新しいツール (「MLOps」と呼ばれることもあります) が登場しました。 これらのツールの数が多すぎると、どれを使用するか選択したり、それらがどのように重複しているかを把握したりすることが困難になる可能性があるため、最も人気のあるツールのいくつかを比較することにしました。

> Airflowが最も人気があり、次にLuigiが続きます。新しい候補もいくつかあり、

全体的に、Apache Airflow は最も人気があり、最も用途の広いツールですが、Luigi も同様のツールであり、簡単に始めることができます。 Argo は、チームがすでに Kubernetes を使用している場合によく使用されるツールの 1 つですが、Kubeflow と MLFlow は、機械学習モデルのデプロイや実験の追跡に関連する、よりニッチな要件に対応します。

詳細な比較に入る前に、タスク オーケストレーションに関連するより広範な概念を理解しておくと役立ちます。

タスクオーケストレーションとは何ですか? また、なぜ便利なのですか?

小規模なチームでは、データのクリーニング、機械学習モデルのトレーニング、結果の追跡、実稼働サーバーへのモデルのデプロイなどの手動の管理タスクから始めることがよくあります。 チームとソリューションの規模が大きくなるにつれて、反復的なステップの数も増えます。 これらのタスクを確実に実行することもさらに重要になります。

これらのタスクが相互に依存する方法の複雑さも増しています。 最初は、一連のタスクを毎週または毎月実行することをお勧めします。 これらのタスクは特定の順序で実行する必要があります。 成長するにつれて、そのパイプラインは動的なブランチを持つネットワークになります。 場合によっては、一部のタスクが他のタスクをトリガーし、これらのタスクが最初に実行される他のいくつかのタスクに依存することがあります。

このネットワークは、各タスクとそれらの間の依存関係をモデル化する DAG (有向非巡回グラフ) としてモデル化できます。

> パイプラインは、各タスクが最大1つの上流依存関係と最大1つの下流依存関係を持つ制限付きDAGです。

ワークフロー オーケストレーション ツールを使用すると、すべてのタスクとそれらの相互依存関係を指定して DAG を定義できます。 次に、ツールはこれらのタスクをスケジュールどおりに正しい順序で実行し、失敗したタスクを再試行してから次のタスクを実行します。 また、進捗状況を監視し、障害が発生した場合はチームに通知します。

Jenkins などの CI/CD ツールは、コードを自動的にテストおよびデプロイするためによく使用されます。これらのツールとタスク オーケストレーション ツールには大きな類似点がありますが、重要な違いもあります。 理論的には、これらの CI/CD ツールを使用して動的で相互にリンクされたタスクをオーケストレーションできますが、ある程度の複雑さになると、代わりに Apache Airflow などのより一般的なツールを使用する方が簡単になります。

全体として、オーケストレーション ツールの目的は、集中化され、反復可能で、再現可能で、効率的なワークフロー、つまりすべての自動化タスクの仮想コマンド センターを確保することです。 それを念頭に置いて、最も人気のあるワークフロー ツールのいくつかを比較してみましょう。

どれを使うか教えてください

おそらく以下を使用する必要があります:

  • Apache Airflow 最も機能が充実した成熟したツールが必要な場合は、その仕組み、設定、保守の方法を学習するために時間を費やすことができます。
  • Luigiさん、Airflowよりも簡単に学習できる方法が必要な場合は、こちらをどうぞ。 機能は少ないですが、使いやすいです。
  • Kubernetes エコシステムにすでに深く投資していて、すべてのタスクをポッドとして管理し、Python ではなく YAML で定義したい場合は、Argo を使用します。
  • Kubernetes を使用しながら、タスクを YAML ではなく Python で定義したい場合は、KubeFlow を使用します。
  • 既存のカスタム ワークフローに適合するツールを探すのではなく、実験の追跡や、MLFlow の定義済みパターンを使用したモデルの追跡とデプロイを重視する場合は、MLFlow が最適です。

比較表

> (出典: 著者) – 機械学習に関するその他のヒントについては、毎週のニュースレターを購読してください

簡単に概要を説明するために、次のライブラリを比較しました。

  • 成熟度: プロジェクトの経過年数と修正およびコミットの数に基づきます。
  • 人気度: 採用率と GitHub スターに基づきます。
  • シンプルさ: 登録と導入の容易さに基づきます。
  • 幅広さ: 各プロジェクトの専門性と適応性に基づきます。
  • 言語: ツールと対話する主な方法に基づきます。

これらは厳密なベンチマークでも科学的なベンチマークでもありませんが、これらのツールがどのように重複し、どのように異なるのかを簡単に理解していただくことを目的としています。 詳細については、以下の直接比較をご覧ください。

ルイージ対エアフロー

Luigi と Airflow は同様の問題を解決しますが、Luigi の方がはるかにシンプルです。 これは単一のコンポーネントに含まれていますが、Airflow にはさまざまな方法で構成できる複数のモジュールがあります。 Airflow にはより大きなコミュニティといくつかの追加機能がありますが、学習曲線ははるかに急です。 具体的には、Airflow はスケジュール管理が非常に強力で、タスクを実行するタイミングを設定するのに役立つカレンダー UI を提供します。 Luigi では、スケジュールに従ってタスクを実行するために、さらにカスタム コードを記述する必要があります。

どちらのツールも、タスクと依存関係を定義するために Python と DAG を使用します。 チームの規模が小さく、すぐに作業を開始する必要がある場合は、Luigi を使用してください。 チームの規模が大きい場合は、Airflow を使用すると、学習曲線を乗り越えた後、初期の生産性の低下からより多くの利益を得ることができます。

ルイージ対アルゴ

Argo は Kubernetes 上に構築されており、各タスクは個別の Kubernetes コンテナとして実行されます。 これは、インフラストラクチャの大部分にすでに Kubernetes を使用している場合には便利ですが、そうでない場合は複雑さが増す可能性があります。 Luigi は、pip や conda などの Python パッケージ管理ツールでインストールできる Python ライブラリです。 Argo は Kubernetes の拡張機能であり、Kubernetes とともにインストールされます。 どちらのツールでもタスクを DAG として定義できますが、Luigi ではこれらの定義を Python で記述し、Argo では YAML を使用します。

すでに Kubernetes に投資していて、すべてのタスクがポッドであることがわかっている場合は、Argo を使用します。 DAG 定義を記述する開発者が Python よりも YAML に慣れている場合も、この点を考慮する必要があります。 Kubernetes を実行しておらず、チームに Python の専門知識がある場合は、Luigi を使用してください。

ルイージ vs キューブフロー

Luigi は一般的なタスク オーケストレーション用の Python ベースのライブラリですが、Kubeflow は機械学習ワークフロー専用の Kubernetes ベースのツールです。 Luigi は一般的なタスクのオーケストレーション用に構築されていますが、Kubeflow には実験の追跡、ハイパーパラメータの最適化、Jupyter ノートブックの提供用の事前構築されたモードがあります。 Kubeflow は、Kubeflow と Kubeflow Pipeline という 2 つの異なるコンポーネントで構成されています。 後者はモデルのデプロイメントと CI/CD に重点を置いており、メインの Kubeflow 機能とは独立して使用できます。

データのクリーニングからモデルの展開まで、さまざまなタスクを調整する必要がある場合は、Luigi を使用します。 すでに Kubernetes を使用しており、実験の追跡やモデルのトレーニングなどの一般的な機械学習タスクをスケジュールする場合は、Kubeflow を使用します。

ルイージ vs MLFlow

Luigi は汎用タスク オーケストレーション システムですが、MLFlow は機械学習のライフサイクルと実験の管理と追跡に役立つ、より専門的なツールです。 Luigi を使用して一般的なタスクと依存関係 (モデルのトレーニングやデプロイなど) を定義できますが、MLFlow を機械学習コードに直接インポートし、そのヘルパー関数を使用して情報 (使用しているパラメーターなど) と成果物 (トレーニング済みのモデルなど) をログに記録することもできます。 また、MLFlow をコマンドライン ツールとして使用して、scikit-learn などの一般的なツールで構築されたモデルを提供したり、AzureML や Amazon SageMaker などの一般的なプラットフォームにデプロイしたりすることもできます。

Airflow 対 Argo

Argo と Airflow の両方でタスクを DAG として定義できますが、Airflow では Python でこれを実行し、Argo では YAML を使用します。 Argo は各タスクを Kubernetes ポッドとして実行しますが、Airflow は Python エコシステム内に存在します。 Canva は Argo を選択する前に両方のオプションを評価しました。詳細な比較とレビューについては、この講演をご覧ください。

より成熟したツールが必要で、Kubernetes を気にしない場合は、Airflow を使用してください。 すでに Kubernetes に投資していて、さまざまなスタックで記述されたさまざまなタスクを実行したい場合は、Argo を使用します。

Airflow と Kubeflow の比較

Airflow は汎用タスク オーケストレーション プラットフォームですが、Kubeflow は実験追跡などの機械学習タスクに特化しています。 どちらのツールでも Python でタスクを定義できますが、Kubeflow は Kubernetes 上でタスクを実行します。 Kubeflow は Kubeflow と Kubeflow Pipelines に分かれています。後者のコンポーネントでは DAG を指定できますが、通常のタスクよりもデプロイメントとモデルの提供に重点を置いています。

さまざまなタスクを実行するための成熟した幅広いエコシステムが必要な場合は、Airflow を使用してください。 Kubernetes をすでに使用していて、機械学習ソリューション用の既成のパターンをさらに必要とする場合は、Kubeflow を使用してください。

Airflow と MLFlow

Airflow は汎用タスク オーケストレーション プラットフォームですが、MLFlow は機械学習ライフサイクルを最適化するために特別に構築されています。 つまり、MLFlow には実験を実行および追跡する機能と、機械学習モデルをトレーニングおよびデプロイする機能があり、Airflow には幅広いユースケースがあり、任意のタスクセットを実行するために使用できます。 Airflow は、タスクを管理およびスケジュールするためのコンポーネントとプラグインのセットです。 MLFlow は、既存の機械学習コードにインポートできる Python ライブラリであり、scikit-learn で記述された機械学習モデルをトレーニングして Amazon SageMaker または AzureML にデプロイするためのコマンドライン ツールでもあります。

機械学習の実験と展開を管理するための、賢明ですぐに使える方法が必要な場合は、MLFlow を使用してください。 より複雑な要件があり、機械学習ライフサイクルの管理方法をより細かく制御したい場合は、Airflow を使用します。

Argo 対 Kubeflow

Kubeflow Pipelines などの Kubeflow の一部は Argo 上に構築されていますが、Argo はあらゆるタスクをオーケストレーションするために構築されているのに対し、Kubeflow は実験の追跡、ハイパーパラメータの調整、モデルの展開など、機械学習に特有のタスクに重点を置いています。 Kubeflow Pipelines は、モデルのデプロイメントと CI/CD に重点を置いた Kubeflow の独立したコンポーネントであり、Kubeflow の他の機能とは独立して使用できます。 これら 2 つのツールはどちらも Kubernetes に依存しているため、すでに Kubernetes を導入している場合はさらに興味深いものになるかもしれません。 Argo では YAML を使用してタスクを定義できますが、Kubeflow では Python インターフェースを使用できます。

Kubernetes Pod として実行される通常のタスクの DAG を管理する必要がある場合は、Argo を使用します。 機械学習ソリューションに重点を置いたツールが必要な場合は、Kubeflow を使用してください。

Argo 対 MLFlow

Argo は、タスクを Kubernetes Pod として定義し、DAG (YAML を使用して定義) として実行できるタスク オーケストレーション ツールです。 MLFlow はより特殊なツールであり、任意のタスクやタスク間の依存関係を定義することはできません。 代わりに、MLFlow を Python ライブラリとして既存の (Python) 機械学習コードベースにインポートし、そのヘルパー関数を使用して成果物とパラメーターをログに記録し、分析と実験の追跡に役立てることができます。 また、MLFlow のコマンドライン ツールを使用して scikit-learn モデルをトレーニングし、Amazon Sagemaker または Azure ML にデプロイしたり、Jupyter ノートブックを管理したりすることもできます。

定期的なタスクを管理する必要があり、それを Kubernetes 上で実行したい場合は、Argo を使用します。 マネージド クラウド プラットフォームを使用して機械学習ライフサイクルを管理するための独自のアプローチが必要な場合は、MLFlow を使用します。

Kubeflow と MLFlow

Kubeflow と MLFlow はどちらも、Airflow や Luigi などの汎用タスク オーケストレーション プラットフォームと比較すると、より小型で、より特化されたツールです。 Kubeflow は Kubernetes に依存していますが、MLFlow は既存の機械学習コードに実験追跡を追加するのに役立つ Python ライブラリです。 Kubeflow を使用すると、各ステップが Kubernetes ポッドである完全な DAG を構築できますが、MLFlow には scikit-learn モデルを Amazon Sagemaker または Azure ML にデプロイする機能が組み込まれています。

<<:  AIはあなたより年上かもしれない

>>:  アストラゼネカはPyTorchベースのアルゴリズムを使用して新薬を発見

推薦する

今年の主要リリース: 人工知能開発レポート 2020

過去10年間で、人工知能は研究室から工業生産へと移行し、従来の産業モデルを再構築し未来をリードする価...

ステップバイステップガイド: FastAPI を使用して YOLO モデルをデプロイする手順

コンピューター ビジョンの分野では、You Only Look Once (YOLO) アルゴリズム...

機械学習の経験を人生の指針に活用する: 学習効率を最大化する方法

[[185313]]原作者 | ライムンド・マンテローラ編集チーム | Aileen、Huang W...

4つの主要な機械学習プログラミング言語の比較: R、Python、MATLAB、Octave

この記事の著者は、R、Python、MATLAB、OCTAVE の 4 つの機械学習プログラミング言...

流行は収まったが、学校の開始は何度も延期されている。プログラムシミュレーションでその理由がわかる

全国的な「オンライン授業」が始まって1か月、湖北省以外の省では新型コロナウイルスの新規感染者もそれほ...

1000 以上の AI エージェントが復活、メタバースの OpenAI バージョンがリリースされる? ChatGPT+VR が「ウエストワールド」を 100% 復元

『ウエストワールド』のビデオゲーム版が現実になった。 YouTube ブロガーの Art from ...

AI列車に乗ってみよう!マーケティングに人工知能を活用する3つの方法

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

C言語の非数値計算でよく使われる5つの古典的なソートアルゴリズム

概要: ソートとは、一連の「順序付けられていない」レコードシーケンスを「順序付けられた」レコードシー...

来年のIT投資の見通しは有望です。成長率はGDPの3倍です。 CIOの75%がAIへの支出を増やす

現在、世界経済の回復は依然として緩やかです。国際通貨基金(IMF)が最近発表した世界経済見通しレポー...

2022年のディープラーニングの5つのトレンド

ディープラーニングは、データから段階的に優れた高度な洞察を抽出するために複数の処理層を活用する人工ニ...

顔認識防止技術でプライバシー漏洩を防ぐ方法

人工知能監視システムに対する懸念から、研究者たちはそれを標的とするツールの開発に取り組んでいる。最近...

マイクロソフトが新たな特許を取得: 移動中のダイナミックなドローン配達システム

海外メディアNeowinによると、マイクロソフトが取得した最新の一連の特許の中に、潜在的な新しい配信...

困難な選択のターミネーター: さまざまな問題に対する機械学習アルゴリズム

データサイエンスを学び始めた頃、特定の問題に対してどのアルゴリズムを選択すればよいのかという疑問によ...

マイクロソフトがOpenAIの理事に就任、アルトマン氏が初めてQ*に回答:残念なリーク

OpenAI の最初のシーズンは本当に終わりました。 ChatGPTがちょうど1周年を迎えようとして...

インテリジェントな仮想アシスタントが2022年に生産性を2倍にする方法

翻訳者 | 張野貴校正 | 孫淑娟 良策インテリジェント仮想アシスタント市場の洞察インテリジェント ...