從生產環境中的模型收集資料

適用於:Python SDK azureml v1

本文將說明如何從部署在 Azure Kubernetes Service (AKS) 叢集的 Azure Machine Learning 模型中收集資料。 然後將收集到的資料儲存在 Azure Blob 儲存體中。

啟用收集之後,您收集的資料就可協助您:

限制

  • 模型資料收集功能只能與 Ubuntu 18.04 映像搭配運作。

重要

自 2023 年 3 月 10 日起,Ubuntu 18.04 映像現已淘汰。 對於 Ubuntu 18.04 映像的支援會從 2023 年 1 月起中止,且其會在 2023 年 4 月 30 日到達 EOL。

MDC 功能與 Ubuntu 18.04 以外的任何映像都不相容,其在 Ubuntu 18.04 映像淘汰後就無法使用。

如需詳細資訊,您可以參閱:

注意

資料收集功能目前處於預覽狀態,不建議將任何預覽功能用於生產工作負載。

收集的內容和儲存位置

下列是可收集的資料:

  • 來自 AKS 叢集中所部署 Web 服務的模型輸入資料。 不會收集語音音訊、影像和影片。

  • 使用生產輸入資料的模型預測。

注意

這項資料的 Preaggregation 和 precalculations 目前不是收集服務的一部分。

輸出會儲存在 Blob 儲存體中。 因為資料會新增至 Blob 儲存體,所以您可以選擇您慣用的工具來執行分析。

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

注意

在適用於 Python 的 Azure Machine Learning SDK 0.1.0a16 版之前,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. 將 'Azure-Monitoring' pip 套件新增至 Web 服務環境的 Conda 相依性:

  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 儲存體中收集的資料。

快速存取 Blob 資料

  1. 登入 Azure 入口網站

  2. 開啟工作區。

  3. 選取儲存體

    Select the Storage option

  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 儲存體

    Power BI blob setup

  3. 新增您的儲存體帳戶名稱並輸入您的儲存體金鑰。 您可以在 Blob 中的 [設定]>[存取金鑰] 中找到這項資訊。

  4. 選取模型資料容器,然後選取 [編輯]

    Power BI Navigator

  5. 在查詢編輯器中的 [名稱] 資料行下方按一下,然後新增您的儲存體帳戶。

  6. 在篩選中輸入您的模型路徑。 如果您只想查看特定年份或月份的檔案,只要展開篩選路徑即可。 例如,如果只要查看三月的資料,請使用此篩選路徑:

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

  7. 根據 [名稱] 值來篩選與您相關的資料。 如果您儲存了預測和輸入,則需要分別為這兩個項目建立查詢。

  8. 選取 [內容] 資料行標題旁的向下雙箭號,可合併這些檔案。

    Power BI Content

  9. 選取 [確定]。 資料會預先載入。

    Power BI Combine Files

  10. 選取關閉並套用

  11. 如果您新增了輸入和預測,您的資料表就會自動以 RequestId 值排序。

  12. 開始建置模型資料的自訂報告。

使用 Azure Databricks 分析模型資料

  1. 建立 Azure Databricks 工作區

  2. 移至 Databricks 工作區。

  3. 在 Databricks 工作區中,選取 [上傳資料]

    Selecting Databricks Upload Data option

  4. 選取 [建立新資料表],然後選取 [其他資料來源]>[Azure Blob 儲存體]>[在 Notebook 中建立資料表]

    Databricks table creation

  5. 更新您的資料位置。 以下是範例:

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/*/*/data.csv" 
    file_type = "csv"
    

    Databricks setup

  6. 請遵循範本上的步驟,以便檢視及分析您的資料。

下一步

在您收集的資料上偵測資料漂移