Machine Learning Studio (クラシック) でのアプリケーション ライフサイクル管理

適用対象:適用対象。Machine Learning Studio (classic) 適用対象外。Azure Machine Learning

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

Machine Learning Studio (クラシック) は、Azure クラウド プラットフォームで運用できる機械学習の実験を開発するツールです。 Visual Studio IDE に似ており、1 つのプラットフォームにマージされているスケーラブルなクラウド サービスです。 さまざまな資産のバージョン管理から、自動化された実行とデプロイまで、標準的なアプリケーション ライフサイクル管理 (ALM) のプラクティスを Machine Learning Studio (クラシック) に組み込むことができます。 この記事では、一部のオプションとアプローチについて説明します。

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

実験のバージョン管理

実験のバージョン管理に推奨される方法は 2 つあります。 組み込みの実行履歴に依存することも、外部で管理するために実験を JSON 形式でエクスポートすることもできます。 それぞれのアプローチには長所と短所があります。

実行履歴を使用した実験のスナップショット

Machine Learning Studio (クラシック) の学習実験の実行モデルの実験エディターで [実行] をクリックするたびに、その実験の不変スナップショットがジョブ スケジューラに送信されます。 このスナップショットの一覧を表示するには、実験エディター ビューのコマンド バーにある [実行履歴] をクリックします。

[実行履歴] ボタン

実験が実行のために送信されてスナップショットが取得された時点の実験の名前をクリックすると、スナップショットをロック モードで開くことができます。 現在の実験を表す、一覧の最初の項目のみが編集できる状態になります。 また、各スナップショットは、[Finished (Partial run) (完了 (部分的に実行))]、[失敗]、[Failed (Partial run) (失敗 (部分的に実行))]、[ドラフト] などのさまざまな状態になります。

Run History list

開いたら、スナップショットの実験を新しい実験として保存し、それを変更できます。 実験のスナップショットに、バージョンが更新されたトレーニング済みのモデル、変換、データセットなどの資産が含まれている場合、そのスナップショットは、スナップショットが取得された元のバージョンへの参照を保持します。 ロックされているスナップショットを新しい実験として保存すると、Machine Learning Studio (クラシック) によって、これらの資産の新しいバージョンの存在が検出され、新しい実験に自動的に更新されます。

実験を削除すると、その実験でのすべてのスナップショットが削除されます。

JSON 形式で実験のエクスポートとインポート

実行で送信されるたびに、実行履歴のスナップショットは、実験の変更不可バージョンを Machine Learning Studio (クラシック) に保持します。 実験のローカル コピーを保存し、Team Foundation Server などのお気に入りのソース管理システムにチェックインして、後でそのローカル ファイルから実験を再作成することもできます。 Machine Learning Studio (クラシック) PowerShell コマンドレット Export-AmlExperimentGraph および Import-AmlExperimentGraph を使用して、それを実行できます。

JSON ファイルは実験グラフのテキスト表現ですが、データセットやトレーニング済みのモデルなど、ワークスペース内の資産への参照を含む場合があります。 その資産のシリアル化されたバージョンは含みません。 このため、JSON ドキュメントをワークスペースにもう一度インポートしようとする場合、これらの参照先資産は実験で参照されているのと同じ資産 ID で既に存在する必要があります。 そうでない場合は、インポートされた実験にアクセスできません。

トレーニング済みのモデルのバージョン管理

Machine Learning Studio (クラシック) 内のトレーニング済みのモデルは、iLearner ファイル (.iLearner) と呼ばれる形式にシリアル化され、ワークスペースに関連付けられている Azure Blob Storage アカウント内に格納されます。 iLearner ファイルのコピーを取得する 1 つの方法として、再トレーニング API の使用があります。 この記事では、再トレーニング API の動作について説明します。 手順の概要は次のとおりです。

  1. トレーニング実験を設定します。
  2. モデルのトレーニング モジュール、またはモデル ハイパーパラメーターの調整や R モデルの作成など、トレーニング済みのモデルを生成するモジュールに、Web サービス出力ポートを追加します。
  3. トレーニング実験を実行し、モデルのトレーニング Web サービスとしてデプロイします。
  4. トレーニング Web サービスの BES エンドポイントを呼び出し、目的の iLearner ファイル名とそれが格納される Blob Storage アカウントの場所を指定します。
  5. BES の呼び出しが完了したら、生成された iLearner ファイルを取得します。

iLearner ファイルを取得する別の方法として、PowerShell コマンドレット Download-AmlExperimentNodeOutput の使用があります。 これはモデルをプログラムによって再トレーニングする必要なしに iLearner ファイルのコピーを取得する場合に簡単になります。

トレーニング済みのモデルを含む iLearner ファイルが取得されたら、独自のバージョン管理戦略を採用できます。 この戦略は、接頭辞/接尾辞を名前付け規則として適用し、iLearner ファイルを Blob Storage に残すか、またはバージョン管理システムにコピー/インポートするだけの単純なものです。

その後、保存されている iLearner ファイルをデプロイされた Web サービスからのスコア付けのために使用できます。

バージョン管理 Web サービス

Machine Learning Studio (クラシック) の実験からは、2 種類の Web サービスをデプロイできます。 従来の Web サービスは、実験およびワークスペースと緊密に結合されています。 新しい Web サービスは Azure Resource Manager のフレームワークを活用しており、元の実験とワークスペースのどちらとも結合されなくなりました。

従来の Web サービス

従来の Web サービスをバージョン管理するには、Web サービス エンドポイントのコンストラクトを利用できます。 典型的なフローを次に示します。

  1. 予測実験から、既定のエンドポイントを含む新しい従来の Web サービスをデプロイします。
  2. 現在のバージョンの実験/トレーニング済みのモデルを公開する ep2 という名前の新しいエンドポイントを作成します。
  3. 戻って予測実験とトレーニング済みのモデルを更新します。
  4. 予測実験を再デプロイすると、それによって既定のエンドポイントが更新されます。 しかし、ep2 は変更されません。
  5. ep3 という名前の追加のエンドポイントを作成します。新しいバージョンの実験とトレーニング済みのモデルを公開するエンドポイントです。
  6. 必要に応じて手順 3 に戻ります。

時間の経過と共に多くのエンドポイントが同じ Web サービスで作成される場合があります。 それぞれが特定の時点のバージョンのトレーニング済みのモデルを含む特定の時点の実験のコピーを表します。 次に、外部のロジックを使用して、呼び出すエンドポイントを決定します。これは事実上、スコア付けの実行用のトレーニング済みのモデルのバージョンを選択することを意味します。

また、多数の同一の Web サービス エンドポイントを作成した後、異なるバージョンの iLearner ファイルのパッチをエンドポイントに適用して同様の効果を得ることもできます。 この記事では、これを実現する方法について詳しく説明します。

新しい Web サービス

新しい Azure Resource Manager ベースの Web サービスを作成する場合は、エンドポイント コンストラクトを使用できなくなります。 代わりに、Export-AmlWebServiceDefinitionFromExperiment PowerShell コマンドレットを使用するか、デプロイされた Resource Manager ベースの Web サービスから Export-AzMlWebservice PowerShell コマンドレットを使用して、予測実験から Web サービス定義 (WSD) ファイルを JSON 形式で生成できます。

WSD ファイルをエクスポートしてそれをバージョン管理した後で、別の Azure リージョンで別の Web サービス プランの新しい Web サービスとして WSD をデプロイすることもできます。 適切なストレージ アカウント構成だけではなく、新しい Web サービス プラン ID を指定してください。 異なる iLearner ファイルにパッチを適用するには、WSD ファイルを変更し、トレーニング済みのモデルの場所の参照を更新して、それを新しい Web サービスとしてデプロイできます。

実験の実行とデプロイの自動化

ALM の重要な側面は、アプリケーションの実行とデプロイのプロセスを自動化できるようにすることです。 Machine Learning Studio (クラシック) では、PowerShell モジュールを使用してこれを実現できます。 ここでは、Machine Learning Studio (クラシック) PowerShell モジュールを使用した、標準的な ALM 自動化実行およびデプロイ プロセスのエンドツーエンドの手順の例を示します。 各手順は、その手順の実行に使用できる 1 つまたは複数の PowerShell コマンドレットにリンクされています。

  1. データセットをアップロードします。
  2. ワークスペースまたはギャラリーからワークスペースにトレーニング実験をコピーするか、エクスポートされた実験をローカル ディスクからインポートします。
  3. トレーニング実験でデータセットを更新します。
  4. トレーニング実験を実行します。
  5. トレーニング済みのモデルを昇格させます。
  6. ワークスペースに予測実験をコピーします。
  7. 予測実験でトレーニング済みのモデルを更新します。
  8. 予測実験を実行します。
  9. 予測実験から Web サービスをデプロイします。
  10. Web サービス RRS または BES エンドポイントをテストします。

次のステップ