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

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

[[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ベースのアルゴリズムを使用して新薬を発見

ブログ    
ブログ    
ブログ    

推薦する

人工知能がチップのルネッサンスを推進

半導体はデジタル時代の基盤技術です。アメリカのシリコンバレーの名はこれに由来しています。過去半世紀に...

人工知能のインダストリー4.0指標8つ

インダストリー 4.0 における AI イニシアチブの主要な運用指標と主要業績評価指標 (KPI) ...

IBMの新しいデータ分析アルゴリズムは、20分で9TBのデータを分析できる

IBMは最近、スイスのチューリッヒ研究所がデータ分析アルゴリズムにおいて画期的な進歩を遂げ、膨大なデ...

2023 年にビジネス リーダーが注目すべき IT の注目点トップ 10

選択の余地はありません。2022年は近年で最も激動の年の一つになるでしょう。 テクノロジーもこの混乱...

130 の大学が人工知能専攻を追加。次の「陥没穴」専攻になるのでしょうか?

大学の専攻の盛衰は、時代の発展と技術の進歩を最もよく物語る証拠でもあります。今日のいわゆる「落とし穴...

トレンドにおける危険とチャンス: 生成 AI の黄金期をどう捉えるか?

ChatGPTは今年9月末に音声チャットと画像認識機能を追加しました。テキスト駆動型と比較して、C...

自然言語処理の他に、Word2Vec で何ができるのでしょうか?

機械学習の手法を使用して問題を解決する場合、適切なデータを持つことが重要です。残念ながら、生データは...

6144個のTPU、5400億個のパラメータ、バグ修正、ジョーク解釈など、GoogleはPathwaysを使用して大規模なモデルをトレーニングしました

Google の次世代アーキテクチャ Pathways は、大規模なモデルのトレーニングに使用されて...

AI企業がソフトウェアサプライチェーンの脆弱性の犠牲になると何が起こるか

OpenAI の侵害を調査し、AI 企業 SSC のハッキングの可能性とその影響の可能性を推測します...

...

「アバター」の脳-脳インターフェースの性能は2~3桁向上した

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

レポート:AI関連職の年間給与は8.9%減少し、収入は2018年より低い

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Google は、99% のプログラマーに勝る AutoML を Kaggle プラットフォームに統合しました。

今後、Kaggle のコンペティションに参加する際には、AutoML を直接送信して、参加する AI...

ChatGLM-6Bを最適化するにはどうすればいいですか?たった 1 行のコード | 最も「流行」のモデル

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...