Tutorial: Diseñador: implementación de un modelo de Machine Learning

Use el diseñador para implementar un modelo de Machine Learning para predecir el precio de los automóviles. Este tutorial es la segunda parte de dos.

Nota:

El diseñador admite dos tipos de componentes: componentes precompilados clásicos (v1) y componentes personalizados (v2). Estos dos tipos de componentes NO son compatibles.

Los componentes precompilados clásicos proporcionan componentes precompilados principalmente para el procesamiento de datos y las tareas tradicionales de aprendizaje automático, como la regresión y la clasificación. Este tipo de componentes se sigue admitiendo, pero no se agregará ningún componente nuevo.

Los componentes personalizados le permiten ajustar su propio código como componente. Admite el uso compartido de componentes entre áreas de trabajo y la creación fluida entre las interfaces de Studio, CLI v2 y SDK v2.

Para los proyectos nuevos, le recomendamos que utilice el componente personalizado, que es compatible con AzureML V2, y seguirá recibiendo nuevas actualizaciones.

Este artículo se aplica a los componentes precompilados clásicos y no es compatible con la CLI v2 y el SDK v2.

En la primera parte de este tutorial ha entrenado un modelo de regresión lineal de precios de automóviles. En la segunda parte, implementará el modelo para dar a otros usuarios la oportunidad de utilizarlo. En este tutorial, hizo lo siguiente:

  • Crear una canalización de inferencia en tiempo real.
  • Crear un clúster de inferencia.
  • Implementación del punto de conexión en tiempo real.
  • Prueba del punto de conexión en tiempo real.

Requisitos previos

Complete la parte uno del tutorial para aprender a entrenar y puntuar un modelo de Machine Learning en el diseñador.

Importante

Si no ve los elementos gráficos que se mencionan en este documento, como los botones en Studio o en el diseñador, es posible que no tenga el nivel de permisos adecuado para el área de trabajo. Póngase en contacto con el administrador de suscripciones de Azure para verificar que se le ha concedido el nivel de acceso correcto. Para obtener más información, consulte Administración de usuarios y roles.

Crear una canalización de inferencia en tiempo real

Para implementar la canalización, antes debe convertir la canalización de entrenamiento en una canalización de inferencia en tiempo real. Este proceso quita los componentes de entrenamiento y agrega entradas y salidas de servicios web para administrar las solicitudes.

Nota

La creación de una canalización de inferencia solo admite canalizaciones de entrenamiento que contienen únicamente los componentes integrados del diseñador y deben tener un componente como Entrenar modelo que genera el modelo entrenado.

Crear una canalización de inferencia en tiempo real

  1. En la página de detalles del trabajo de canalización, encima del lienzo de la canalización, seleccione Create inference pipeline>Real-time inference pipeline (Crear canalización de inferencia > Canalización de inferencia en tiempo real).

    Captura de pantalla de la creación de canalización de inferencia en la página de detalles del trabajo de canalización

    La canalización nueva debería tener este aspecto:

    Captura de pantalla que muestra la configuración esperada de la canalización después de prepararla para la implementación.

    Al seleccionar Create inference pipeline (Crear canalización de inferencia), suceden varias cosas:

    • El modelo entrenado se almacena como un componente de Conjunto de datos en la paleta de componentes. Puede encontrarlo en My Datasets (Mis conjuntos de datos).
    • Se quitan los componentes de entrenamiento como Train Model (Entrenar modelo) y Split Data (Dividir datos).
    • El modelo entrenado guardado se vuelve a agregar a la canalización.
    • Se agregan los componentes Entrada de servicio web y Salida de servicio web. Estos componentes muestran dónde entran los datos del usuario en la canalización y dónde se devuelven.

    Nota

    De forma predeterminada, la entrada del servicio web esperará el mismo esquema de datos que los datos de salida del componente que se conecta al mismo puerto de bajada que ellos. En este ejemplo, la entrada del servicio web y los datos de precios de automóviles (sin procesar) se conectan al mismo componente de bajada, por lo que la entrada de servicio web espera el mismo esquema de datos que los datos de precios de automóviles (sin procesar) y la columna de variable de destino price se incluye en el esquema. Sin embargo, al puntuar los datos, normalmente no conocerá los valores de las variables de destino. En tal caso, puede quitar la columna de variable de destino de la canalización de inferencia mediante el componente Seleccionar columnas de conjunto de datos. Asegúrese de que la salida de Seleccionar columnas de conjunto de datos que quita la columna de variable de destino está conectada al mismo puerto que la salida del componente Entrada del servicio web.

  2. Seleccione Enviar y use el mismo destino de proceso y el mismo experimento que usó en la parte 1.

    Si este es el primer trabajo, la canalización puede tardar hasta 20 minutos en finalizar la ejecución. La configuración del proceso predeterminada tiene un tamaño de nodo mínimo de 0, lo que significa que el diseñador debe asignar recursos después de estar inactivo. Los trabajos de canalización repetidos tardarán menos en terminar, dado que los recursos del proceso ya están asignados. Además, el diseñador usa resultados almacenados en la caché de cada componente para mejorar aún más la eficiencia.

  3. Vaya al detalle del trabajo de canalización de inferencia en tiempo real seleccionando el vínculo Detalles del trabajo en el panel izquierdo.

  4. Seleccione Implementar en la página de detalles del trabajo.

    Captura de pantalla que muestra la implementación en la página de detalles del trabajo.

Creación de un clúster de inferencia

En el cuadro de diálogo que aparece, puede seleccionar entre los clústeres de Azure Kubernetes Service (AKS) existentes aquel en el que quiere implementar el modelo. Si no tiene un clúster de AKS, use los pasos siguientes para crear uno.

  1. Seleccione Compute (Proceso) en el cuadro de diálogo que aparece, para ir a la página Compute (Proceso).

  2. En la cinta de opciones de navegación, seleccione Inference Clusters (Clústeres de inferencia)>+ Nuevo.

    Captura de pantalla que muestra cómo ir al panel del nuevo clúster de inferencial

  3. En el panel del clúster de inferencia, configure un nuevo servicio de Kubernetes.

  4. Escriba aks-compute en Compute name (Nombre de proceso).

  5. Seleccione una región cercana que esté disponible para la región.

  6. Seleccione Crear.

    Nota

    La creación de un servicio AKS tarda unos 15 minutos. Puede comprobar el estado de aprovisionamiento en la página Inference Clusters (Clústeres de inferencia).

Implementación del punto de conexión en tiempo real

Después de que el servicio AKS haya terminado de aprovisionarse, vuelva a la canalización de inferencia en tiempo real para finalizar la implementación.

  1. Seleccione Implementar encima del lienzo.

  2. Seleccione Deploy new real-time endpoint (Implementar nuevo punto de conexión en tiempo real).

  3. Seleccione el clúster de AKS que ha creado.

    Captura de pantalla que muestra cómo configurar un nuevo punto de conexión en tiempo real.

    También puede cambiar la configuración avanzada del punto de conexión en tiempo real.

    Configuración avanzada Descripción
    Enable Application Insights diagnostics and data collection (Habilitar la recopilación de datos y el diagnóstico de Application Insights) Si se va a habilitar Azure Application Insights para recopilar datos de los puntos de conexión implementados.
    Valor predeterminado: false.
    Scoring timeout (Tiempo de espera de la puntuación) Tiempo de espera en milisegundos para forzar la puntuación de las llamadas al servicio web.
    Valor predeterminado: 60 000.
    Auto scale enabled (Escalado automático habilitado) Indica si se debe habilitar la escalabilidad automática para el servicio web.
    Valor predeterminado: true.
    Min replicas (Número mínimo de réplicas) Número mínimo de contenedores que se van a usar al escalar automáticamente este servicio web.
    Valor predeterminado: 1.
    Max replicas (Número máximo de réplicas) Número máximo de contenedores que se van a usar al escalar automáticamente este servicio web.
    Valor predeterminado: 10.
    Target utilization (Uso de destino) Uso objetivo (en un porcentaje de 100) que el escalador automático debe intentar mantener para este servicio web.
    Valor predeterminado: 70.
    Refresh period (Período de actualización) Frecuencia (en segundos) con la que la escalabilidad automática intenta escalar este servicio web.
    Valor predeterminado: 1.
    CPU reserve capacity (Capacidad de reserva de CPU) Número de núcleos de CPU que se asigna a este servicio web.
    Valor predeterminado: 0,1.
    Memory reserve capacity (Capacidad de reserva de memoria) Cantidad de memoria (en GB) que se va a asignar a este servicio web.
    Valor predeterminado: 0,5.
  4. Seleccione Implementar.

    Aparece una notificación de éxito del centro de notificaciones después de finalizar la implementación. Esto puede llevar unos minutos.

    Captura de pantalla que muestra la notificación de implementación.

Sugerencia

También puede realizar la implementación en Instancia de Azure Container (ACI) mediante la selección de Instancia de Azure Container en Tipo de proceso en el cuadro de configuración de puntos de conexión en tiempo real. Instancia de Azure Container se usa con fines de pruebas o desarrollo. Use ACI con cargas de trabajo basadas en CPU a pequeña escala que requieran menos de 48 GB de RAM.

Prueba del punto de conexión en tiempo real

Una vez finalizada la implementación, puede ver el punto de conexión en tiempo real; para ello, vaya a la página Endpoints (Puntos de conexión).

  1. En la página Puntos de conexión, seleccione el punto de conexión que implementó.

    En la pestaña Detalles, puede ver más información, como el identificador URI de REST, la definición de Swagger, el estado y las etiquetas.

    En la pestaña Consumir, encontrará código de consumo de ejemplo y claves de seguridad. Además, podrá establecer los métodos de autenticación.

    En la pestaña Registros de implementación, puede encontrar los registros de implementación detallados del punto de conexión en tiempo real.

  2. Para probar el punto de conexión, vaya a la pestaña Prueba. Aquí puede especificar los datos de prueba y seleccionar Probar para verificar la salida del punto de conexión.

Actualización del punto de conexión en tiempo real

Puede actualizar el punto de conexión en línea con el nuevo modelo entrenado en el diseñador. En la página de detalles del punto de conexión en línea, busque el trabajo de canalización de entrenamiento anterior y el trabajo de canalización de inferencia.

  1. Puede encontrar y modificar directamente el borrador de canalización de entrenamiento en la página principal del diseñador.

    También puede abrir el vínculo del trabajo de canalización de entrenamiento y, a continuación, clonarlo en un nuevo borrador de canalización para continuar con la edición.

    Captura de pantalla que muestra el vínculo del trabajo de entrenamiento en la página de detalles del punto de conexión.

  2. Después de enviar la canalización de entrenamiento modificada, vaya a la página de detalles del trabajo.

  3. Cuando finalice el trabajo, haga clic con el botón derecho en Entrenar modelo y seleccione Registrar datos.

    Captura de pantalla que muestra el registro del modelo entrenado como conjunto de datos.

    Escriba el nombre de entrada y seleccione Tipo de archivo.

    Captura de pantalla del registro como recurso de datos con el nuevo recurso de datos seleccionado.

  4. Después de que el conjunto de datos se registre correctamente, abra el borrador de canalización de inferencia o clone el trabajo de canalización de inferencia anterior en un nuevo borrador. En el borrador de canalización de inferencia, reemplace el modelo entrenado anterior que se muestra como el nodo MD-XXXX conectado al componente Score Model por el conjunto de datos recién registrado.

    Captura de pantalla que muestra cómo modificar la canalización de inferencia.

  5. Si necesita actualizar el elemento de preprocesamiento de datos en la canalización de entrenamiento y quiere actualizarlo en la canalización de inferencia, el procesamiento es similar a los pasos anteriores.

    Para ello, es preciso registrar la salida de la transformación del componente de transformación como conjunto de datos.

    Luego, reemplace de forma manual el componente TD- en la canalización de inferencia con el conjunto de datos registrado.

    Captura de pantalla que muestra cómo reemplazar el componente de la transformación.

  6. Después de modificar la canalización de inferencia con el modelo o transformación recién entrenados, envíela. Una vez completado el trabajo, impleméntelo en el punto de conexión en línea existente implementado anteriormente.

    Captura de pantalla que muestra cómo reemplazar el punto de conexión en tiempo real existente.

Limitaciones

  • Debido a la limitación del acceso al almacén de datos, si la canalización de inferencia contiene el componente Importar datos o Exportar datos, se quitará automáticamente cuando se implemente en el punto de conexión en tiempo real.

  • Si tiene conjuntos de datos en la canalización de inferencia en tiempo real y quiere implementarlos en el punto de conexión en tiempo real, este flujo actualmente solo admite conjuntos de datos registrados del almacén de datos Blob. Si quiere usar conjuntos de datos de otros almacenes de datos de tipo, puede usar Seleccionar columna para conectarse con el conjunto de datos inicial con los valores de seleccionar todas las columnas, registrar las salidas de Seleccionar columna como conjunto de datos de archivo y, a continuación, reemplazar el conjunto de datos inicial en la canalización de inferencia en tiempo real por este conjunto de datos recién registrado.

  • Si el grafo de inferencia contiene el componente "Especificar datos manualmente", que no está conectado al mismo puerto que el componente "Entrada de servicio web", el componente "Especificar datos manualmente" no se ejecutará durante el procesamiento de llamadas HTTP. Una solución alternativa consiste en registrar las salidas del componente "Especificar datos manualmente" como conjunto de datos y, a continuación, en el borrador de canalización de inferencia, reemplazar el componente "Especificar datos manualmente" por el conjunto de datos registrado.

    Captura de pantalla que muestra cómo modificar la canalización de inferencia que contiene el componente para especificar datos manualmente.

Limpieza de recursos

Importante

Los recursos que creó pueden usarse como requisitos previos de otros tutoriales y artículos de procedimientos de Azure Machine Learning.

Eliminar todo el contenido

Si no va a usar nada de lo que ha creado, elimine el grupo de recursos completo para que no le genere gastos.

  1. En Azure Portal, seleccione Grupos de recursos en la parte izquierda de la ventana.

    Eliminación de un grupo de recursos en Azure Portal

  2. En la lista, seleccione el grupo de recursos que creó.

  3. Seleccione Eliminar grupo de recursos.

Al eliminar el grupo de recursos también se eliminan todos los recursos que creó en el diseñador.

Eliminación de recursos individuales

En diseñador donde creó el experimento, elimine recursos individuales; para ello, selecciónelos y, luego, haga clic en el botón Eliminar.

El destino de proceso que ha creado aquí se escala automáticamente a cero nodos cuando no se usa. Esta acción se lleva a cabo para minimizar los cargos. Si quiere eliminar el destino de proceso, siga estos pasos:

Eliminación de recursos

Puede anular el registro de los conjuntos de datos del área de trabajo seleccionando cada conjunto de datos y Anular el registro.

Anular el registro de un conjunto de datos

Para eliminar un conjunto de datos, vaya a la cuenta de almacenamiento mediante Azure Portal o el Explorador de Azure Storage y elimine manualmente esos recursos.

Pasos siguientes

En este tutorial ha aprendido los pasos clave para crear, implementar y usar un modelo de Machine Learning en el diseñador. Para más información sobre cómo puede utilizar el diseñador, consulte los vínculos siguientes: