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:
La CLI de Azure y la extensión
ml
a la CLI de Azure. Para más información, consulte Instalación, configuración y uso de la CLI v2.Importante
En los ejemplos de la CLI de este artículo se supone que usa el shell de Bash (o compatible). Por ejemplo, de un sistema Linux o Subsistema de Windows para Linux.
Un área de trabajo de Azure Machine Learning. Si no tiene uno, siga los pasos descritos en el artículo Instalación, configuración y uso de la CLI (v2) para crearlo.
- 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.
Cuente con un modelo registrado que pueda usar para la implementación. Si no tiene un modelo registrado, consulte Registro del modelo como recurso en Machine Learning.
Cree un punto de conexión en línea de Azure Machine Learning. Si no tiene ningún punto de conexión en línea existente, consulte Implementación y puntuación de un modelo de Machine Learning con un punto de conexión en línea.
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.
Importe el paquete
azureml-ai-monitoring
agregando la línea siguiente al principio del script de puntuación:from azureml.ai.monitoring import Collector
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
ymodel_outputs
para los objetosCollector
, 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ámetroon_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)))
En la función
run()
, use la funcióncollect()
para registrar DataFrames antes y después de la puntuación. Se devuelvecontext
de la primera llamada acollect()
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 acollect()
, 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.
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
En el script de puntuación, cree una instancia de un objeto
BasicCorrelationContext
y pase elid
que desea registrar para esa fila. Se recomienda que esteid
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 APIcollect()
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)
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 valoresMinute
,Hour
,Day
,Month
oYear
.data_collector.sampling_rate
: el porcentaje, representado como un decimal, de datos que se van a recopilar. Por ejemplo, el valor1.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:
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.
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.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>
- El parámetro obligatorio,
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
).
Para habilitar el registro de cargas, en el YAML de implementación, use los nombres
request
yresponse
:$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'
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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":"aaaa0000-bb11-2222-33cc-444444dddddd","xrequestid":"aaaa0000-bb11-2222-33cc-444444dddddd"}
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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":"aaaa0000-bb11-2222-33cc-444444dddddd","xrequestid":"aaaa0000-bb11-2222-33cc-444444dddddd"}
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/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/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":"bbbb1111-cc22-3333-44dd-555555eeeeee","xrequestid":"bbbb1111-cc22-3333-44dd-555555eeeeee",
"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/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/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:
Vaya a la pestaña Datos del área de trabajo de Azure Machine Learning:
Vaya a Almacenes de datos y seleccione workspaceblobstore (predeterminado):
Use el menú Examinar para ver los datos de producción recopilados:
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.