次の方法で共有


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

適用対象: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 CLI と Python SDK v2 とは」 および SDK 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 サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。

  • Azure Machine Learning ワークスペース、スクリプトを保存するローカル ディレクトリ、および Azure Machine Learning SDK for Python をインストールする必要があります。 これらのインストール方法については、開発環境を構成する方法に関するページを参照してください。

  • AKS にデプロイするトレーニング済みの機械学習モデルが必要です。 モデルがない場合は、画像分類モデルのトレーニングに関するチュートリアルを参照してください。

  • AKS クラスターが必要です。 モデルを作成してデプロイする方法については、「機械学習モデルを Azure にデプロイする」を参照してください。

  • 環境を設定し、Azure Machine Learning Monitoring SDK をインストールします。

  • Ubuntu 18.04 に基づく Docker イメージを使います。これには、libssl 1.0.0 の不可欠な依存関係である が付属しています。 事前構築済みのイメージを参照できます。

データ収集を有効にする

データ収集は、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. テンプレートでの手順に従って、データを表示および分析します。

次のステップ

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