チュートリアル: デザイナー - 機械学習モデルをデプロイする

デザイナーを使用して、機械学習モデルをデプロイし、自動車の価格を予測します。 このチュートリアルは、2 部構成のシリーズのパート 2 です。

Note

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

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

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

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

この記事は、CLI v2 および SDK v2 と互換性のない、従来の事前構築済みコンポーネントに適用されます。

チュートリアルのパート 1 では、自動車価格の線形回帰モデルをトレーニングしました。 パート 2 では、そのモデルをデプロイして、他のユーザーがそれを使用できるようにします。 このチュートリアルでは、次の作業を行いました。

  • リアルタイム推論パイプラインを作成する。
  • 推論クラスターを作成する。
  • リアルタイム エンドポイントをデプロイする。
  • リアルタイム エンドポイントをテストする。

前提条件

チュートリアルのパート 1 を完了して、デザイナーで機械学習モデルをトレーニングしてスコア付けする方法を学習します。

重要

このドキュメントで言及しているグラフィカル要素 (Studio やデザイナーのボタンなど) が表示されない場合は、そのワークスペースに対する適切なレベルのアクセス許可がない可能性があります。 ご自分の Azure サブスクリプションの管理者に連絡して、適切なレベルのアクセス許可があることを確認してください。 詳細については、「ユーザーとロールを管理する」を参照してください。

リアルタイム推論パイプラインを作成する

パイプラインをデプロイするためには、まずトレーニング パイプラインをリアルタイム推論パイプラインに変換する必要があります。 このプロセスにより、トレーニング コンポーネントが削除され、要求を処理するための Web サービスの入力と出力が追加されます。

注意

推論パイプラインの作成では、デザイナーの組み込みコンポーネントのみを含むトレーニング パイプラインのみがサポートされ、トレーニング済みモデルを出力するモデルのトレーニングなどのコンポーネントが必要です。

リアルタイム推論パイプラインを作成する

  1. パイプライン ジョブの詳細ページのパイプライン キャンバス上で、[Create inference pipeline] (推論パイプラインの作成)>[Real-time inference pipeline] (リアルタイム推論パイプライン) の順に選択します。

    パイプラインのジョブ詳細ページにおける推論パイプラインの作成のスクリーンショット。

    新しいパイプラインは次のようになります。

    デプロイ準備が完了したパイプラインの予測される構成を示すスクリーンショット。

    [Create inference pipeline](推論パイプラインの作成) を選択すると、以下のようないくつかの処理が行われます。

    • トレーニング済みのモデルが、コンポーネント パレットに [Dataset](データセット) コンポーネントとして格納されます。 これは [マイ データセット] で見つかります。
    • [Train Model](モデルのトレーニング)[Split Data](データの分割) などのトレーニング コンポーネントが削除されます。
    • 保存したトレーニング済みのモデルが再びパイプラインに追加されます。
    • [Web Service Input](Web サービスの入力) および [Web Service Output](Web サービスの出力) コンポーネントが追加されます。 ユーザー データがパイプラインに入力される位置と、データが返される位置が、これらのコンポーネントによって示されます。

    注意

    既定で、 [Web Service Input](Web サービスの入力) では、同じダウンストリーム ポートに接続するコンポーネント出力データと同じデータ スキーマが予期されます。 このサンプルでは、 [Web Service Input](Web サービスの入力)[Automobile price data (Raw)](自動車価格データ (未加工)) は同じダウンストリーム コンポーネントに接続します。そのため、 [Web Service Input](Web サービスの入力) では、 [Automobile price data (Raw)](自動車価格データ (未加工)) と同じデータ スキーマが予期され、ターゲット変数列 price がスキーマに含まれます。 ただし、通常、データにスコアを付けるときは、ターゲット変数の値はわかりません。 このような場合は、 [Select Columns in Dataset](データセット内の列の選択) コンポーネントを使用して、推論パイプライン内のターゲット変数列を削除できます。 ターゲット変数列を削除する [データセット内の列の選択] の出力が、[Web サービスの入力] コンポーネントの出力と同じポートに接続されていることを確認してください。

  2. [送信] を選択し、パート 1 で使用したものと同じコンピューティング先と実験を使用します。

    これが最初のジョブの場合は、パイプラインの実行が完了するまでに最大 20 分かかることがあります。 既定のコンピューティング設定の最小ノード サイズは 0 です。これは、アイドル状態になった後に、デザイナーによってリソースが割り当てられる必要があることを意味します。 コンピューティング リソースが既に割り当てられているため、パイプラインの反復ジョブにかかる時間は短くなります。 さらにデザイナーでは、各コンポーネント用にキャッシュされた結果を使用して、効率を向上させます。

  3. 左側のウィンドウで [ジョブの詳細] リンクを選択して、リアルタイム推論パイプライン ジョブの詳細に移動します。

  4. [ジョブの詳細] ページで [デプロイ] を選択します。

    ジョブの詳細ページでのデプロイを示すスクリーンショット。

推論クラスターを作成する

表示されたダイアログ ボックスで、既存の Azure Kubernetes Service (AKS) クラスターを選択して自分のモデルをデプロイできます。 既存の AKS クラスターがない場合は、次の手順を使用して作成してください。

  1. 表示されたダイアログ ボックスの [Compute](コンピューティング) を選択して [Compute](コンピューティング) ページに移動します。

  2. ナビゲーション リボンで、 [Inference Clusters](推論クラスター)>[+ New](+ 新規) の順に選択します。

    推論クラスターの新規作成ペインに移動する方法を示すスクリーンショット。

  3. 推論クラスター ウィンドウで、新しい Kubernetes サービスを構成します。

  4. [Compute name](コンピューティング名) に「aks-compute」と入力します。

  5. [Region](リージョン) には、使用できる近くのリージョンを選択します。

  6. [作成] を選択します

    Note

    新しい AKS サービスの作成には約 15 分かかります。 プロビジョニングの状態は、 [Inference Clusters](推論クラスター) ページで確認できます。

リアルタイム エンドポイントをデプロイする

AKS サービスのプロビジョニングが完了したら、リアルタイム推論パイプラインに戻ってデプロイを完了します。

  1. キャンバスの上にある [Deploy](デプロイ) を選択します。

  2. [Deploy new real-time endpoint](新しいリアルタイム エンドポイントのデプロイ) を選択します。

  3. 作成した AKS クラスターを選択します。

    新しいリアルタイム エンドポイントの設定方法を示すスクリーンショット。

    リアルタイム エンドポイントの [詳細] 設定を変更することもできます。

    [詳細] 設定 Description
    Application Insights の診断とデータ収集を有効にする Azure Application Insights を有効にして、デプロイされたエンドポイントからデータを収集するかどうか。
    既定値: false。
    スコアリング タイムアウト Web サービスのスコアリング呼び出しに適用するタイムアウト (ミリ秒)。
    既定値: 60000。
    Auto scale enabled(自動スケーリングの有効化) Web サービスの自動スケールを有効にするかどうか。
    既定値: true。
    最小レプリカ数 この Web サービスを自動スケールするときに使用するコンテナーの最小数。
    既定値: 1。
    最大レプリカ数 この Web サービスを自動スケールするときに使用するコンテナーの最大数。
    既定値: 10。
    ターゲット使用率 オートスケーラーがこの web サービスに対してメンテナンスを試行する目標使用率 (最大 100%)。
    既定値: 70。
    更新間隔 自動スケーラーがこの Web サービスのスケーリングを試みる頻度 (秒)。
    既定値: 1。
    CPU 予約容量 この Web サービスに割り当てる CPU コアの数。
    既定値: 0.1。
    メモリ予約容量 この Web サービスに割り当てるメモリの量 (GB 単位)。
    既定値: 0.5。
  4. [デプロイ] を選択します。

    デプロイが完了すると、通知センターからの成功通知が表示されます。 これには数分かかる可能性があります。

    デプロイの通知を示すスクリーンショット。

ヒント

リアルタイム エンドポイント設定ボックスで、 [コンピューティングの種類][Azure コンテナー インスタンス] を選択すると、Azure コンテナー インスタンス (ACI) にデプロイすることもできます。 Azure コンテナー インスタンスは、テストまたは開発に使用されます。 必要な RAM が 48 GB 未満である CPU ベースの小規模なワークロードには、ACI を使用します。

リアルタイム エンドポイントをテストする

デプロイが完了したら、 [エンドポイント] ページに移動して、リアルタイム エンドポイントを表示できます。

  1. [Endpoints](エンドポイント) ページで、デプロイ済みのエンドポイントを選択します。

    [詳細] タブでは、REST URI、Swagger 定義、状態、タグなどの詳細情報を確認できます。

    [Consume](使用) タブでは、サンプル使用コードやセキュリティ キーを検索し、認証方法を設定できます。

    [デプロイ ログ] タブで、リアルタイム エンドポイントの詳細なデプロイ ログを確認できます。

  2. エンドポイントをテストするには、 [テスト] タブに移動します。ここでは、テスト データを入力し、 [テスト] を選択して、エンドポイントの出力を確認します。

リアルタイム エンドポイントを更新する

オンライン エンドポイントは、デザイナーでトレーニングされた新しいモデルで更新できます。 オンライン エンドポイントの詳細ページで、前のトレーニング パイプライン ジョブと推論パイプライン ジョブを見つけます。

  1. トレーニング パイプラインのドラフトは、デザイナーのホームページで直接見つけて変更できます。

    または、トレーニング パイプライン ジョブのリンクを開き、それを新しいパイプライン ドラフトに複製して編集を続行することもできます。

    エンドポイントの詳細ページのトレーニング ジョブのリンクを示すスクリーンショット。

  2. 変更されたトレーニング パイプラインを送信したら、ジョブの詳細ページに移動します。

  3. ジョブが完了したら、[モデルのトレーニング] を右クリックし、[データの登録] を選択します。

    データセットとしてのトレーニング済みモデルの登録を示すスクリーンショット。

    名前を入力し、[ファイル]の種類を選択します。

    新しいデータ資産が選択された、データ資産としての登録のスクリーンショット。

  4. データセットが正常に登録されたら、推論パイプラインのドラフトを開くか、前の推論パイプライン ジョブを新しいドラフトに複製します。 推論パイプラインのドラフトで、[モデルのスコア付け] コンポーネントに接続されている MD-XXXX ノードとして示されている前のトレーニング済みモデルを、新しく登録されたデータセットに置き換えます。

    推論パイプラインを変更する方法を示すスクリーンショット。

  5. トレーニング パイプラインでデータ前処理部分を更新する必要があり、推論パイプラインに更新したい場合、処理は上記のステップとほぼ同じです。

    変換コンポーネントの変換出力をデータ・セットとして登録するだけで済みます。

    次に、推論パイプラインの TD- コンポーネントを、登録したデータセットに手動で置き換えます。

    変換コンポーネントの置換方法を示すスクリーンショット。

  6. 新しくトレーニングされたモデルまたは変換を使用して推論パイプラインを変更した後、それを送信します。 ジョブが完了したら、前にデプロイした既存のオンライン エンドポイントにデプロイします。

    既存のリアルタイム エンドポイントの置換方法を示すスクリーンショット。

制限事項

  • データストアのアクセス制限により、推論パイプラインにデータのインポートまたはデータのエクスポート コンポーネントが含まれている場合、リアルタイム エンドポイントへのデプロイ時にこれらは自動的に削除されます。

  • リアルタイム推論パイプラインにデータセットがあり、それをリアルタイム エンドポイントにデプロイする場合、現在、このフローでは BLOB データストアから登録されたデータセットのみがサポートされています。 他の型データストアのデータセットを使用する場合は、[列の選択] を使用して、すべての列を選択する設定で初期データセットに接続し、[列をファイルとして選択] データセットの出力を登録した後、リアルタイム推論パイプラインの初期データセットを、この新しく登録されたデータセットに置き換えることができます。

  • 推論グラフに、"Web サービス入力" コンポーネントと同じポートに接続されていない "データの手動入力" コンポーネントが含まれている場合、HTTP 呼び出し処理中に "データの手動入力" コンポーネントは実行されません。 回避策は、その "データの手動入力" コンポーネントの出力をデータセットとして登録し、推論パイプラインのドラフトで、"データの手動入力" コンポーネントを登録済みのデータセットに置き換えることです。

    データの手動入力コンポーネントを含んだ推論パイプラインを変更する方法を示すスクリーンショット。

リソースをクリーンアップする

重要

作成したリソースは、Azure Machine Learning のその他のチュートリアルおよびハウツー記事の前提条件として使用できます。

すべてを削除する

作成したすべてのものを使用する予定がない場合は、料金が発生しないように、リソース グループ全体を削除します。

  1. Azure portal で、ウィンドウの左側にある [リソース グループ] を選択します。

    Azure portal でリソース グループを削除する

  2. 一覧から、作成したリソース グループを選択します。

  3. [リソース グループの削除] を選択します。

リソース グループを削除すると、デザイナーで作成したすべてのリソースも削除されます。

個々の資産を削除する

実験を作成したデザイナーで、個々の資産を選択し、[削除] ボタンを選択してそれらを削除します。

ここで作成したコンピューティング ターゲットは、使用されていない場合、自動的にゼロ  ノードに自動スケーリングされます。 このアクションは、料金を最小限に抑えるために実行されます。 コンピューティング ターゲットを削除する場合は、次の手順を実行してください。

アセットを削除する

各データセットを選択し、[登録解除] を選択することによって、ワークスペースからデータセットを登録解除できます。

データセットを登録解除する

データセットを削除するには、Azure portal または Azure Storage Explorer を使用してストレージ アカウントに移動し、これらのアセットを手動で削除します。

次のステップ

このチュートリアルでは、デザイナーで機械学習モデルを作成、デプロイ、および使用する際の主な手順を学習しました。 デザイナーの使用方法の詳細については、次のリンクを参照してください。