Azure Machine Learning パイプラインとは
Azure Machine Learning パイプラインは、独立して実行できる完全な機械学習タスクのワークフローです。 Azure Machine Learning パイプラインは、機械学習モデルを生成する上でのベスト プラクティスを標準化するのに役立ち、チームが規模に応じて実行できるようにし、モデル構築の効率を向上させます。
Azure Machine Learning パイプラインが必要な理由
機械学習パイプラインの中核となるのは、完全な機械学習タスクを複数のステップから成るワークフローに分割することです。 各ステップは管理可能なコンポーネントであり、個別に開発、最適化、構成、自動化できます。 ステップは、適切に定義されたインターフェイスを使用して接続されます。 Azure Machine Learning パイプライン サービスにより、パイプラインのステップ間のすべての依存関係が自動的に調整されます。 このモジュール式のアプローチにより、次の 2 つの主な利点が得られます。
MLOps プラクティスを標準化し、スケーラブルなチーム間のコラボレーションをサポートします
Machine Learning 操作 (MLOPs) は、機械学習モデルを構築し、モデルを運用環境に移行するプロセスを自動化します。 これは複雑なプロセスです。 通常、異なるスキルを持つさまざまなチームからのコラボレーションが必要です。 適切に定義された機械学習パイプラインでは、この複雑なプロセスを複数のステップから成るワークフローにまとめ、各ステップを特定のタスクにマッピングして、各チームが個別に作業できるようにすることができます。
たとえば、一般的な機械学習プロジェクトには、データ収集、データ準備、モデル トレーニング、モデル評価、モデル デプロイのステップが含まれます。 通常、データ エンジニアはデータのステップに集中し、データ サイエンティストはモデルのトレーニングと評価にほとんどの時間を費やします。機械学習エンジニアは、モデル デプロイとワークフロー全体の自動化に重点的に取り組みます。 機械学習パイプラインを活用することで、各チームは独自のステップの構築に取り組むだけですみます。 ステップを構築する最良の方法は、機械学習パイプラインで 1 つのステップを実行する自己格納型のコードである、Azure Machine Learning コンポーネント (v2) を使用することです。 さまざまなユーザーによって構築されたこれらのすべてのステップは、最終的にパイプライン定義を通じて 1 つのワークフローに統合されます。 パイプラインは、プロジェクト内のすべてのユーザー向けのコラボレーション ツールです。 パイプラインとそのすべてのステップを定義するプロセスは、各会社の推奨される DevOps プラクティスによって標準化できます。 パイプラインは、さらにバージョン管理および自動化することができます。 ML プロジェクトがパイプラインとして記述されている場合、最適な MLOps プラクティスが既に適用されています。
トレーニングの効率とコスト削減
機械学習パイプラインは、MLOps を実践するためのツールであるだけでなく、大規模なモデル トレーニングの効率を向上させ、コストを削減します。 最新の自然言語モデル トレーニングを例として取り上げます。 これには、大量のデータの前処理と、GPU 集中型トランスフォーマー モデルのトレーニングが必要です。 モデルのトレーニングには、毎回数時間から数日かかります。 モデルを構築する際に、データ サイエンティストは、さまざまなトレーニング コードまたはハイパーパラメーターをテストし、トレーニングを何度も実行して最適なモデル パフォーマンスを実現する必要があります。 これらのトレーニングのほとんどでは、通常、トレーニング間の変更はわずかです。 データ処理からモデル トレーニングまでのトレーニング全体が毎回行われる場合、大きな無駄になります。 機械学習パイプラインを使用すると、結果が変更されていないステップを自動的に計算し、前のトレーニングからの出力を再利用できます。 さらに、機械学習パイプラインでは、さまざまな計算リソースでの各ステップの実行がサポートされています。 そのため、メモリ負荷の高いデータ処理作業やメモリー CPU 使用率の高いマシンでの実行、および計算集中型のトレーニングは、高価な GPU マシンで実行できます。 どの種類のマシンでどのステップを実行するかを適切に選択することで、トレーニング コストを大幅に削減できます。
作業の開始に関するベスト プラクティス
機械学習プロジェクトに既に備わっているものに応じて、機械学習パイプラインを構築する開始点が異なる場合があります。 パイプラインを構築するには、いくつかの一般的な方法があります。
通常、最初のアプローチは、これまでパイプラインを使用したことがなく、MLOps のようなパイプラインを利用したいチームに当てはまります。 このような状況では、通常、データ サイエンティストが、お気に入りのツールを使用して、ローカル環境でいくつかの機械学習モデルを開発しています。 機械学習エンジニアは、データ サイエンティストの出力を運用環境に取り入れる必要があります。 この作業では、元のノートブックまたは Python コードから不要なコードをクリーンアップし、ローカル データからパラメーター化された値にトレーニング入力を変更し、必要に応じてトレーニング コードを複数のステップに分割し、各ステップの単体テストを実行して、最後にすべてのステップを 1 つのパイプラインにラップします。
チームがパイプラインに慣れ、パイプラインを使用して実行する機械学習プロジェクトを増やしたい場合、最初のアプローチは拡張が難しいことがわかります。 2 つ目のアプローチでは、いくつかのパイプライン テンプレートを設定し、それぞれが 1 つの特定の機械学習の問題の解決を試みます。 このテンプレートでは、ステップ数、各ステップの入力と出力、接続性など、パイプライン構造が事前に定義されます。 新しい機械学習プロジェクトを開始するために、チームは最初に 1 つのテンプレート リポジトリをフォークします。 次にチーム リーダーが、取り組む必要があるステップをメンバーに割り当てます。 データ サイエンティストとデータ エンジニアは、通常の作業を行います。 結果に満足したら、事前に定義されたステップに合わせてコードを構造化します。 構造化されたコードがチェックインされると、パイプラインを実行または自動化できます。 変更がある場合、各メンバーはコードの一部に取り組むだけで済み、パイプライン コードの他の部分に触れる必要はありません。
チームが機械学習パイプラインと再利用可能なコンポーネントのコレクションを構築したら、前のパイプラインの複製から機械学習パイプラインを構築したり、既存の再利用可能なコンポーネントを結び付けたりすることを開始できます。 この段階で、チーム全体の生産性が大幅に向上します。
Azure Machine Learning には、パイプラインを構築するためのさまざまな方法が用意されています。 DevOps プラクティスに慣れているユーザーには、CLI を使用することをお勧めします。 Python に精通しているデータ サイエンティストには、Azure Machine Learning SDK v2 を使用したパイプラインの作成をお勧めします。 UI の使用を選ぶユーザーの場合、登録済みのコンポーネントを使用したパイプラインの構築に Designer を使用できます。
どの Azure パイプライン テクノロジを使用すべきか
Azure クラウドには、それぞれ目的が異なる複数の種類のパイプラインが用意されています。 次の表に、さまざまなパイプラインとその用途を示します。
シナリオ | プライマリ ペルソナ | Azure オファリング | OSS オファリング | Canonical パイプ | 長所 |
---|---|---|---|---|---|
モデル オーケストレーション (機械学習) | データ サイエンティスト | Azure Machine Learning パイプライン | Kubeflow パイプライン | データ -> モデル | 分散、キャッシュ、コード優先、再利用 |
データのオーケストレーション (データ準備) | データ エンジニア | Azure Data Factory のパイプライン | Apache Airflow | データ -> データ | 厳密に型指定された移動、データ中心のアクティビティ |
コードとアプリのオーケストレーション (CI/CD) | アプリ開発者/Ops | Azure Pipelines | Jenkins | コード + モデル -> アプリとサービス | ほとんどのオープンで柔軟なアクティビティのサポート、承認キュー、ゲートを使用したフェーズ |
次のステップ
Azure Machine Learning パイプラインは、初期の開発段階で価値の提供を開始する強力な機能です。