ModelDataCollector Clase

Define un recopilador de datos de modelo que se puede usar para recopilar datos en una implementación Webservice de Azure Machine Learning en AKS en un almacenamiento de blobs.

La clase ModelDataCollector permite definir un recopilador de datos para los modelos en las implementaciones de Azure Machine Learning en AKS. El objeto recopilador de datos se puede usar para recopilar datos del modelo, como entradas y predicciones, en el almacenamiento de blobs del área de trabajo. Cuando la recopilación de datos del modelo está habilitada en la implementación, los datos recopilados se mostrarán en la siguiente ruta de acceso del contenedor como archivos csv: /modeldata/{workspace_name}/{webservice_name}/{model_name}/{model_version}/{designation}/{year}/{month}/{day}/{collection_name}.csv

Constructor ModelDataCollector.

Cuando la recopilación de datos del modelo está habilitada, los datos se enviarán a la siguiente ruta de acceso del contenedor: /modeldata/{workspace}/{webservice_name}/{model_name}/{model_version}/{designación}/{año}/{mes}/{día}/{collection_name}.csv

Herencia
builtins.object
ModelDataCollector

Constructor

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

Parámetros

model_name
str
Requerido

Nombre del modelo para el que se recopilan los datos.

designation
str
valor predeterminado: default

Designación única para la ubicación de la recopilación de datos. Las designaciones admitidas son "entradas", "predicciones", "etiquetas", "señales" y "general".

feature_names
list
valor predeterminado: None

Lista de nombres de características que se convierten en el encabezado csv cuando se proporcionan.

workspace
str
valor predeterminado: default/default/default

Identificador del área de trabajo de Azure Machine Learning en forma de {subscription_id}/{resource_group}/{workspace_name}. Esto se rellena automáticamente cuando los modelos se operacionalizan a través de Azure Machine Learning.

webservice_name
str
valor predeterminado: default

Nombre del servicio web en el que se implementa actualmente este modelo. Esto se rellena automáticamente cuando los modelos se operacionalizan a través de Azure Machine Learning.

model_version
str
valor predeterminado: default

Versión del modelo. Esto se rellena automáticamente cuando los modelos se operacionalizan a través de Azure Machine Learning.

collection_name
str
valor predeterminado: default

Nombre del archivo en el que ModelDataCollector recopila datos. Este parámetro solo se considera para las designaciones "señales" y "generales". Para los otros tipos de designaciones, el nombre de designación se usa como nombre de archivo.

Comentarios

Actualmente, ModelDataCollector solo funciona en las implementaciones de Azure Machine Learning de AKS. Para recopilar datos del modelo dentro de una implementación, debe realizar los siguientes pasos:

  • Actualice la imagen entry_script para agregar objetos ModelDataCollector y recopilar instrucciones. Puede definir varios objetos ModelDataCollector dentro de un script, por ejemplo, uno para las entradas y otro para la predicción para el mismo modelo. Consulte la clase siguiente para obtener más detalles sobre cómo definir y usar un entry_script: InferenceConfig

  • Establezca la marca enable_data_collection en el paso de implementación del modelo de AKS. Una vez implementado un modelo, esta marca se puede usar para activar o desactivar la recopilación de datos del modelo sin modificar el entry_script. Consulte la clase siguiente para obtener más detalles sobre cómo configurar la implementación del modelo: AksWebservice

El siguiente fragmento de código muestra cómo sería 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)

En el ejemplo anterior se muestran un par de cosas sobre ModelDataCollector. En primer lugar, se define un objeto por modelo y por designación, en este caso "bestmodel" y "inputs". En segundo lugar, ModelDataCollector espera datos tabulares como entrada y mantiene los datos como archivos CSV. Se pueden proporcionar nombres de características opcionales para establecer el encabezado de estos archivos CSV.

El siguiente fragmento de código muestra cómo se puede habilitar ModelDataCollector durante la implementación del modelo:


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

Una vez que se implementa Webservice en Azure Machine Learning en AKS y se ejecuta la puntuación en el servicio, los datos recopilados se mostrarán en la cuenta de almacenamiento del área de trabajo. ModelDataCollector dividirá los datos para facilitar el acceso y el uso. Todos los datos se recopilarán en el contenedor de almacenamiento "modeldata". Este es el formato de partición:

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

Tenga en cuenta que collection_name en el nombre de archivo solo se tendrá en cuenta para designaciones de "signals" y "general". Para el nombre de archivo "inputs", "predictions" y "labels" se establecerá como {designación}.csv.

Métodos

add_correlations

Función auxiliar para agregar encabezados de correlación y valores a los datos de entrada proporcionados.

collect

Recopilar datos en el almacenamiento.

add_correlations

Función auxiliar para agregar encabezados de correlación y valores a los datos de entrada proporcionados.

add_correlations(input_data, correlations)

Parámetros

input_data
list, array, DataFrame, DataFrame
Requerido

Datos a los que se agregarán encabezados y valores de correlación.

correlations
dict
Requerido

Encabezados de correlación y valores que se devuelven de la función collect().

Devoluciones

input_data con encabezados y valores de correlación agregados.

Tipo de valor devuelto

Comentarios

Una vez que se llama a collect, devolverá un conjunto de encabezados y valores de correlación. Estos incluyen metadatos como el identificador de solicitud, la marca de tiempo y un identificador de correlación único generado por ModelDataCollector o proporcionado como parámetro. Estos valores se pueden usar para analizar y correlacionar distintos tipos de datos más adelante. En el ejemplo siguiente se muestra cómo agregar correlaciones a los datos de entrada y a los datos de predicción. Tenga en cuenta que el tipo de designación "inputs" tiene los datos de correlación de manera predeterminada.


   # 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

Recopilar datos en el almacenamiento.

collect(input_data, user_correlation_id='')

Parámetros

input_data
list, array, DataFrame, DataFrame
Requerido

Datos que se recopilarán. Para los tipos dataframe, si existe un encabezado con nombres de características, esta información se incluirá en el destino de los datos (sin necesidad de pasar los nombres de las características de manera explícita en el constructor de ModelDataCollector).

user_correlation_id
str
Requerido

Un identificador de correlación opcional que se utiliza para correlacionar estos datos posteriormente.

Devoluciones

Diccionario que contiene valores y encabezados de correlación.

Tipo de valor devuelto

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.8.10\\x64\\lib\\site-packages\\azureml\\monitoring\\tools\\modeldatacollector\\lib\\native\\Windows'