タスクオーケストレーションツールとワークフロー 最近、タスクとデータのワークフローをオーケストレーションするための新しいツール (「MLOps」と呼ばれることもあります) が登場しました。 これらのツールの数が多すぎると、どれを使用するか選択したり、それらがどのように重複しているかを把握したりすることが困難になる可能性があるため、最も人気のあるツールのいくつかを比較することにしました。 > Airflowが最も人気があり、次にLuigiが続きます。新しい候補もいくつかあり、 全体的に、Apache Airflow は最も人気があり、最も用途の広いツールですが、Luigi も同様のツールであり、簡単に始めることができます。 Argo は、チームがすでに Kubernetes を使用している場合によく使用されるツールの 1 つですが、Kubeflow と MLFlow は、機械学習モデルのデプロイや実験の追跡に関連する、よりニッチな要件に対応します。 詳細な比較に入る前に、タスク オーケストレーションに関連するより広範な概念を理解しておくと役立ちます。 タスクオーケストレーションとは何ですか? また、なぜ便利なのですか? 小規模なチームでは、データのクリーニング、機械学習モデルのトレーニング、結果の追跡、実稼働サーバーへのモデルのデプロイなどの手動の管理タスクから始めることがよくあります。 チームとソリューションの規模が大きくなるにつれて、反復的なステップの数も増えます。 これらのタスクを確実に実行することもさらに重要になります。 これらのタスクが相互に依存する方法の複雑さも増しています。 最初は、一連のタスクを毎週または毎月実行することをお勧めします。 これらのタスクは特定の順序で実行する必要があります。 成長するにつれて、そのパイプラインは動的なブランチを持つネットワークになります。 場合によっては、一部のタスクが他のタスクをトリガーし、これらのタスクが最初に実行される他のいくつかのタスクに依存することがあります。 このネットワークは、各タスクとそれらの間の依存関係をモデル化する DAG (有向非巡回グラフ) としてモデル化できます。 > パイプラインは、各タスクが最大1つの上流依存関係と最大1つの下流依存関係を持つ制限付きDAGです。 ワークフロー オーケストレーション ツールを使用すると、すべてのタスクとそれらの相互依存関係を指定して DAG を定義できます。 次に、ツールはこれらのタスクをスケジュールどおりに正しい順序で実行し、失敗したタスクを再試行してから次のタスクを実行します。 また、進捗状況を監視し、障害が発生した場合はチームに通知します。 Jenkins などの CI/CD ツールは、コードを自動的にテストおよびデプロイするためによく使用されます。これらのツールとタスク オーケストレーション ツールには大きな類似点がありますが、重要な違いもあります。 理論的には、これらの CI/CD ツールを使用して動的で相互にリンクされたタスクをオーケストレーションできますが、ある程度の複雑さになると、代わりに Apache Airflow などのより一般的なツールを使用する方が簡単になります。 全体として、オーケストレーション ツールの目的は、集中化され、反復可能で、再現可能で、効率的なワークフロー、つまりすべての自動化タスクの仮想コマンド センターを確保することです。 それを念頭に置いて、最も人気のあるワークフロー ツールのいくつかを比較してみましょう。 どれを使うか教えてください おそらく以下を使用する必要があります:
比較表 > (出典: 著者) – 機械学習に関するその他のヒントについては、毎週のニュースレターを購読してください 簡単に概要を説明するために、次のライブラリを比較しました。
これらは厳密なベンチマークでも科学的なベンチマークでもありませんが、これらのツールがどのように重複し、どのように異なるのかを簡単に理解していただくことを目的としています。 詳細については、以下の直接比較をご覧ください。 ルイージ対エアフロー 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 にデプロイする機能が組み込まれています。 |
>>: アストラゼネカはPyTorchベースのアルゴリズムを使用して新薬を発見
大規模言語モデル (LLM) は、さまざまな自然言語タスクで優れたパフォーマンスを発揮しています。た...
出典: @CCTVニュース【最高裁:顔認証は、居住コミュニティの入退出の唯一の確認方法として強制して...
[[336768]]食べ物を注文した後、カメラをかざすだけで支払いが完了します。ホテルに宿泊する場...
大規模言語モデルは優れたパフォーマンスを持ち、ゼロショットまたは少数ショットのプロンプトで新しいタス...
人工知能 (AI) モデルのトレーニングは単純に思えるかもしれませんが、そうではありません。 AI ...
9月1日、成都地下鉄全線で「スマート旅客サービスプラットフォーム」がオンラインで開始されました。この...
さまざまな言語、視覚、ビデオ、オーディオなどの大規模モデルのパフォーマンスが向上し続けるにつれて、マ...
11月5日、Wave Summit+2019 Deep Learning Developer Sum...
AI画像生成は秒単位のスピードに達しました。描画を完了するには4ステップの推論しかかからず、最速では...
5月12日、第12回中国道路交通安全製品博覧会及び公安交通警察装備展示会(以下:交通博覧会)が重慶...
エッジと極端エッジの間でこれがどのように展開するか、また無線アクセス ネットワークにどのような階層が...
Google は、ジャーナリストの記事作成を「支援」すると主張し、新しい人工知能ツール Genesi...
人間の想像力を幅広い臨床応用に活用するとなると、医療用人工知能の道のりはまだまだ長い。 [[2761...