ModelDataCollector 類別

定義模型資料收集器,可用來收集資料至 Blob 儲存體的 Azure Machine Learning AKS WebService 部署。

ModelDataCollector 類別可讓您在 Azure Machine Learning AKS 部署中定義模型的資料收集器。 資料收集器物件可用來收集工作區 Blob 儲存體的模型資料,例如輸入和預測。 在部署中啟用模型資料收集時,收集的資料會顯示在下列容器路徑中,以 csv 檔案的形式顯示:/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{指定}/{year}/{month}/{day}/{collection_name}/{.csv

ModelDataCollector 建構函式。

啟用模型資料收集時,資料會傳送至下列容器路徑:/modeldata/{workspace}/{webservice_name}/{model_name}/{model_version}/{指定}/{year}/{month}/{day}/{collection_name}.csv

繼承
builtins.object
ModelDataCollector

建構函式

ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')

參數

名稱 Description
model_name
必要
str

要收集資料的模型名稱。

designation
str

資料收集位置的唯一指定。 支援的指定為 「輸入」、「預測」、「標籤」、「訊號」和「一般」。

預設值: default
feature_names

提供時會變成 csv 標頭的功能名稱清單。

預設值: None
workspace
str

Azure Machine Learning 工作區的識別碼,格式為 {subscription_id}/{resource_group}/{workspace_name}。 當模型透過 Azure Machine Learning 運作時會自動填入。

預設值: default/default/default
webservice_name
str

此模型目前部署所在的 Web 服務名稱。 當模型透過 Azure Machine Learning 運作時會自動填入。

預設值: default
model_version
str

模型的版本。 當模型透過 Azure Machine Learning 運作時會自動填入。

預設值: default
collection_name
str

ModelDataCollector 收集資料的檔案名。 此參數只會考慮 「訊號」和「一般」指定。 針對其他類型的指定,指定名稱會當做檔案名使用。

預設值: default

備註

目前,ModelDataCollector 僅適用于 Azure Machine Learning AKS 部署。 若要在部署內收集模型資料,您需要執行下列步驟:

  • 更新您的映射entry_script,以將 ModelDataCollector 物件 () 並收集語句 (s) 。 您可以在腳本中定義多個 ModelDataCollector 物件,例如一個用於輸入,另一個用於相同模型的預測。 如需如何定義和使用entry_script的詳細資訊,請參閱下列類別: InferenceConfig

  • 在 AKS 模型部署步驟中設定enable_data_collection旗標。 部署模型之後,您可以使用此旗標來開啟/關閉模型資料收集,而不需修改您的entry_script。 如需如何設定模型部署的詳細資訊,請參閱下列類別: AksWebservice

下列程式碼片段示範如何使用 ModelDataCollection 顯示entry_script的外觀:


   from azureml.monitoring import ModelDataCollector

   def init():
       global inputs_dc

       # Define your models and other scoring related objects
       # ...

       # Define input data collector to model "bestmodel". You need to define one object per model and
       # designation. For the sake of simplicity, we are only defining one object here.
       inputs_dc = ModelDataCollector(model_name="bestmodel", designation="inputs", feature_names=["f1", "f2"])

   def run(raw_data):
       global inputs_dc

       # Convert raw_data to proper format and run prediction
       # ...

       # Use inputs_dc to collect data. For any data that you want to collect, you need to call collect method
       # on respective ModelDataCollector objects. For the sake of simplicity, we are only working on a single
       # object.
       inputs_dc.collect(input_data)

上述範例說明有關 ModelDataCollector 的幾個事項。 首先,物件是針對每個模型和每個指定來定義,在此案例中為 「bestmodel」 和 「inputs」。 其次,ModelDataCollector 預期表格式資料為輸入,並將資料維護為 csv 檔案。 您可以提供選擇性功能名稱來設定這些 csv 檔案的標頭。

下列程式碼片段顯示如何在模型部署期間啟用 ModelDataCollector:


   webservice_config = AksWebservice.deploy_configuration(collect_model_data=True)
   Model.deploy(ws, "myservice", [model], inference_config, webservice_config, aks_cluster)

部署 Azure Machine Learning AKS WebService 並在服務上執行評分之後,所收集的資料就會顯示在工作區的儲存體帳戶中。 ModelDataCollector 會分割資料,以方便存取和使用。 所有資料都會收集在 「modeldata」 儲存體容器下。 以下是資料分割格式:

/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{指定}/{year}/{month}/{day}/{collection_name}.csv

請注意,檔案名中的collection_name只會考慮「訊號」和「一般」指定。 對於 「inputs」、「predictions」 和 「labels」 檔案名,將會設定為 {指定}.csv。

方法

add_correlations

協助程式函式,可將相互關聯標頭和值新增至指定的輸入資料。

collect

收集資料至儲存體。

add_correlations

協助程式函式,可將相互關聯標頭和值新增至指定的輸入資料。

add_correlations(input_data, correlations)

參數

名稱 Description
input_data
必要

要加入相互關聯標頭和值的資料。

correlations
必要

從 collect () 函式傳回的相互關聯標頭和值。

傳回

類型 Description

已新增相互關聯標頭和值的input_data。

備註

collect呼叫 之後,它會傳回一組相互關聯標頭和值。 其中包括要求識別碼、時間戳記,以及 ModelDataCollector 所產生的唯一相互關聯識別碼,或以參數的形式提供中繼資料。 這些值稍後可用來分析和相互關聯不同類型的資料。 下列範例示範如何將相互關聯新增至輸入資料和預測資料。 請注意,「輸入」指定類型預設具有相互關聯資料。


   # Define inputs_dc and predictions_dc for the same model and "inputs" and "predictions" designations
   # respectively
   # ...

   correlations = inputs_dc.collect(input_data)
   predictions_data = predictions_dc.add_correlations(predictions_data, correlations)
   predictions_dc.collect(predictions_data)

collect

收集資料至儲存體。

collect(input_data, user_correlation_id='')

參數

名稱 Description
input_data
必要

要收集的資料。 針對資料框架類型,如果標頭具有特徵名稱,這項資訊會包含在資料目的地中,而不需要在 ModelDataCollector 建構函式中明確傳遞功能名稱。

user_correlation_id
必要
str

選擇性的相互關聯識別碼會使用 來讓此資料稍後相互關聯。

傳回

類型 Description

包含相互關聯標頭和值的字典。

屬性

AML_DC_BOUNDARY_HEADER

AML_DC_BOUNDARY_HEADER = '$aml_dc_boundary'

AML_DC_CORRELATION_HEADER

AML_DC_CORRELATION_HEADER = '$aml_dc_correlation_id'

AML_DC_SCORING_TIMESTAMP_HEADER

AML_DC_SCORING_TIMESTAMP_HEADER = '$aml_dc_scoring_timestamp'

AML_MODEL_NAME_HEADER

AML_MODEL_NAME_HEADER = '$aml_model_name'

AML_MODEL_VERSION_HEADER

AML_MODEL_VERSION_HEADER = '$aml_model_version'

AML_REQUEST_ID_HEADER

AML_REQUEST_ID_HEADER = '$aml_request_id'

AML_SERVICE_NAME_HEADER

AML_SERVICE_NAME_HEADER = '$aml_service_name'

AML_WORKSPACE_HEADER

AML_WORKSPACE_HEADER = '$aml_workspace'

dllpath

dllpath = 'C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\azureml\\monitoring\\tools\\modeldatacollector\\lib\\native\\Windows'