ModelDataCollector Classe
Define um recoletor de dados de modelo que pode ser utilizado para recolher dados numa implementação do WebService do Azure Machine Learning AKS num armazenamento de blobs.
A classe ModelDataCollector permite-lhe definir um recoletor de dados para os seus modelos em implementações do Azure Machine Learning AKS. O objeto recoletor de dados pode ser utilizado para recolher dados do modelo, como entradas e predições, para o armazenamento de blobs da área de trabalho. Quando a recolha de dados do modelo está ativada na sua implementação, os dados recolhidos serão apresentados no seguinte caminho de contentor como ficheiros csv: /modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv
Construtor ModelDataCollector.
Quando a recolha de dados do modelo estiver ativada, os dados serão enviados para o seguinte caminho de contentor: /modeldata/{workspace}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv
- Herança
-
builtins.objectModelDataCollector
Construtor
ModelDataCollector(model_name, designation='default', feature_names=None, workspace='default/default/default', webservice_name='default', model_version='default', collection_name='default')
Parâmetros
Name | Description |
---|---|
model_name
Necessário
|
O nome do modelo para o qual os dados estão a ser recolhidos. |
designation
|
Uma designação exclusiva para a localização da recolha de dados. As designações suportadas são "inputs", "predictions", "labels", "signals" e "general". Default value: default
|
feature_names
|
Uma lista de nomes de funcionalidades que se tornam o cabeçalho csv quando fornecido. Default value: None
|
workspace
|
O identificador da área de trabalho do Azure Machine Learning sob a forma de {subscription_id}/{resource_group}/{workspace_name}. Isto é preenchido automaticamente quando os modelos são operacionalizados através do Azure Machine Learning. Default value: default/default/default
|
webservice_name
|
O nome do webservice no qual este modelo está atualmente implementado. Isto é preenchido automaticamente quando os modelos são operacionalizados através do Azure Machine Learning. Default value: default
|
model_version
|
A versão do modelo. Isto é preenchido automaticamente quando os modelos são operacionalizados através do Azure Machine Learning. Default value: default
|
collection_name
|
O nome do ficheiro no qual ModelDataCollector recolhe dados. Este parâmetro só é considerado para designações "sinais" e "gerais". Para os outros tipos de designação, o nome da designação é utilizado como o nome do ficheiro. Default value: default
|
Observações
Atualmente, ModelDataCollector só funciona em implementações do Azure Machine Learning AKS. Para recolher dados de modelo numa implementação, tem de executar os seguintes passos:
Atualize a sua imagem entry_script para adicionar objetos ModelDataCollector e recolher instruções. Pode definir vários objetos ModelDataCollector num script, por exemplo, um para entradas e outro para predição para o mesmo modelo. Veja a seguinte classe para obter mais detalhes sobre como definir e utilizar um entry_script: InferenceConfig
Defina enable_data_collection sinalizador no passo de implementação do modelo do AKS. Depois de um modelo ser implementado, este sinalizador pode ser utilizado para ativar/desativar a recolha de dados do modelo sem modificar a sua entry_script. Veja a seguinte classe para obter mais detalhes sobre como configurar a implementação do modelo: AksWebservice
O fragmento de código seguinte mostra o aspeto de um entry_script com 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)
O exemplo acima ilustra algumas coisas sobre ModelDataCollector. Primeiro, um objeto é definido por modelo e por designação, neste caso "bestmodel" e "inputs". Em segundo lugar, ModelDataCollector espera dados tabulares como entrada e mantém os dados como ficheiros csv. Podem ser fornecidos nomes de funcionalidades opcionais para definir o cabeçalho destes ficheiros csv.
O fragmento de código seguinte mostra como ModelDataCollector pode ser ativado durante a implementação do modelo:
webservice_config = AksWebservice.deploy_configuration(collect_model_data=True)
Model.deploy(ws, "myservice", [model], inference_config, webservice_config, aks_cluster)
Assim que o WebService do AKS do Azure Machine Learning for implementado e a classificação for executada no serviço, os dados recolhidos serão apresentados na conta de armazenamento da área de trabalho. ModelDataCollector irá particionar os dados para facilitar o acesso e utilização. Todos os dados serão recolhidos no contentor de armazenamento "modeldata". Eis o formato de partição:
/modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv
Tenha em atenção que collection_name no nome do ficheiro só serão consideradas para designações "sinais" e "gerais". Para o nome de ficheiro "inputs", "predictions" e "labels" será definido como {designation}.csv.
Métodos
add_correlations |
Função auxiliar para adicionar cabeçalhos e valores de correlação a dados de entrada fornecidos. |
collect |
Recolher dados para o armazenamento. |
add_correlations
Função auxiliar para adicionar cabeçalhos e valores de correlação a dados de entrada fornecidos.
add_correlations(input_data, correlations)
Parâmetros
Name | Description |
---|---|
input_data
Necessário
|
Os dados aos qual adicionar cabeçalhos e valores de correlação. |
correlations
Necessário
|
Cabeçalhos de correlação e valores que são devolvidos da função collect(). |
Devoluções
Tipo | Description |
---|---|
input_data com cabeçalhos e valores de correlação adicionados. |
Observações
Assim que o collect
for chamado, devolverá um conjunto de cabeçalhos e valores de correlação. Estes incluem metadados, como o ID do pedido, o carimbo de data/hora e um ID de correlação exclusivo gerado por ModelDataCollector ou fornecido como um parâmetro. Estes valores podem ser utilizados para analisar e correlacionar diferentes tipos de dados mais tarde.
O exemplo seguinte mostra como adicionar correlações aos dados de entrada e aos dados de predição. Tenha em atenção que o tipo de designação "entradas" tem os dados de correlação por predefinição.
# 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
Recolher dados para o armazenamento.
collect(input_data, user_correlation_id='')
Parâmetros
Name | Description |
---|---|
input_data
Necessário
|
Os dados a recolher. Para tipos de dataframe, se existir um cabeçalho com nomes de funcionalidades, estas informações são incluídas no destino dos dados sem ter de transmitir explicitamente nomes de funcionalidades no construtor ModelDataCollector. |
user_correlation_id
Necessário
|
Um ID de correlação opcional utiliza para correlacionar estes dados mais tarde. |
Devoluções
Tipo | Description |
---|---|
Um dicionário que contém cabeçalhos e valores de correlação. |
Atributos
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'