Azure Machine Learning コンポーネントとは

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

Azure Machine Learning コンポーネントは、機械学習パイプラインで 1 つのステップを実行する自己完結型のコードです。 コンポーネントは関数に似ていて、名前、入力、出力、本体があります。 コンポーネントは Azure Machine Learning パイプラインの構成要素です。

コンポーネントは次の 3 つの部分で構成されています。

  • メタデータ: name、display_name、version、type など。
  • インターフェイス: 入力/出力仕様 (名前、型、説明、既定値など)。
  • コマンド、コード、環境: コンポーネントの実行に必要なコマンド、コード、環境。

Diagram of what a component looks like and how it looks in a pipeline. In addition to screenshots of a component in the CLI, SDK, and portal UI.

コンポーネントを使用する理由

機械学習タスク全体を複数ステップのワークフローに分割するために、機械学習パイプラインを構築することをお勧めします。 そうすることで、すべてのユーザーが個別に特定の手順に取り組むことができます。 Azure Machine Learning では、コンポーネントはパイプライン内の 1 つの再利用可能なステップを表します。 コンポーネントは、パイプライン構築の生産性の向上に役立つように設計されています。 具体的には、コンポーネントでは次のものが提供されます。

  • 適切に定義されたインターフェイス: コンポーネントには、適切に定義されたインターフェイス (入力と出力) が必要です。 インターフェイスを使用すると、ユーザーはステップを簡単に構築して接続できます。 インターフェイスによって、ステップの複雑なロジックが見えなくなり、ステップがどのように実装されるかを理解する負担が軽減されます。

  • 共有と再利用: パイプラインの構成要素として、コンポーネントをパイプライン、ワークスペース、サブスクリプション間で簡単に共有および再利用できます。 あるチームによって構築されたコンポーネントを別のチームが見つけて使うことができます。

  • バージョン管理: コンポーネントはバージョン管理されます。 コンポーネントのプロデューサーは、コンポーネントを改善し続け、新しいバージョンを発行できます。 コンシューマーは、自分のパイプラインで特定のコンポーネント バージョンを使用できます。 これによって互換性と再現性が得られます。

単体テスト可能: コンポーネントは自己完結型のコードです。 コンポーネントの単体テストを簡単に記述できます。

コンポーネントとパイプライン

機械学習パイプラインは、機械学習タスク全体のためのワークフローです。 コンポーネントは、機械学習パイプラインの構成要素です。 コンポーネントを考えるときは、パイプラインのコンテキストを踏まえる必要があります。

コンポーネントを構築するには、まず機械学習パイプラインを定義します。 このためには、完全な機械学習タスクを複数ステップのワークフローに分割する必要があります。 各ステップはコンポーネントです。 たとえば、履歴データを使用して売上予測モデルをトレーニングする単純な機械学習タスクを考えたとき、データ処理、モデル トレーニング、モデル評価のステップを持つシーケンシャル ワークフローの構築が必要な場合もあります。 複雑なタスクの場合は、さらに分解することが必要な場合もあります。 たとえば、1 つのデータ処理ステップを、データ インジェスト、データ クリーニング、データ前処理、特徴エンジニアリングのステップに分割します。

ワークフロー内のステップが定義されたら、次に、パイプライン内の各ステップを接続する方法を指定します。 たとえば、データ処理ステップとモデル トレーニング ステップを接続するには、処理されたデータを含むフォルダーを出力するデータ処理コンポーネントの定義が必要な場合もあります。 トレーニング コンポーネントでは、フォルダーを入力として受け取り、トレーニング済みのモデルを含むフォルダーを出力します。 これらの入力と出力の定義が、コンポーネント インターフェイス定義の一部になります。

ここで、ステップを実行するコードを開発します。 任意の言語 (Python、R など) を使用できます。 コードはシェル コマンドで実行できる必要があります。 開発中に、このステップの実行方法を制御するために、いくつか入力を追加することが必要な場合もあります。 たとえばトレーニング ステップでは、トレーニングを制御するための入力として学習速度やエポック数を追加できます。 これらの追加の入力と、他のステップとの接続に必要な入力と出力が、コンポーネントのインターフェイスです。 シェル コマンドの引数は、入力と出力をコードに渡すのに使用されます。 コマンドとコードを実行する環境を指定する必要があります。 キュレーション環境には、キュレーションされた Azure Machine Learning 環境、Docker イメージ、または conda 環境があります。

最後に、コード、cmd、環境、入力、出力、メタデータを含むすべてのものをコンポーネントにパッケージ化できます。 次に、これらのコンポーネントを接続して、機械学習ワークフローのパイプラインを構築します。 1 つのコンポーネントを複数のパイプラインで使用できます。

コンポーネントを構築する方法の詳細については、以下を参照してください。

次のステップ