ModelDataCollector Classe
Definisce un agente di raccolta dati modello che può essere usato per raccogliere dati in una distribuzione del servizio Web Servizio Azure Machine Learning in un archivio BLOB.
La classe ModelDataCollector consente di definire un agente di raccolta dati per i modelli nelle distribuzioni del servizio Azure Machine Learning. L'oggetto agente di raccolta dati può essere usato per raccogliere dati del modello, ad esempio input e stime, all'archiviazione BLOB dell'area di lavoro. Quando la raccolta dati del modello è abilitata nella distribuzione, i dati raccolti verranno visualizzati nel percorso del contenitore seguente come file csv: /modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{design}/{year}/{month}/{day}/{collection_name}}.csv
Costruttore ModelDataCollector.
Quando la raccolta dati del modello è abilitata, i dati verranno inviati al percorso del contenitore seguente: /modeldata/{workspace}/{webservice_name}/{model_name}/{model_version}/{designazione}/{year}/{month}/{day}/{collection_name}.csv
- Ereditarietà
-
builtins.objectModelDataCollector
Costruttore
ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')
Parametri
Nome | Descrizione |
---|---|
model_name
Necessario
|
Nome del modello per cui vengono raccolti i dati. |
designation
|
Una designazione univoca per la posizione della raccolta dati. Le designazioni supportate sono "input", "stime", "etichette", "segnali e "generale". Valore predefinito: default
|
feature_names
|
Elenco di nomi di funzionalità che diventano l'intestazione csv quando specificato. Valore predefinito: None
|
workspace
|
Identificatore dell'area di lavoro di Azure Machine Learning sotto forma di {subscription_id}/{resource_group}/{workspace_name}. Questo viene popolato automaticamente quando i modelli vengono operativi tramite Azure Machine Learning. Valore predefinito: default/default/default
|
webservice_name
|
Nome del servizio Web a cui è attualmente distribuito questo modello. Questo viene popolato automaticamente quando i modelli vengono operativi tramite Azure Machine Learning. Valore predefinito: default
|
model_version
|
Versione del modello. Questo viene popolato automaticamente quando i modelli vengono operativi tramite Azure Machine Learning. Valore predefinito: default
|
collection_name
|
Nome del file in cui ModelDataCollector raccoglie i dati. Questo param è considerato solo per le designazioni "segnali" e "generale". Per gli altri tipi di designazioni, il nome di designazione viene usato come nome file. Valore predefinito: default
|
Commenti
Attualmente ModelDataCollector funziona solo nelle distribuzioni del servizio Azure Machine Learning. Per raccogliere i dati del modello all'interno di una distribuzione, è necessario eseguire questa procedura:
Aggiornare l'immagine entry_script per aggiungere oggetti ModelDataCollector e istruzioni di raccolta. È possibile definire più oggetti ModelDataCollector all'interno di uno script, ad esempio uno per gli input e uno per la stima per lo stesso modello. Per altre informazioni su come definire e usare un entry_script, vedere la classe seguente: InferenceConfig
Impostare enable_data_collection flag nel passaggio di distribuzione del modello del servizio Azure Kubernetes. Dopo aver distribuito un modello, questo flag può essere usato per attivare/disattivare la raccolta dati del modello senza modificare il entry_script. Per altre informazioni su come configurare la distribuzione del modello, vedere la classe seguente: AksWebservice
Il frammento di codice seguente mostra l'aspetto di un entry_script con ModelDataCollection:
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)
L'esempio precedente illustra un paio di cose su ModelDataCollector. In questo caso "bestmodel" e "input" viene definito prima di tutto un oggetto per modello e per ogni designazione. In secondo luogo, ModelDataCollector prevede dati tabulari come input e gestisce i dati come file csv. È possibile specificare nomi di funzionalità facoltativi per impostare l'intestazione di questi file csv.
Il frammento di codice seguente mostra come ModelDataCollector può essere abilitato durante la distribuzione del modello:
webservice_config = AksWebservice.deploy_configuration(collect_model_data=True)
Model.deploy(ws, "myservice", [model], inference_config, webservice_config, aks_cluster)
Dopo la distribuzione del servizio Azure Machine Learning WebService e l'assegnazione dei punteggi al servizio, i dati raccolti verranno visualizzati nell'account di archiviazione dell'area di lavoro. ModelDataCollector partizionerà i dati per semplificare l'accesso e l'uso. Tutti i dati verranno raccolti nel contenitore di archiviazione "modeldata". Ecco il formato di partizione:
/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{design}/{year}/{month}/{day}/{collection_name}.csv
Si noti che collection_name nel nome del file verrà considerato solo per le designazioni "segnali" e "generale". Per "input", "stime" e "etichette" il nome del file verrà impostato come {designazioni}.csv.
Metodi
add_correlations |
Funzione helper per aggiungere intestazioni e valori di correlazione ai dati di input specificati. |
collect |
Raccogliere dati nell'archiviazione. |
add_correlations
Funzione helper per aggiungere intestazioni e valori di correlazione ai dati di input specificati.
add_correlations(input_data, correlations)
Parametri
Nome | Descrizione |
---|---|
input_data
Necessario
|
Dati da aggiungere intestazioni e valori di correlazione a. |
correlations
Necessario
|
Intestazioni di correlazione e valori restituiti dalla funzione collect(). |
Restituisce
Tipo | Descrizione |
---|---|
input_data con intestazioni e valori di correlazione aggiunti. |
Commenti
collect
Una volta chiamato, restituirà un set di intestazioni e valori di correlazione. Questi includono metadati, ad esempio id richiesta, timestamp e id di correlazione univoco generato da ModelDataCollector o fornito come parametro. Questi valori possono essere usati per analizzare e correlare diversi tipi di dati in un secondo momento.
Nell'esempio seguente viene illustrato come aggiungere correlazioni ai dati di input e ai dati di stima. Si noti che il tipo di designazione "input" ha i dati di correlazione per impostazione predefinita.
# 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
Raccogliere dati nell'archiviazione.
collect(input_data, user_correlation_id='')
Parametri
Nome | Descrizione |
---|---|
input_data
Necessario
|
Dati da raccogliere. Per i tipi di dataframe, se esiste un'intestazione con nomi di funzionalità, queste informazioni vengono incluse nella destinazione dati senza dover passare in modo esplicito nomi di funzionalità nel costruttore ModelDataCollector. |
user_correlation_id
Necessario
|
Un ID di correlazione facoltativo usa per correlare questi dati in un secondo momento. |
Restituisce
Tipo | Descrizione |
---|---|
Dizionario che contiene intestazioni e valori di correlazione. |
Attributi
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'