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.object
ModelDataCollector

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
str

O nome do modelo para o qual os dados estão a ser recolhidos.

designation
str

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
str

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
str

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
str

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
str

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
str

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'