Azure Machine Learning スタジオでコンポーネントを使用して機械学習パイプラインを作成して実行する

適用対象: Azure CLI ML 拡張機能 v2 (現行)

この記事では、Azure Machine Learning スタジオとコンポーネントを使用して、機械学習パイプラインを作成して実行する方法について説明します。 コンポーネントを使用せずにパイプラインを作成することはできますが、コンポーネントによって柔軟性と再利用性が向上します。 Azure Machine Learning パイプラインは、YAML に定義して CLI から実行したり、Python で作成したり、ドラッグアンドドロップ UI を使って Azure Machine Learning スタジオ デザイナーで作成したりできます。 このドキュメントでは、Azure Machine Learning スタジオ デザイナーの UI に焦点を当てています。

前提条件

Note

デザイナーは、従来の事前構築済みコンポーネント (v1) とカスタム コンポーネント (v2) の 2 種類のコンポーネントをサポートします。 これら 2 種類のコンポーネントには互換性がありません。

従来の事前構築済みコンポーネントは、主にデータ処理や、回帰や分類などの従来の機械学習タスク向けの事前構築済みのコンポーネントを提供します。 この種類のコンポーネントは引き続きサポートされますが、新しいコンポーネントは追加されません。

カスタム コンポーネントを使用すると、独自のコードをコンポーネントとしてラップすることができます。 これは、ワークスペース間での共有と、Studio、CLI v2、SDK v2 インターフェイス間でのシームレスな作成をサポートします。

新しいプロジェクトでは、AzureML V2 と互換性があり、新しく更新され続けるカスタム コンポーネントを使用することを強くお勧めします。

この記事は、カスタム コンポーネントに適用されます。

ワークスペースにコンポーネントを登録する

UI のコンポーネントを使用してパイプラインを構築するには、まずコンポーネントをワークスペースに登録する必要があります。 UI、CLI、または SDK を使用してコンポーネントをワークスペースに登録し、ワークスペース内でコンポーネントを共有および再利用できるようにします。 登録済みコンポーネントは自動バージョン管理に対応しており、コンポーネントを更新できる一方、古いバージョンを必要とするパイプラインの動作も引き続き維持されます。

次の例では、UI を使用してコンポーネントを登録します。コンポーネントのソース ファイルazureml-examples リポジトリcli/jobs/pipelines-with-components/basics/1b_e2e_registered_components ディレクトリにあります。 最初にリポジトリをローカルにクローンする必要があります。

  1. Azure Machine Learning ワークスペースで、[コンポーネント] ページに移動し、[新しいコンポーネント] を選択します (2 つのスタイル ページのいずれかが表示されます)。

[コンポーネント] ページの登録エントリ ボタンを示すスクリーンショット。

アーカイブを含めることができる [コンポーネント] ページの登録エントリ ボタンを示すスクリーンショット。

この例では、ディレクトリ内train.yml を使用します。 この YAML ファイルでは、このコンポーネントの名前、種類、インターフェイス (入力と出力、コード、環境、コマンドをなど) を定義します。 このコンポーネントの train.py のコードは ./train_src フォルダーの下にあり、このコンポーネントの実行ロジックを記述しています。 コンポーネントのスキーマの詳細については、コマンド コンポーネントの YAML スキーマのリファレンスを参照してください。

注意

UI でコンポーネントを登録する際は、コンポーネントの YAML ファイルに定義されている code は、YAML ファイルがある現在のフォルダーまたはサブフォルダーのみをポイントできます。つまり、UI で親ディレクトリを認識できないため、code には ../ を指定できません。 additional_includes でポイントできるのは、現在のフォルダーまたはサブフォルダーのみです。 現在、UI では、command 型のコンポーネントの登録のみがサポートされています。

  1. [フォルダー] からのアップロード を選択し、アップロードする 1b_e2e_registered_components フォルダーを選択します。 ドロップダウン リストから train.yml を選択します。

ローカル フォルダーからのアップロードを示すスクリーンショット。

  1. 下部にある [次へ] を選択すると、このコンポーネントの詳細を確認できます。 確認したら、[作成] を選択して登録プロセスを完了します。

  2. 前の手順を繰り返し、score.ymleval.yml を使用して Score および Eval コンポーネントも登録します。

  3. 3 つのコンポーネントを正常に登録したら、スタジオ UI でコンポーネントを確認できます。

コンポーネント ページの登録されたコンポーネントを示すスクリーンショット。

登録済みコンポーネントを使用してパイプラインを作成する

  1. デザイナーで新しいパイプラインを作成します。 [カスタム] オプションを必ず選択してください。

    デザイナー ホームページでの新しいパイプラインの作成を示すスクリーンショット。

  2. 自動生成された名前の横にある鉛筆アイコンを選択し、パイプラインにわかりやすい名前を付けます。

    パイプラインの名前変更を示すスクリーンショット。

  3. デザイナー アセット ライブラリに、[データ][モデル][コンポーネント] のタブが表示されます。 [コンポーネント] タブに切り替えると、前のセクションで登録したコンポーネントを確認できます。 コンポーネントが多すぎて見つからない場合は、コンポーネント名で検索できます。

    資産ライブラリの登録されたコンポーネントを示すスクリーンショット。

    前のセクションで登録した trainscoreeval の各コンポーネントを見つけ、キャンバスにドラッグ アンド ドロップします。 既定では、コンポーネントの既定バージョンが使用されますが、コンポーネントの右側のペインで特定のバージョンに変更できます。 コンポーネントの右ペインは、コンポーネントをダブルクリックすると表示されます。

    コンポーネントのバージョン変更を示すスクリーンショット。

    この例では、このパスの下にあるサンプル データを使用します。 ワークスペースにデータを登録するには、デザイナー アセット ライブラリの > [データ] タブで、[追加] アイコンを選択します。Type = Folder(uri_folder) を設定した後、ウィザードに従ってデータを登録します。 データ型は、train コンポーネントの定義に合わせて uri_folder にする必要があります。

    データの追加を示すスクリーンショット。

    次に、データをキャンバスにドラッグ アンド ドロップします。 パイプライン全体の表示は次のスクリーンショットのようになります。

    パイプラインの下書きを示すスクリーンショット。

  4. キャンバス内で、接続をドラッグし、データとコンポーネントの間を接続します。

    パイプラインの接続を示す GIF アニメーション。

  5. コンポーネントの 1 つをダブルクリックすると、そのコンポーネントの構成操作を行う右側のペインが表示されます。

    コンポーネントのパラメーター設定を示すスクリーンショット。

    数値、整数、文字列、ブールなどのプリミティブ型の入力を持つコンポーネントの場合は、コンポーネントの詳細ペインの [入力] セクションで、そのような入力値を変更できます。

    また、出力設定 (コンポーネントの出力を格納する場所) と実行設定 (コンポーネントを実行するコンピューティング先) も右側のペインで変更できます。

    次に、train コンポーネントの max_epocs 入力をパイプライン レベルの入力に昇格させます。 そうすると、毎回異なる値をこの入力に割り当ててからパイプラインを送信できるようになります。

    コンポーネントの入力をパイプライン レベルの入力に昇格させる方法を示すスクリーンショット。

注意

カスタム コンポーネントとデザイナーの従来の事前構築済みコンポーネントを一緒に使用することはできません。

パイプラインを送信する

  1. 右上隅の [構成と送信] を選択して、パイプラインを送信します。

    [構成と送信] ボタンを示すスクリーンショット。

  2. 詳細な手順を案内するウィザードが表示されます。ウィザードに従ってパイプライン ジョブを送信します。

送信ウィザードを示すスクリーンショット。

[基本] ステップでは、実験、ジョブの表示名、ジョブの説明などを構成できます。

[入力と出力] ステップでは、パイプライン レベルに昇格させた入出力を構成できます。 前の手順で train コンポーネントの max_epocs をパイプライン入力に昇格させたので、ここでは、max_epocs の値の確認と割り当てができます。

[ランタイムの設定] では、パイプラインの既定のデータストアと既定のコンピューティングを構成できます。 これは、パイプライン内のすべてのコンポーネントに適用される既定のデータストアとコンピューティングです。 ただし、個別のコンポーネントに対して異なるコンピューティングまたはデータストアを明示的に設定した場合は、そのコンポーネント レベルの設定が優先されます。 それ以外の場合はパイプラインの既定値が使用されます。

[レビュー + 送信] ステップは、送信する前にすべての構成を確認するための最後のステップです。 このパイプラインを既に送信したことがある場合は、前回の構成がウィザードに記憶されています。

パイプライン ジョブを送信すると、ジョブの詳細情報のリンクを記載したメッセージが上部に表示されます。 このリンクを選択して、ジョブの詳細を確認できます。

送信完了のメッセージを示すスクリーンショット。

次の手順