モデルをサービスとしてデプロイする

完了

自動機械学習を使用していくつかのモデルをトレーニングした後は、クライアント アプリケーションで使用するサービスとして最適なモデルをデプロイできます。

予測サービスをデプロイする

Azure Machine Learning では、サービスを Azure Container Instances (ACI) として、または Azure Kubernetes Service (AKS) クラスターにデプロイできます。 運用環境のシナリオでは、AKS のデプロイをお勧めします。その場合、推論クラスター コンピューティング ターゲットを作成する必要があります。 この演習では、テストに適したデプロイ ターゲットである ACI サービスを使用します。また、推論クラスターを作成する必要はありません。

  1. Azure Machine Learning スタジオ[自動 ML] ページで、自動機械学習の実験用の実行を選択します。

  2. [詳細] タブで最適なモデルのアルゴリズム名を選択します。

[実行] を選択します。

  1. [モデル] タブで [デプロイ] ボタンを使用して、次の設定を使用してモデルをデプロイします。

    • [名前]: predict-rentals
    • [説明]: 自転車レンタルの予測
    • [コンピューティングの種類]: Azure コンテナー インスタンス
    • [認証を有効にする]: オン
  2. デプロイが開始するのを待ちます。これには数秒かかることがあります。 次に、[モデルの概要] セクションで、predict-rentals サービスの デプロイ状態 を確認します ([実行中] になっています)。 この状態が [成功] に変わるまで待ちます。 [↻ 更新] を定期的に選択する必要があります。

  3. Azure Machine Learning Studio の [エンドポイント] ページを表示し、predict-rentals リアルタイム エンドポイントを選択します。 次に、[消費] タブを選択し、次の情報を確認します。 この情報は、クライアント アプリケーションからデプロイ済みのサービスに接続するために必要です。

    • サービスの REST エンドポイント
    • サービスの主キー

REST エンドポイントとプライマリ キーを確認します。

  1. 横にある ⧉ リンクを使用して、これらの値をクリップボードにコピーできることに注意してください。

デプロイされたサービスをテストする

サービスをデプロイしたので、いくつかの単純なコードを使用してテストできます。

  1. ブラウザーに predict-rentals サービス ページの [消費] ページが開いた状態で、新しいブラウザー タブを開き、Azure Machine Learning Studio の 2 番目のインスタンスを開きます。 次に、新規タブで [ノートブック] ページ ([作成者] の下にあります) を表示します。

  2. [ノートブック] ページの *[My files](マイ ファイル)* の下で 🗋 ボタンを使用して、次の設定の新しいファイルを作成します。

    • [ファイルの場所]: Users/"自分のユーザー名"
    • ファイル名: Test-Bikes.ipynb
    • [ファイルの種類]: ノートブック
    • [Overwrite if already exists](既に存在する場合は上書きする): オン
  3. 新しいノートブックが作成されたら、前に作成したコンピューティング インスタンスが [コンピューティング] ボックスで選択されていること、およびその状態が [実行中] であることを確認します。

  4. ボタンを使用して [エクスプローラー] ウィンドウを折りたたむとスペースが広がり、[Test-Bikes.ipynb] ノートブック タブがフォーカスされます。

  5. ノートブックに作成された四角形のセルに、次のコードを貼り付けます。

    endpoint = 'YOUR_ENDPOINT' #Replace with your endpoint
    key = 'YOUR_KEY' #Replace with your key
    
    import json
    import requests
    
    #An array of features based on five-day weather forecast
    x = [[1,1,2022,1,0,6,0,2,0.344167,0.363625,0.805833,0.160446],
        [2,1,2022,1,0,0,0,2,0.363478,0.353739,0.696087,0.248539],
        [3,1,2022,1,0,1,1,1,0.196364,0.189405,0.437273,0.248309],
        [4,1,2022,1,0,2,1,1,0.2,0.212122,0.590435,0.160296],
        [5,1,2022,1,0,3,1,1,0.226957,0.22927,0.436957,0.1869]]
    
    #Convert the array to JSON format
    input_json = json.dumps({"data": x})
    
    #Set the content type and authentication for the request
    headers = {"Content-Type":"application/json",
            "Authorization":"Bearer " + key}
    
    #Send the request
    response = requests.post(endpoint, input_json, headers=headers)
    
    #If we got a valid response, display the predictions
    if response.status_code == 200:
        y = json.loads(response.json())
        print("Predictions:")
        for i in range(len(x)):
            print (" Day: {}. Predicted rentals: {}".format(i+1, max(0, round(y["result"][i]))))
    else:
        print(response)
    

    注意

    コードの詳細についてはあまり気にしないでください。 ここでは、架空の天気予報データを使用して 5 日間の特徴量を定義し、作成した predict-rentals サービスを使用して、その 5 日間の自転車レンタルを予測します。

  6. predict-rentals サービスの [消費] ページが含まれるブラウザー タブに切り替えて、サービスの REST エンドポイントをコピーします。 ノートブックを含むタブに戻り、キーをコードに貼り付けて YOUR_ENDPOINT を置き換えます。

  7. predict-rentals サービスの [消費] ページが含まれるブラウザー タブに切り替えて、サービスの主キーをコピーします。 ノートブックを含むタブに戻り、キーをコードに貼り付けて YOUR_KEY を置き換えます。

  8. ノートブックを保存した後、セルの横にある ボタンを使用してコードを実行します。 1 日あたりに予想される自転車のレンタル数の予測が得られます。

コードを実行して、自転車のレンタル数の予測を取得します。

  1. 5 日間中の各日の予測レンタル数が返されることを確認します。

これまでに行った内容を振り返ってみましょう。 過去の自転車レンタル データのデータセットを使用してモデルをトレーニングしました。 このモデルでは、季節と気象の "特徴" に基づいて、特定の日に予想される自転車のレンタル数を予測しています。 この場合、"ラベル" は自転車のレンタル数です。