Recopilación de datos de modelos en producción

SE APLICA A:SDK de Python azureml v1

En este artículo se muestra cómo recopilar datos de un modelo de Azure Machine Learning implementado en un clúster de Azure Kubernetes Service (AKS). Los datos recopilados se almacenan luego en Azure Blob Storage.

Una vez que la colección está habilitada, los datos que recopile le ayudarán a:

Limitaciones

  • La característica de recopilación de datos del modelo solo puede funcionar con la imagen de Ubuntu 18.04.

Importante

A partir del 10/03/2023, la imagen de Ubuntu 18.04 ha quedado en desuso. La compatibilidad con imágenes de Ubuntu 18.04 se quitará a partir de enero de 2023 cuando alcance su EOL el 30 de abril de 2023.

La característica MDC no es compatible con cualquier otra imagen que no sea Ubuntu 18.04, que no está disponible después de que la imagen de Ubuntu 18.04 quede en desuso.

Más información que puede consultar:

Nota:

La característica de recopilación de datos se encuentra actualmente en versión preliminar, no se recomienda ninguna característica en versión preliminar para cargas de trabajo de producción.

¿Qué información se recopila y a dónde va?

Se pueden recopilar los siguientes datos:

  • Datos de entrada de modelo de los servicios web implementados en un clúster de AKS. El audio de voz, las imágenes y el vídeo no se recopilan.

  • Predicciones de modelo con datos de entrada de producción.

Nota

La agregación y el cálculo previos en estos datos no forman parte actualmente del servicio de recopilación.

La salida se guarda en el almacenamiento de blobs. Dado que los datos se agregan al almacenamiento de blobs, puede elegir su herramienta favorita para ejecutar el análisis.

La ruta de acceso a los datos de salida en el blob sigue esta sintaxis:

/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
# example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv

Nota

En las versiones del SDK de Azure Machine Learning para Python anteriores a la versión 0.1.0 A16, el argumento designation se denomina identifier. Si desarrolló el código con una versión anterior, debe actualizarlo en consecuencia.

Prerrequisitos

Habilitación de recolección de datos

Puede habilitar la recopilación de datos independientemente del modelo que implemente mediante Azure Machine Learning u otras herramientas.

Para habilitar la recopilación de datos, debe hacer lo siguiente:

  1. Abrir el archivo de puntuación.

  2. Agregue el código siguiente en la parte superior del archivo:

    from azureml.monitoring import ModelDataCollector
    
  3. Declare las variables de recopilación de datos en su función init:

    global inputs_dc, prediction_dc
    inputs_dc = ModelDataCollector("best_model", designation="inputs", feature_names=["feat1", "feat2", "feat3", "feat4", "feat5", "feat6"])
    prediction_dc = ModelDataCollector("best_model", designation="predictions", feature_names=["prediction1", "prediction2"])
    

    CorrelationId es un parámetro opcional. No es necesario usarlo si el modelo no lo necesita. El uso de CorrelationId le ayuda en la asignación con otros datos, como LoanNumber o CustomerId.

    El parámetro Identifier se usa posteriormente para compilar la estructura de carpetas en el blob. Se puede usar para diferenciar los datos sin procesar de los datos procesados.

  4. Agregue las líneas de código siguientes en la función run(input_df):

    data = np.array(data)
    result = model.predict(data)
    inputs_dc.collect(data) #this call is saving our input data into Azure Blob
    prediction_dc.collect(result) #this call is saving our prediction data into Azure Blob
    
  5. La recopilación de datos no se establece automáticamente en true cuando se implementa un servicio en AKS. Actualice el archivo de configuración, como en el ejemplo siguiente:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    También puede habilitar Application Insights para la supervisión de servicios si modifica esta configuración:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Para crear una nueva imagen e implementar el modelo de Machine Learning, consulte Implementación de modelos de Machine Learning en Azure.

  7. Agregue el paquete PIP "Azure-Monitoring" a las dependencias de CONDA del entorno de servicio web:

  env = Environment('webserviceenv')
  env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])

Deshabilitar la recopilación de datos

Puede dejar de recopilar datos en cualquier momento. Use código Python para deshabilitar la recopilación de datos.

## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)

Validación y análisis de los datos

Puede elegir la herramienta que prefiera para analizar los datos recopilados en el almacenamiento de blobs.

Acceso rápido a los datos del blob

  1. Inicie sesión en el portal de Azure.

  2. Abra el área de trabajo.

  3. Seleccione Storage.

    Selección de la opción de almacenamiento

  4. Siga la ruta de acceso a los datos de salida del blob con esta sintaxis:

    /modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
    # example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
    

Análisis de los datos del modelo mediante Power BI

  1. Descargue y abra Power BI Desktop.

  2. Seleccione Obtener datos y, luego, Azure Blob Storage.

    Configuración de blobs en Power BI

  3. Agregue el nombre de la cuenta de almacenamiento y escriba la clave de almacenamiento. Para encontrar esta información, seleccione Configuración>Claves de acceso en el blob.

  4. Seleccione el contenedor datos del modelo y elija Editar.

    Navegador de Power BI

  5. En el editor de consultas, haga clic en la columna Nombre y agregue su cuenta de almacenamiento.

  6. Especifique la ruta de acceso del modelo en el filtro. Si quiere mirar únicamente en los archivos de un determinado año o mes, expanda la ruta de acceso de filtro. Por ejemplo, para mirar solo en los datos de marzo, use esta ruta de filtro:

    /modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3

  7. Filtre los datos pertinentes por los valores de Nombre. Si almacenó predicciones y entradas, tendrá que crear una consulta para cada una.

  8. Seleccione las flechas dobles hacia abajo junto al encabezado de columna Contenido para combinar los archivos.

    Contenido de Power BI

  9. Seleccione Aceptar. Los datos se cargan previamente.

    Combinación de archivos en Power BI

  10. Seleccione Close and Apply (Cerrar y aplicar).

  11. Si ha agregado entradas y predicciones, las tablas se ordenan automáticamente por los valores RequestId.

  12. Comience a crear los informes personalizados con los datos del modelo.

Análisis de datos del modelo mediante Azure Databricks

  1. Cree un área de trabajo de Azure Databricks.

  2. Acceda al área de trabajo de Databricks.

  3. En ese área, seleccione Upload Data (Cargar datos).

    Selección de la opción de carga de datos de Databricks

  4. Seleccione Create New Table (Crear nueva tabla) y seleccione Other Data Sources>Azure Blob Storage>Create Table in Notebook (Otros orígenes de datos > Azure Blob Storage > Crear tabla en Notebook).

    Creación de tablas de Databricks

  5. Actualice la ubicación de los datos. Este es un ejemplo:

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/*/*/data.csv" 
    file_type = "csv"
    

    Configuración de Databricks

  6. Siga los pasos de la plantilla para ver y analizar los datos.

Pasos siguientes

Detecte el desfase de datos en los datos que ha recopilado.