Share via


Recopilar datos de producción de modelos implementados para la inferencia en tiempo real

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

En este artículo aprenderá a usar el recopilador de datos de Azure Machine Learning para recopilar datos de inferencia de producción de un modelo que esté implementado en un punto de conexión en línea administrado de Azure Machine Learning o en un punto de conexión en línea de Kubernetes.

Puede habilitar la recopilación de datos para las implementaciones de puntos de conexión en línea nuevas o existentes. El recopilador de datos de Azure Machine Learning registra los datos de inferencia en Azure Blob Storage. Los datos recopilados con el SDK de Python se registran automáticamente como recurso de datos en el área de trabajo de Azure Machine Learning. Este recurso de datos se puede usar para la supervisión de modelos.

Si le interesa recopilar datos de inferencia de producción para un modelo de MLflow que esté implementado en un punto de conexión en tiempo real, consulte Recopilación de datos para modelos de MLflow.

Requisitos previos

Antes de seguir los pasos de este artículo, asegúrese de que tiene los siguientes requisitos previos:

  • Los controles de acceso basado en rol de Azure (RBAC de Azure) se usan para conceder acceso a las operaciones en Azure Machine Learning. Para realizar los pasos descritos en este artículo, la cuenta de usuario debe tener asignado el rol de propietario o colaborador para el área de trabajo de Azure Machine Learning, o un rol personalizado que permita Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Para obtener más información, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.

Realizar un registro personalizado para la supervisión de modelos

La recopilación de datos con registro personalizado permite registrar DataFrames de Pandas directamente desde el script de puntuación antes, durante y después de cualquier transformación de datos. Con el registro personalizado, los datos tabulares se registran en tiempo real en la instancia de Blob Storage del área de trabajo o en un contenedor de Blob Storage personalizado. Los monitores de modelo pueden consumir los datos del almacenamiento.

Actualizar el script de puntuación con código de registro personalizado

Para empezar, agregue código de registro personalizado al script de puntuación (score.py). Para el registro personalizado, necesita el paquete azureml-ai-monitoring. Para obtener más información sobre este paquete, consulte la página completa de PyPI del SDK del recopilador de datos.

  1. Importe el paquete azureml-ai-monitoring agregando la línea siguiente al principio del script de puntuación:

    from azureml.ai.monitoring import Collector
    
  2. Declare las variables de recopilación de datos (un máximo de cinco) en la función init():

    Nota:

    Si usa los nombres model_inputs y model_outputs para los objetos Collector, el sistema de supervisión de modelos reconoce automáticamente los recursos de datos registrados automáticamente para proporcionar una experiencia de supervisión de modelos más fluida.

    global inputs_collector, outputs_collector
    inputs_collector = Collector(name='model_inputs')          
    outputs_collector = Collector(name='model_outputs')
    

    De forma predeterminada, Azure Machine Learning genera una excepción si se produce un error durante la recopilación de datos. Opcionalmente, puede usar el parámetro on_error para especificar una función que se va a ejecutar si se produce un error de registro. Por ejemplo, si usa el parámetro on_error en el código siguiente, Azure Machine Learning registrará el error en lugar de generar una excepción:

    inputs_collector = Collector(name='model_inputs', on_error=lambda e: logging.info("ex:{}".format(e)))
    
  3. En la función run(), use la función collect() para registrar DataFrames antes y después de la puntuación. Se devuelve context de la primera llamada a collect() y contiene información para correlacionar más tarde las entradas y salidas del modelo.

    context = inputs_collector.collect(data) 
    result = model.predict(data)
    outputs_collector.collect(result, context)
    

    Nota:

    Actualmente, la API collect() registra solo DataFrames de Pandas. Si los datos no están en un DataFrame cuando se pasan a collect(), no se registrarán en el almacenamiento y se notificará un error.

El código siguiente es un ejemplo de un script de puntuación completo (score.py) que usa el SDK de Python de registro personalizado.

import pandas as pd
import json
from azureml.ai.monitoring import Collector

def init():
  global inputs_collector, outputs_collector, inputs_outputs_collector

  # instantiate collectors with appropriate names, make sure align with deployment spec
  inputs_collector = Collector(name='model_inputs')                    
  outputs_collector = Collector(name='model_outputs')

def run(data): 
  # json data: { "data" : {  "col1": [1,2,3], "col2": [2,3,4] } }
  pdf_data = preprocess(json.loads(data))
  
  # tabular data: {  "col1": [1,2,3], "col2": [2,3,4] }
  input_df = pd.DataFrame(pdf_data)

  # collect inputs data, store correlation_context
  context = inputs_collector.collect(input_df)

  # perform scoring with pandas Dataframe, return value is also pandas Dataframe
  output_df = predict(input_df) 

  # collect outputs data, pass in correlation_context so inputs and outputs data can be correlated later
  outputs_collector.collect(output_df, context)
  
  return output_df.to_dict()
  
def preprocess(json_data):
  # preprocess the payload to ensure it can be converted to pandas DataFrame
  return json_data["data"]

def predict(input_df):
  # process input and return with outputs
  ...
  
  return output_df

Actualización del script de puntuación para registrar identificadores únicos personalizados

Además de registrar DataFrames de Pandas directamente en el script de puntuación, puede registrar datos con identificadores únicos de su elección. Estos identificadores pueden proceder de la aplicación, un sistema externo o puede generarlos. Si no proporciona un identificador personalizado, como se detalla en esta sección, el recopilador de datos generará automáticamente un correlationid único para ayudarle a poner en correlación las entradas y salidas del modelo más adelante. Si proporciona un identificador personalizado, el campo correlationid de los datos registrados contendrá el valor del identificador personalizado proporcionado.

  1. En primer lugar, complete los pasos de la sección anterior y, a continuación, importe el paquete azureml.ai.monitoring.context mediante la adición de la siguiente línea al script de puntuación:

    from azureml.ai.monitoring.context import BasicCorrelationContext
    
  2. En el script de puntuación, cree una instancia de un objeto BasicCorrelationContext y pase el id que desea registrar para esa fila. Se recomienda que este id sea un identificador único del sistema, de modo que pueda identificar de forma única cada fila registrada desde su instancia de Blob Storage. Pase este objeto a la llamada API collect() como parámetro:

      # create a context with a custom unique id
      artificial_context = BasicCorrelationContext(id='test')
    
      # collect inputs data, store correlation_context
      context = inputs_collector.collect(input_df, artificial_context)
    
  3. Asegúrese de pasar el contexto al outputs_collector para que las entradas y salidas del modelo tengan el mismo identificador único registrado con ellas y se pueden poner en correlación fácilmente más adelante:

      # collect outputs data, pass in context so inputs and outputs data can be correlated later
      outputs_collector.collect(output_df, context)
    

El código siguiente es un ejemplo de un script de puntuación completo (score.py) que registra identificadores únicos personalizados.

import pandas as pd
import json
from azureml.ai.monitoring import Collector
from azureml.ai.monitoring.context import BasicCorrelationContext

def init():
  global inputs_collector, outputs_collector, inputs_outputs_collector

  # instantiate collectors with appropriate names, make sure align with deployment spec
  inputs_collector = Collector(name='model_inputs')                    
  outputs_collector = Collector(name='model_outputs')

def run(data): 
  # json data: { "data" : {  "col1": [1,2,3], "col2": [2,3,4] } }
  pdf_data = preprocess(json.loads(data))
  
  # tabular data: {  "col1": [1,2,3], "col2": [2,3,4] }
  input_df = pd.DataFrame(pdf_data)

  # create a context with a custom unique id
  artificial_context = BasicCorrelationContext(id='test')

  # collect inputs data, store correlation_context
  context = inputs_collector.collect(input_df, artificial_context)

  # perform scoring with pandas Dataframe, return value is also pandas Dataframe
  output_df = predict(input_df) 

  # collect outputs data, pass in context so inputs and outputs data can be correlated later
  outputs_collector.collect(output_df, context)
  
  return output_df.to_dict()
  
def preprocess(json_data):
  # preprocess the payload to ensure it can be converted to pandas DataFrame
  return json_data["data"]

def predict(input_df):
  # process input and return with outputs
  ...
  
  return output_df

Recopilación de datos para la supervisión de rendimiento del modelo

Si desea usar los datos recopilados para la supervisión de rendimiento del modelo, es importante que cada fila registrada tenga un correlationid único que se pueda usar para poner en correlación los datos con datos verídicos básicos, cuando dichos datos estén disponibles. El recopilador de datos generará automáticamente un correlationid único para cada fila registrada e incluirá este identificador generado automáticamente en el campo correlationid del objeto JSON. Para obtener más información sobre el esquema JSON, consulte Almacenar datos recopilados en Blob Storage.

Si desea usar su propio identificador único para el registro con los datos de producción, le recomendamos que registre este identificador como una columna independiente en DataFrame de Pandas, ya que el recopilador de datos procesa solicitudes por lotes cercanas entre sí. Al registrar el correlationid como una columna independiente, estará disponible posteriormente para su integración con datos verídicos básicos.

Actualización de las dependencias

Antes de que pueda crear la implementación con el script de puntuación actualizado, tiene que crear el entorno con la imagen base mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04 y las dependencias de Conda adecuadas. Después, puede compilar el entorno con la especificación del siguiente YAML.

channels:
  - conda-forge
dependencies:
  - python=3.8
  - pip=22.3.1
  - pip:
      - azureml-defaults==1.38.0
      - azureml-ai-monitoring~=0.1.0b1
name: model-env

Actualización del YAML de implementación

A continuación, cree el YAML de implementación. Para crear el YAML de implementación, incluya el atributo data_collector y habilite la recopilación de datos para los objetos Collector, model_inputs y model_outputs, que creó anteriormente mediante el SDK de Python de registro personalizado:

data_collector:
  collections:
    model_inputs:
      enabled: 'True'
    model_outputs:
      enabled: 'True'

El código siguiente es un ejemplo de un YAML de implementación completo para una implementación de punto de conexión en línea administrada. Debe actualizar el YAML de implementación según el escenario. Para obtener más ejemplos sobre cómo dar formato al YAML de implementación para el registro de datos de inferencia, consulte Ejemplos de recopiladores de datos de modelos de Azure.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my_endpoint
model: azureml:iris_mlflow_model@latest
environment:
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
  conda_file: model/conda.yaml
code_configuration:
  code: scripts
  scoring_script: score.py
instance_type: Standard_F2s_v2
instance_count: 1
data_collector:
  collections:
    model_inputs:
      enabled: 'True'
    model_outputs:
      enabled: 'True'

Opcionalmente, puede ajustar los siguientes parámetros adicionales para data_collector:

  • data_collector.rolling_rate: la velocidad para crear particiones de los datos en el almacenamiento. Elija entre los valores Minute, Hour, Day, Month o Year.
  • data_collector.sampling_rate: el porcentaje, representado como un decimal, de datos que se van a recopilar. Por ejemplo, el valor 1.0 representa la recopilación del 100 % de los datos.
  • data_collector.collections.<collection_name>.data.name: el nombre del recurso de datos que se va a registrar con los datos recopilados.
  • data_collector.collections.<collection_name>.data.path: la ruta de acceso completa del almacén de datos de Azure Machine Learning en la que se deben registrar los datos recopilados como recurso de datos.
  • data_collector.collections.<collection_name>.data.version: la versión del recurso de datos que se va a registrar con los datos recopilados en Blob Storage.

Recopilación de datos en un contenedor de Blob Storage personalizado

Puede usar el recopilador de datos para recopilar los datos de inferencia de producción en un contenedor de Blob Storage personalizado; para ello, siga los pasos siguientes:

  1. Conecte el contenedor de almacenamiento a un almacén de datos de Azure Machine Learning. Para más información sobre cómo conectar el contenedor de almacenamiento al almacén de datos de Azure Machine Learning, consulte creación de almacenes de datos.

  2. Compruebe que el punto de conexión de Azure Machine Learning tiene los permisos necesarios para escribir en el destino del almacén de datos.

    El recopilador de datos admite identidades administradas asignadas por el sistema (SAMIs) e identidades administradas asignadas por el usuario (UAMIs). Agregue la identidad al punto de conexión. Asigne el rol Storage Blob Data Contributor a esta identidad con el contenedor de Blob Storage que se usará como destino de datos. Para aprender a usar las identidades administradas en Azure, consulte Asignación de roles de Azure a una identidad administrada.

  3. Actualice el archivo YAML de implementación para incluir la propiedad data en cada recopilación.

    • El parámetro obligatorio, data.name, especifica el nombre del recurso de datos que se va a registrar con los datos recopilados.
    • El parámetro obligatorio, data.path, especifica la ruta de acceso del almacén de datos de Azure Machine Learning con formato completo, que está conectada al contenedor de Azure Blob Storage.
    • El parámetro opcional, data.version, especifica la versión del recurso de datos (el valor predeterminado es 1).

    La siguiente configuración de YAML muestra un ejemplo de cómo incluir la propiedad data dentro de cada recopilación.

    data_collector:
      collections:
        model_inputs:
          enabled: 'True'
          data: 
            name: my_model_inputs_data_asset
            path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_inputs
            version: 1
        model_outputs:
          enabled: 'True'
          data: 
            name: my_model_outputs_data_asset
            path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_outputs 
            version: 1
    

    Nota:

    También puede usar el parámetro data.path para apuntar a almacenes de datos en distintas suscripciones de Azure; para ello, proporcione una ruta de acceso que siga el siguiente formato: azureml://subscriptions/<sub_id>/resourcegroups/<rg_name>/workspaces/<ws_name>/datastores/<datastore_name>/paths/<path>

Creación de una implementación con recopilación de datos

Implemente el modelo con el registro personalizado habilitado:

$ az ml online-deployment create -f deployment.YAML

Para obtener más información sobre cómo dar formato al YAML de implementación para la recopilación de datos con puntos de conexión en línea de Kubernetes, consulte Esquema YAML de implementación en línea de Kubernetes de la CLI (v2) con Azure Arc habilitado.

Para obtener más información sobre cómo dar formato al YAML de implementación para la recopilación de datos con puntos de conexión en línea administrados, consulte Esquema YAML de implementación en línea administrada de la CLI (v2).

Realización del registro de carga

Además del registro personalizado con el SDK de Python proporcionado, puede recopilar datos de carga HTTP de solicitud y respuesta directamente sin necesidad de aumentar el script de puntuación (score.py).

  1. Para habilitar el registro de cargas, en el YAML de implementación, use los nombres request y response:

    $schema: http://azureml/sdk-2-0/OnlineDeployment.json
    
    endpoint_name: my_endpoint 
    name: blue 
    model: azureml:my-model-m1:1 
    environment: azureml:env-m1:1 
    data_collector:
       collections:
           request:
               enabled: 'True'
           response:
               enabled: 'True'
    
  2. Implemente el modelo con el registro de carga habilitado:

    $ az ml online-deployment create -f deployment.YAML
    

Con el registro de carga no se garantiza que los datos recopilados estén en formato tabular. Por tanto, si desea usar los datos de carga recopilados con la supervisión de modelo, deberá proporcionar un componente de procesamiento previo para que los datos sean tabulares. Si le interesa una experiencia de supervisión de modelos fluida, se recomienda usar el SDK de Python de registro personalizado.

A medida que se use la implementación, los datos recopilados fluyen a la instancia de Blob Storage del área de trabajo. El código JSON siguiente es un ejemplo de una solicitud HTTP recopilada:

{"specversion":"1.0",
"id":"19790b87-a63c-4295-9a67-febb2d8fbce0",
"source":"/subscriptions/d511f82f-71ba-49a4-8233-d7be8a3650f4/resourceGroups/mire2etesting/providers/Microsoft.MachineLearningServices/workspaces/mirmasterenvws/onlineEndpoints/localdev-endpoint/deployments/localdev",
"type":"azureml.inference.request",
"datacontenttype":"application/json",
"time":"2022-05-25T08:59:48Z",
"data":{"data": [  [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1]]},
"path":"/score",
"method":"POST",
"contentrange":"bytes 0-59/*",
"correlationid":"f6e806c9-1a9a-446b-baa2-901373162105","xrequestid":"f6e806c9-1a9a-446b-baa2-901373162105"}

Y el código JSON siguiente es otro ejemplo de una respuesta HTTP recopilada:

{"specversion":"1.0",
"id":"bbd80e51-8855-455f-a719-970023f41e7d",
"source":"/subscriptions/d511f82f-71ba-49a4-8233-d7be8a3650f4/resourceGroups/mire2etesting/providers/Microsoft.MachineLearningServices/workspaces/mirmasterenvws/onlineEndpoints/localdev-endpoint/deployments/localdev",
"type":"azureml.inference.response",
"datacontenttype":"application/json",
"time":"2022-05-25T08:59:48Z",
"data":[11055.977245525679, 4503.079536107787],
"contentrange":"bytes 0-38/39",
"correlationid":"f6e806c9-1a9a-446b-baa2-901373162105","xrequestid":"f6e806c9-1a9a-446b-baa2-901373162105"}

Almacenamiento de datos recopilados en Blob Storage

La recopilación de datos permite registrar los datos de inferencia de producción en un destino de Blob Storage de su elección. Los valores de destino de datos se pueden configurar en el nivel de collection_name.

Salida o formato de Blob Storage:

  • De forma predeterminada, los datos recopilados se almacenan en la ruta de acceso siguiente en la instancia de Blob Storage del área de trabajo: azureml://datastores/workspaceblobstore/paths/modelDataCollector.

  • La ruta de acceso final en Blob Storage se anexará con {endpoint_name}/{deployment_name}/{collection_name}/{yyyy}/{MM}/{dd}/{HH}/{instance_id}.jsonl.

  • Cada línea del archivo es un objeto JSON que representa una única solicitud o respuesta de inferencia registrada.

Nota:

collection_name hace referencia al nombre de la recopilación de datos (por ejemplo, model_inputs o model_outputs). instance_id es un identificador único que identifica la agrupación de datos registrada.

Los datos recopilados siguen el siguiente esquema JSON. Los datos recopilados están disponibles en la clave data y se proporcionan metadatos adicionales.

{"specversion":"1.0",
"id":"725aa8af-0834-415c-aaf5-c76d0c08f694",
"source":"/subscriptions/636d700c-4412-48fa-84be-452ac03d34a1/resourceGroups/mire2etesting/providers/Microsoft.MachineLearningServices/workspaces/mirmasterws/onlineEndpoints/localdev-endpoint/deployments/localdev",
"type":"azureml.inference.inputs",
"datacontenttype":"application/json",
"time":"2022-12-01T08:51:30Z",
"data":[{"label":"DRUG","pattern":"aspirin"},{"label":"DRUG","pattern":"trazodone"},{"label":"DRUG","pattern":"citalopram"}],
"correlationid":"3711655d-b04c-4aa2-a6c4-6a90cbfcb73f","xrequestid":"3711655d-b04c-4aa2-a6c4-6a90cbfcb73f",
"modelversion":"default",
"collectdatatype":"pandas.core.frame.DataFrame",
"agent":"monitoring-sdk/0.1.2",
"contentrange":"bytes 0-116/117"}

Sugerencia

Los saltos de línea solo se muestran para mejorar la legibilidad. En los archivos .jsonl recopilados no habrá saltos de línea.

Almacenar cargas grandes

Si la carga de los datos es superior a 4 MB, habrá un evento en el archivo {instance_id}.jsonl contenido en la ruta de acceso {endpoint_name}/{deployment_name}/request/.../{instance_id}.jsonl que apunta a una ruta de acceso de archivo sin formato, que debe tener la siguiente ruta de acceso: blob_url/{blob_container}/{blob_path}/{endpoint_name}/{deployment_name}/{rolled_time}/{instance_id}.jsonl. Los datos recopilados estarán presentes en esta ruta de acceso.

Almacenar datos binarios

Con los datos binarios recopilados, mostramos el archivo sin formato directamente, con el nombre de archivo instance_id. Los datos binarios se colocan en la misma carpeta que la ruta de acceso del grupo de origen de la solicitud, en función de rolling_rate. En el ejemplo siguiente se refleja la ruta de acceso en el campo de datos. El formato es JSON y los saltos de línea solo se muestran para mejorar la legibilidad:

{
"specversion":"1.0",
"id":"ba993308-f630-4fe2-833f-481b2e4d169a",
"source":"/subscriptions//resourceGroups//providers/Microsoft.MachineLearningServices/workspaces/ws/onlineEndpoints/ep/deployments/dp",
"type":"azureml.inference.request",
"datacontenttype":"text/plain",
"time":"2022-02-28T08:41:07Z",
"data":"https://masterws0373607518.blob.core.windows.net/modeldata/mdc/%5Byear%5D%5Bmonth%5D%5Bday%5D-%5Bhour%5D_%5Bminute%5D/ba993308-f630-4fe2-833f-481b2e4d169a",
"path":"/score?size=1",
"method":"POST",
"contentrange":"bytes 0-80770/80771",
"datainblob":"true"
}

Procesamiento por lotes del recopilador de datos

Si las solicitudes se envían en intervalos de tiempo cortos entre sí, el recopilador de datos las procesa juntas por lotes en el mismo objeto JSON. Por ejemplo, si ejecuta un script para enviar datos de ejemplo al punto de conexión y la implementación tiene habilitada la recopilación de datos, algunas de las solicitudes se pueden procesar juntas por lotes, en función del intervalo de tiempo entre ellas. Si usa la recopilación de datos con la supervisión de modelos de Azure Machine Learning, el servicio de supervisión de modelo controlará cada solicitud de forma independiente. Sin embargo, si espera que cada fila de datos registrada tenga su propio correlationidúnico, puede incluir el correlationid como una columna en el objeto DataFrame de Pandas que registra con el recopilador de datos. Para obtener más información sobre cómo puede incluir su correlationid único como una columna en DataFrame de Pandas, consulte Recopilación de datos para la supervisión de rendimiento del modelo.

Este es un ejemplo de dos solicitudes registradas que se procesan juntas por lotes:

{"specversion":"1.0",
"id":"720b8867-54a2-4876-80eb-1fd6a8975770",
"source":"/subscriptions/79a1ba0c-35bb-436b-bff2-3074d5ff1f89/resourceGroups/rg-bozhlinmomoignite/providers/Microsoft.MachineLearningServices/workspaces/momo-demo-ws/onlineEndpoints/credit-default-mdc-testing-4/deployments/main2",
"type":"azureml.inference.model_inputs",
"datacontenttype":"application/json",
"time":"2024-03-05T18:16:25Z",
"data":[{"LIMIT_BAL":502970,"AGE":54,"BILL_AMT1":308068,"BILL_AMT2":381402,"BILL_AMT3":442625,"BILL_AMT4":320399,"BILL_AMT5":322616,"BILL_AMT6":397534,"PAY_AMT1":17987,"PAY_AMT2":78764,"PAY_AMT3":26067,"PAY_AMT4":24102,"PAY_AMT5":-1155,"PAY_AMT6":2154,"SEX":2,"EDUCATION":2,"MARRIAGE":2,"PAY_0":0,"PAY_2":0,"PAY_3":0,"PAY_4":0,"PAY_5":0,"PAY_6":0},{"LIMIT_BAL":293458,"AGE":35,"BILL_AMT1":74131,"BILL_AMT2":-71014,"BILL_AMT3":59284,"BILL_AMT4":98926,"BILL_AMT5":110,"BILL_AMT6":1033,"PAY_AMT1":-3926,"PAY_AMT2":-12729,"PAY_AMT3":17405,"PAY_AMT4":25110,"PAY_AMT5":7051,"PAY_AMT6":1623,"SEX":1,"EDUCATION":3,"MARRIAGE":2,"PAY_0":-2,"PAY_2":-2,"PAY_3":-2,"PAY_4":-2,"PAY_5":-1,"PAY_6":-1}],
"contentrange":"bytes 0-6794/6795",
"correlationid":"test",
"xrequestid":"test",
"modelversion":"default",
"collectdatatype":"pandas.core.frame.DataFrame",
"agent":"azureml-ai-monitoring/0.1.0b4"}

Ver los datos en la interfaz de usuario de Studio

Para ver los datos recopilados en Blob Storage desde la interfaz de usuario de Studio:

  1. Vaya a la pestaña Datos del área de trabajo de Azure Machine Learning:

    Captura de pantalla que resalta la página Datos en el área de trabajo de Azure Machine Learning

  2. Vaya a Almacenes de datos y seleccione workspaceblobstore (predeterminado):

    Captura de pantalla que resalta la página Almacenes de datos en el área de trabajo de AzureML

  3. Use el menú Examinar para ver los datos de producción recopilados:

    Captura de pantalla que resalta la estructura de árbol de los datos en el almacén de datos

Recopilar datos para modelos de MLflow

Si va a implementar un modelo de MLflow en un punto de conexión en línea de Azure Machine Learning, puede habilitar la recopilación de datos de inferencia de producción con una sola alternancia en la interfaz de usuario de Studio. Si la recopilación de datos está activada, Azure Machine Learning instrumenta automáticamente el script de puntuación con código de registro personalizado para garantizar que los datos de producción se registren en la instancia de Blob Storage del área de trabajo. A continuación, los monitores de modelo pueden usar los datos para supervisar el rendimiento del modelo de MLflow en producción.

Mientras configura la implementación del modelo, puede habilitar la recopilación de datos de producción. En la pestaña Implementación, seleccione Habilitado para Recopilación de datos.

Una vez que haya habilitado la recopilación de datos, los datos de inferencia de producción se registrarán en la instancia de Blob Storage del área de trabajo de Azure Machine Learning y se crearán dos recursos de datos con los nombres <endpoint_name>-<deployment_name>-model_inputs y <endpoint_name>-<deployment_name>-model_outputs. Estos recursos de datos se actualizan en tiempo real a medida que se usa la implementación en producción. A continuación, los monitores de modelo pueden usar los recursos de datos para supervisar el rendimiento del modelo en producción.