適用対象: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 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 イメージを使います。これには、modeldatacollector の不可欠な依存関係である
libssl 1.0.0
が付属しています。 事前構築済みのイメージを参照できます。
データ収集を有効にする
データ収集は、Azure Machine Learning または他のツールを使用してデプロイするモデルに関係なく、有効にすることができます。
データ収集を有効にするには、以下のことを行う必要があります。
スコアリング ファイルを開きます。
ファイルの先頭に次のコードを追加します。
from azureml.monitoring import ModelDataCollector
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 を使うと、LoanNumber や CustomerId などの他のデータとより簡単にマッピングできます。
Identifier パラメーターは、BLOB でフォルダー構造を構築するために後で使用します。 生データと処理済みデータの区別に使用できます。
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
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)
新しいイメージを作成し、機械学習モデルをデプロイするには、「機械学習モデルを Azure にデプロイする」を参照してください。
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 データにすばやくアクセスする
Azure portal にサインインします。
ワークスペースを開きます。
[ストレージ] を選びます。
次の構文を使って、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 を使用してモデル データを分析する
Power BI Desktop をダウンロードして開きます。
[データの取得] を選んで、[Azure Blob Storage] を選びます。
ストレージ アカウント名を追加し、ストレージ キーを入力します。 この情報は、BLOB で [設定]>[アクセス キー] を選んで確認できます。
[modeldata] コンテナーを選んで、[編集] を選びます。
クエリ エディターで、[名前] 列の下をクリックし、ストレージ アカウントを追加します。
モデルのパスをフィルターに入力します。 特定の年または月のファイルだけを検索する場合は、そのフィルター パスだけを展開します。 たとえば、3 月のデータのみを検索するには、次のフィルター パスを使用します。
/modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3
[名前] の値に基づいて、関連するデータをフィルター処理します。 予測と入力を格納した場合は、それぞれに対するクエリを作成する必要があります。
ファイルを結合するには、[コンテンツ] の列見出しの横にある下向きの二重矢印を選択します。
[OK] を選びます。 データがプリロードされます。
[閉じて適用] を選びます。
入力と予測を追加した場合、テーブルは RequestId の値によって自動的に並べ替えられます。
モデル データでのカスタム レポートの作成を開始します。
Azure Databricks を使用してモデル データを分析する
Azure Databricks ワークスペースを作成します。
Databricks ワークスペースに移動します。
Databricks ワークスペースで、[データのアップロード] を選択します。
[新しいテーブルの作成] を選んで、[他のデータ ソース]>[Azure Blob Storage]>[ノートブックでテーブルを作成] を選びます。
データの場所を更新します。 次に例を示します。
file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/*/*/data.csv" file_type = "csv"
テンプレートでの手順に従って、データを表示および分析します。
次のステップ
収集したデータについてデータの誤差を検出します。