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.objectModelDataCollector
建構函式
ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')
參數
名稱 | Description |
---|---|
model_name
必要
|
要收集資料的模型名稱。 |
designation
|
資料收集位置的唯一指定。 支援的指定為 「輸入」、「預測」、「標籤」、「訊號」和「一般」。 預設值: default
|
feature_names
|
提供時會變成 csv 標頭的功能名稱清單。 預設值: None
|
workspace
|
Azure Machine Learning 工作區的識別碼,格式為 {subscription_id}/{resource_group}/{workspace_name}。 當模型透過 Azure Machine Learning 運作時會自動填入。 預設值: default/default/default
|
webservice_name
|
此模型目前部署所在的 Web 服務名稱。 當模型透過 Azure Machine Learning 運作時會自動填入。 預設值: default
|
model_version
|
模型的版本。 當模型透過 Azure Machine Learning 運作時會自動填入。 預設值: default
|
collection_name
|
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
必要
|
選擇性的相互關聯識別碼會使用 來讓此資料稍後相互關聯。 |
傳回
類型 | 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'