次の方法で共有


運用環境のモデルからデータを収集する

適用対象:Azure Machine Learning SDK v1 for Python

重要

この記事では、Azure Machine Learning SDK v1 の使用に関する情報を提供します。 SDK v1 は 2025 年 3 月 31 日の時点で非推奨となり、サポートは 2026 年 6 月 30 日に終了します。 SDK v1 は、その日付までインストールして使用できます。

2026 年 6 月 30 日より前に SDK v2 に移行することをお勧めします。 SDK v2 の詳細については、「 Azure Machine Learning Python SDK v2SDK v2 リファレンスとは」を参照してください。

この記事では、Azure Kubernetes Service (AKS) クラスターにデプロイされた Azure Machine Learning モデルからデータを収集する方法について説明します。 収集したデータは、Azure Blob ストレージに格納されます。

収集を有効にすると、収集されたデータは次のことに役立ちます。

  • 収集した実稼働データについてデータの誤差を監視する

  • Power BI または Azure Databricks を使って、収集されたデータを分析する

  • モデルの再トレーニングや最適化を行うべきときを、より適切に判断する。

  • 収集されたデータを使ってモデルを再トレーニングする。

制限事項

  • モデル データ収集機能は、Ubuntu 18.04 イメージでのみ機能できます。

重要

2023 年 3 月 10 日の時点で、Ubuntu 18.04 イメージは非推奨になりました。 Ubuntu 18.04 イメージのサポートは、2023 年 4 月 30 日に EOL に達した 2023 年 1 月から削除されます。

MDC 機能は、Ubuntu 18.04 以外のどのイメージとも互換性はなく、Ubuntu 18.04 イメージが非推奨になった後は使用できません。

参照できるその他の情報:

注意

データ収集機能は現在プレビュー段階であり、どのプレビュー機能も運用環境のワークロードにはお勧めできません。

収集されるデータとその格納先

次のデータを収集できます。

  • AKS クラスターにデプロイされた Web サービスからのモデル入力データ。 音声オーディオ、画像、動画は収集 "されません"。

  • 運用環境の入力データを使用したモデルの予測。

注意

このデータの事前集計と事前計算は、現時点では収集サービスの一部ではありません。

出力は Blob Storage に保存されます。 データは Blob Storage に追加されるため、好みのツールを選んで分析を実行できます。

BLOB 内の出力データへのパスは、次の構文のようになります。

/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
# example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv

注意

バージョン 0.1.0a16 より前の Azure Machine Learning SDK for Python のバージョンでは、designation 引数は identifier という名前です。 以前のバージョンでコードを開発した場合、これに応じて更新する必要があります。

前提条件

データ収集を有効にする

データ収集は、Azure Machine Learning または他のツールを使用してデプロイするモデルに関係なく、有効にすることができます。

データ収集を有効にするには、以下のことを行う必要があります。

  1. スコアリング ファイルを開きます。

  2. ファイルの先頭に次のコードを追加します。

    from azureml.monitoring import ModelDataCollector
    
  3. init 関数でデータ収集変数を宣言します。

    global inputs_dc, prediction_dc
    inputs_dc = ModelDataCollector("best_model", designation="inputs", feature_names=["feat1", "feat2", "feat3", "feat4", "feat5", "feat6"])
    prediction_dc = ModelDataCollector("best_model", designation="predictions", feature_names=["prediction1", "prediction2"])
    

    CorrelationId は省略可能なパラメーターです。 モデルで必要ない場合は、使用する必要はありません。 CorrelationId を使うと、LoanNumberCustomerId などの他のデータとより簡単にマッピングできます。

    Identifier パラメーターは、BLOB でフォルダー構造を構築するために後で使用します。 生データと処理済みデータの区別に使用できます。

  4. run(input_df) 関数に次のコード行を追加します。

    data = np.array(data)
    result = model.predict(data)
    inputs_dc.collect(data) #this call is saving our input data into Azure Blob
    prediction_dc.collect(result) #this call is saving our prediction data into Azure Blob
    
  5. AKS にサービスをデプロイしても、データ収集は自動的には true に設定 "されません"。 次の例のように、構成ファイルを更新します。

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    また、この構成を変更して、サービス監視のために Application Insights を有効にすることもできます。

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. 新しいイメージを作成し、機械学習モデルをデプロイするには、「機械学習モデルを Azure にデプロイする」を参照してください。

  7. Web サービス環境の Conda 依存関係に 'Azure-Monitoring' pip パッケージを追加します。

  env = Environment('webserviceenv')
  env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])

データ収集を無効にする

データの収集はいつでも停止できます。 Python コードを使用してデータ コレクションを無効にします。

## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)

データを検証して分析する

任意のツールを選んで、Blob Storage に収集されたデータを分析できます。

BLOB データにすばやくアクセスする

  1. Azure portal にサインインします。

  2. ワークスペースを開きます。

  3. [ストレージ] を選びます。

    ストレージ オプションの選択を示すスクリーンショット。

  4. 次の構文を使って、BLOB の出力データへのパスを指定します。

    /modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
    # example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
    

Power BI を使用してモデル データを分析する

  1. Power BI Desktop をダウンロードして開きます。

  2. [データの取得] を選んで、[Azure Blob Storage] を選びます。

    Power BI の BLOB 設定を示すスクリーンショット。

  3. ストレージ アカウント名を追加し、ストレージ キーを入力します。 この情報は、BLOB で [設定]>[アクセス キー] を選んで確認できます。

  4. [modeldata] コンテナーを選んで、[編集] を選びます。

    Power BI のナビゲーターを示すスクリーンショット。

  5. クエリ エディターで、[名前] 列の下をクリックし、ストレージ アカウントを追加します。

  6. モデルのパスをフィルターに入力します。 特定の年または月のファイルだけを検索する場合は、そのフィルター パスだけを展開します。 たとえば、3 月のデータのみを検索するには、次のフィルター パスを使用します。

    /modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3

  7. [名前] の値に基づいて、関連するデータをフィルター処理します。 予測と入力を格納した場合は、それぞれに対するクエリを作成する必要があります。

  8. ファイルを結合するには、[コンテンツ] の列見出しの横にある下向きの二重矢印を選択します。

    Power BI のコンテンツを示すスクリーンショット。

  9. [OK] を選びます。 データがプリロードされます。

    Power BI のファイルの結合を示すスクリーンショット。

  10. [閉じて適用] を選びます。

  11. 入力と予測を追加した場合、テーブルは RequestId の値によって自動的に並べ替えられます。

  12. モデル データでのカスタム レポートの作成を開始します。

Azure Databricks を使用してモデル データを分析する

  1. Azure Databricks ワークスペースを作成します。

  2. Databricks ワークスペースに移動します。

  3. Databricks ワークスペースで、[データのアップロード] を選択します。

    Databricks の [データのアップロード] オプションの選択を示すスクリーンショット。

  4. [新しいテーブルの作成] を選んで、[他のデータ ソース]>[Azure Blob Storage]>[ノートブックでテーブルを作成] を選びます。

    Databricks でのテーブルの作成を示すスクリーンショット。

  5. データの場所を更新します。 次に例を示します。

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/*/*/data.csv" 
    file_type = "csv"
    

    Databricks のセットアップを示すスクリーンショット。

  6. テンプレートでの手順に従って、データを表示および分析します。

次のステップ

収集したデータについてデータの誤差を検出します