Puntos de conexión e implementaciones en línea 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)

Azure Machine Learning permite realizar inferencia en tiempo real en los datos usando modelos que están implementados en puntos de conexión en línea. La inferencia es el proceso de aplicar nuevos datos de entrada a un modelo de Machine Learning para generar salidas. Aunque estas salidas se conocen normalmente como "predicciones", la inferencia se puede usar para generar salidas para otras tareas de aprendizaje automático, como la clasificación y la agrupación en clústeres.

Puntos de conexión en línea

Los puntos de conexión en línea implementan modelos en un servidor web que pueden devolver predicciones con el protocolo HTTP. Use puntos de conexión en línea para operacionalizar modelos para la inferencia en tiempo real en solicitudes sincrónicas de baja latencia. Se recomienda usarlos cuando:

  • Tiene requisitos de baja latencia.
  • El modelo puede responder a la solicitud en un período de tiempo relativamente corto.
  • Las entradas del modelo se ajustan a la carga HTTP de la solicitud.
  • Debe escalar verticalmente el número de solicitudes.

Para definir un punto de conexión, deberá especificar:

  • Nombre del punto de conexión: este nombre debe ser único en la región de Azure. Para más información acerca de las reglas de nomenclatura, consulte límites del punto de conexión.
  • Modo de autenticación: puede elegir entre el modo de autenticación basado en claves y el modo de autenticación basado en tokens de Azure Machine Learning para el punto de conexión. Una clave no expira, pero un token sí. Para más información sobre la autenticación, consulte Autenticación en un punto de conexión en línea.

Azure Machine Learning proporciona la comodidad de usar puntos de conexión en línea administrados para implementar modelos de ML de forma inmediata. Esta es la manera recomendada de usar puntos de conexión en línea en Azure Machine Learning. Los puntos de conexión en línea administrados funcionan con máquinas eficaces de CPU y GPU en Azure de una manera escalable y totalmente administrada. Estos puntos de conexión también se encargan de atender, escalar, proteger y supervisar los modelos, lo que le libera de la sobrecarga de configurar y administrar la infraestructura subyacente. Para información sobre cómo implementar modelos en un punto de conexión en línea administrado, consulte Implementación de un modelo de aprendizaje automático mediante un punto de conexión en línea.

¿Por qué elegir puntos de conexión en línea administrados a través de ACI o AKS(v1)?

El uso de puntos de conexión en línea administrados es la manera recomendada de usar puntos de conexión en línea en Azure Machine Learning. En la tabla siguiente se resaltan los atributos clave de los puntos de conexión en línea administrados en comparación con las soluciones del SDK o la CLI v1 de Azure Machine Learning (ACI y AKS[v1]).

Atributos Puntos de conexión en línea administrados (v2) ACI o AKS(v1)
Aislamiento y seguridad de red Control de entrada y salida sencillo con alternancia rápida No se admiten redes virtuales ni se requiere una configuración manual compleja.
Servicio administrado - Aprovisionamiento o escalado de la capacidad de proceso totalmente administrados.
- Configuración de red para la prevención de la filtración de datos.
- Actualización del sistema operativo host, lanzamiento controlado de actualizaciones en contexto.
- Escalado limitado en v1.
- El usuario debe administrar la configuración o la actualización de la red.
Concepto de punto de conexión/implementación La distinción entre punto de conexión e implementación permite escenarios complejos, como el lanzamiento seguro de modelos. Ningún concepto de punto de conexión.
Diagnóstico y supervisión - La depuración del punto de conexión local es posible con Docker y Visual Studio Code.
​ - Análisis avanzado de métricas y registros con gráfico o consulta para compararlos entre implementaciones.
- Desglose del costo hasta el nivel de implementación.
Sin depuración local sencilla.
Escalabilidad Escalado ilimitado, elástico y automático. - ACI no es escalable.
- AKS (v1) solo admite el escalado en clúster y requiere que se configure la escalabilidad.
Adecuado para empresas Vínculo privado, claves administradas por el cliente, Microsoft Entra ID, administración de cuotas, integración de facturación, Acuerdo de Nivel de Servicio. No compatible
Características avanzadas de ML - Recopilación de datos de modelos.
- Supervisión de modelos.
- Modelo champion/challenger, implementación segura, reflejo del tráfico.
- Extensibilidad de IA responsable.
No compatible

Como alternativa, si prefiere usar Kubernetes para implementar los modelos y atender puntos de conexión, y se siente a gusto administrando los requisitos de infraestructura, puede usar puntos de conexión en línea de Kubernetes. Estos puntos de conexión de Kubernetes permiten implementar modelos y atender puntos de conexión en línea en un clúster de Kubernetes totalmente configurado y administrado en cualquier lugar, con CPU o GPU.

¿Por qué elegir puntos de conexión en línea administrados a través de AKS(v2)?

Los puntos de conexión en línea administrados pueden simplificar el proceso de implementación y proporcionan las siguientes ventajas sobre los puntos de conexión en línea de Kubernetes:

  • Infraestructura administrada

    • Aprovisiona automáticamente el proceso y hospeda el modelo (el usuario solo tiene que especificar el tipo de máquina virtual y la configuración del escalado).
    • Realiza automáticamente actualizaciones y revisiones en la imagen del sistema operativo del host subyacente.
    • Recupera los nodos automáticamente si se produce un error del sistema.
  • Supervisión y registros

    Screenshot showing Azure Monitor graph of endpoint latency.

  • Visualización de costos

    Screenshot cost chart of an endpoint and deployment.

    Nota:

    Los puntos de conexión en línea administrados se basan en el proceso de Azure Machine Learning. Cuando se usa un punto de conexión en línea administrado, se pagan los cargos de proceso y redes. No hay cargos adicionales. Para más información sobre precios, consulte Calculadora de precios de Azure.

    Si usa una red virtual de Azure Machine Learning para proteger el tráfico saliente del punto de conexión en línea administrado, se le cobra por el vínculo privado de Azure y las reglas de salida de FQDN que usa la red virtual administrada. Para más información, consulte Precios de la red virtual administrada.

Puntos de conexión en línea administrados frente a puntos de conexión en línea de Kubernetes

En la tabla siguiente se resaltan las principales diferencias entre los puntos de conexión en línea administrados y los puntos de conexión en línea de Kubernetes.

Puntos de conexión en línea administrados Puntos de conexión en línea de Kubernetes (AKS[v2])
Usuarios recomendados Usuarios que desean una implementación de modelo administrada y una experiencia de MLOps mejorada Usuarios que prefieren Kubernetes y pueden autoadministrar los requisitos de infraestructura
Aprovisionamiento de nodos Aprovisionamiento, actualización y eliminación de procesos administrados Responsabilidad del usuario
Mantenimiento de nodos Actualizaciones de imágenes del sistema operativo del host administradas y refuerzo de la seguridad Responsabilidad del usuario
Ajuste de tamaño del clúster (escalado) Escalado automático y manual administrado, compatible con el aprovisionamiento de nodos adicionales Escalado manual y automático, compatible con el escalado del número de réplicas dentro de los límites fijos del clúster
Compute type (Tipo de proceso) Administrado por el servicio Clúster de Kubernetes administrado por el cliente (Kubernetes)
Identidad administrada Compatible Compatible
Virtual Network (VNET) Se admite a través del aislamiento de red administrada Responsabilidad del usuario
Supervisión inmediata y registro Con tecnología de Azure Monitor y Log Analytics (incluye métricas clave y tablas de registro para puntos de conexión e implementaciones) Responsabilidad del usuario
Registro con Application Insights ( heredado) Compatible Compatible
Visualización de costos Detallado al punto de conexión o nivel de implementación Nivel de clúster
Costo aplicado a Máquinas virtuales asignadas a las implementaciones Máquinas virtuales asignadas al clúster
Tráfico reflejado Compatible No compatible
Implementación sin código Compatible (modelos MLflow y Triton ) Compatible (modelos MLflow y Triton )

Implementaciones en línea

Una implementación es un conjunto de recursos y procesos necesarios para hospedar el modelo que realiza la inferencia real. Un único punto de conexión puede contener varias implementaciones con diferentes configuraciones. Esta configuración ayuda a desacoplar la interfaz presentada por el punto de conexión a partir de los detalles de implementación existentes en la implementación. Un punto de conexión en línea tiene un mecanismo de enrutamiento que puede dirigir las solicitudes a implementaciones específicas en el punto de conexión.

En el siguiente diagrama se muestra un punto de conexión en línea que tiene dos implementaciones, azul y verde. En la implementación azul se usan máquinas virtuales con una SKU de CPU y ejecuta la versión 1 de un modelo. En la implementación verde se usan máquinas virtuales con una SKU que tiene GPU y se ejecuta la versión 2 del modelo. El punto de conexión está configurado para dirigir el 90 % del tráfico entrante a la implementación azul, mientras que la verde recibe el 10 % restante.

Diagram showing an endpoint splitting traffic to two deployments.

En la tabla siguiente, se describen los atributos clave de una implementación:

Atributo Description
Nombre Nombre de la implementación.
El nombre del punto de conexión El nombre del punto de conexión en el que se creará la implementación.
Modelo Modelo que se usará para la implementación. Este valor puede ser una referencia a un modelo con versiones existente en el área de trabajo o una especificación de modelo en línea.
Ruta de acceso al código Ruta de acceso al directorio en el entorno de desarrollo local que contiene todo el código fuente de Python para puntuar el modelo. Puede usar directorios y paquetes anidados.
Script de puntuación La ruta de acceso relativa al archivo de puntuación en el directorio de código fuente. Este código de Python debe tener una función init() y una función run(). Se llamará a la función init() después de crear o actualizar el modelo (puede usarla para copiar en caché el modelo en la memoria, por ejemplo). Se llama a la función run() en cada invocación del punto de conexión para realizar la puntuación o predicción reales.
Entorno Entorno para hospedar el modelo y el código. Este valor puede ser una referencia a un entorno con versiones existente en el área de trabajo o una especificación de entorno en línea. Nota: Microsoft aplica revisiones periódicas de las vulnerabilidades de seguridad conocidas a las imágenes base. Debe volver a implementar el punto de conexión para usar la imagen revisada. Si proporciona su propia imagen, es usted el responsable de actualizarla. Para más información, consulte Aplicación de revisiones de imágenes.
Tipo de instancia Tamaño de máquina virtual que se usará para la implementación. Para la lista de tamaños admitidos, consulte Lista de SKU de puntos de conexión en línea administrados.
Recuento de instancias El número de instancias que se usarán para la implementación. Base el valor en la carga de trabajo esperada. Para lograr alta disponibilidad, se recomienda establecer el valor en al menos 3. Reservamos un 20 % adicional para realizar actualizaciones. Para más información, consulte Asignación de la cuota de máquina virtual para la implementación.

Para aprender a implementar puntos de conexión en línea mediante la CLI, el SDK, Estudio y una plantilla de ARM, consulte Implementación de un modelo de aprendizaje automático mediante un punto de conexión en línea.

Implementación para codificadores y no codificadores

Azure Machine Learning admite la implementación de modelos en puntos de conexión en línea para codificadores y no codificadores, ya que proporciona opciones para la implementación sin código, la implementación con poco código y la implementación BYOC (Bring Your Own Container).

  • La implementación sin código proporciona inferencia integrada para marcos comunes (por ejemplo, scikit-learn, TensorFlow, PyTorch y ONNX) a través de MLflow y Triton.
  • La implementación con poco código le permite proporcionar un mínimo de código junto con el modelo de ML para la implementación.
  • La implementación BYOC le permite aportar virtualmente contenedores para ejecutar el punto de conexión en línea. Puede usar todas las características de la plataforma Azure Machine Learning, como la escalabilidad automática, GitOps, la depuración y el lanzamiento seguro para administrar las canalizaciones de MLOps.

En la tabla siguiente se indican los aspectos clave de las opciones de implementación en línea:

Sin código Con poco código BYOC
Resumen Usa inferencia integrada para marcos populares, como scikit-learn, TensorFlow, PyTorch y ONNX, a través de MLflow y Triton. Para más información, consulte Implementación de modelos de MLflow en puntos de conexión en línea. Usa imágenes mantenidas públicas para marcos populares, con actualizaciones cada dos semanas para solucionar vulnerabilidades. Usted proporciona el script de puntuación o las dependencias de Python. Para más información, consulte Entornos mantenidos de Azure Machine Learning. Usted proporciona la pila completa a través de la compatibilidad de Azure Machine Learning con imágenes personalizadas. Para más información, consulte Uso de un contenedor personalizado para implementar un modelo en un punto de conexión en línea.
Imagen base personalizada No, la proporciona el entorno mantenido para facilitar la implementación. Sí y no. Puede usar la imagen mantenida o una imagen personalizada. Sí, traiga una ubicación de imagen de contenedor accesible (por ejemplo, docker.io, Azure Container Registry (ACR) o Microsoft Container Registry (MCR)) o un Dockerfile que pueda compilar o insertar con ACR para el contenedor.
Dependencias personalizadas No, la proporciona el entorno mantenido para facilitar la implementación. Sí, traiga el entorno de Azure Machine Learning en el que se ejecuta el modelo, una imagen de Docker con dependencias de Conda o un Dockerfile.. Sí, se incluye en la imagen de contenedor.
Código personalizado No, el script de puntuación se genera automáticamente para facilitar la implementación. Sí, traiga su script de puntuación. Sí, se incluye en la imagen de contenedor.

Nota:

Las ejecuciones de AutoML crean automáticamente un script de puntuación y dependencias para los usuarios, por lo que puede implementar cualquier modelo de AutoML sin crear código adicional (para la implementación sin código); o bien puede modificar los scripts generados automáticamente para ajustarlos a las necesidades de su negocio (para la implementación con poco código). Para aprender a implementar con modelos de AutoML, consulte Implementación de un modelo de AutoML con un punto de conexión en línea.

Depuración de puntos de conexión en línea

Azure Machine Learning proporciona varias formas de depurar puntos de conexión en línea en modo local y mediante registros de contenedor.

Depuración local con el servidor HTTP de inferencia de Azure Machine Learning

Puede depurar el script de puntuación localmente usando el servidor HTTP de inferencia de Azure Machine Learning. El servidor HTTP es un paquete de Python que expone la función de puntuación como un punto de conexión HTTP y encapsula el código y las dependencias del servidor Flask en un mismo paquete. Se incluye en las imágenes de Docker precompiladas para inferencia que se usan al implementar un modelo con Azure Machine Learning. El uso del paquete por sí solo le permite implementar el modelo localmente para la producción, y también puede validar fácilmente su script de puntuación (entrada) en un entorno de desarrollo local. Si hay un problema con el script de puntuación, el servidor devolverá un error y la ubicación donde se produjo el error. También puede usar Visual Studio Code para la depuración con el servidor HTTP de inferencia de Azure Machine Learning.

Para más información sobre la depuración con el servidor HTTP, consulte Depuración del script de puntuación con el servidor HTTP de inferencia de Azure Machine Learning.

Depuración local

Para la depuración local, necesita una implementación local, es decir, un modelo implementado en un entorno de Docker local. Puede usar esta implementación local para probar y depurar el punto de conexión antes de implementarlo en la nube. Para la implementación local, debe tener instalado y en ejecución el motor de Docker. Azure Machine Learning crea una imagen de la instancia local de Docker que imita la imagen de Azure Machine Learning. Azure Machine Learning creará y ejecutará las implementaciones de forma local y almacenará en caché la imagen para lograr iteraciones rápidas.

Los pasos para la depuración local suelen incluir:

  • Comprobación de que la implementación local se ha realizado correctamente.
  • Invocación del punto de conexión local para la inferencia.
  • Revisión de los registros para ver la salida de la operación de invocación.

Para más información sobre la depuración local, consulte Implementación y depuración locales mediante puntos de conexión locales.

Depuración local con Visual Studio Code (versión preliminar)

Importante

Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas.

Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Al igual que con la depuración local, primero debe tener instalado y en ejecución el motor de Docker y, a continuación, implementar un modelo en el entorno de Docker local. Una vez que tenga una implementación local, los puntos de conexión locales de Azure Machine Learning usan contenedores de desarrollo de Docker y Visual Studio Code para compilar y configurar un entorno de depuración local. Con los contenedores de desarrollo, puede aprovechar las características de Visual Studio Code, como la depuración interactiva, desde un contenedor de Docker.

Para más información sobre la depuración interactiva de puntos de conexión en línea en VS Code, consulte Depuración de puntos de conexión en línea localmente en Visual Studio Code.

Depuración con registros de contenedor

En una implementación, no puede acceder directamente a la máquina virtual donde está implementado el modelo. Sin embargo, puede obtener registros de algunos de los contenedores que se ejecutan en ella. Hay dos tipos de contenedores de los que puede obtener los registros:

  • Servidor de inferencia: los registros incluyen el registro de consola (del servidor de inferencia) que contiene la salida de las funciones de impresión y registro del script de puntuación (código score.py).
  • Inicializador de almacenamiento: estos registros contienen información sobre si el código y los datos del modelo se descargaron correctamente en el contenedor. El contenedor se ejecuta antes de que se inicie la ejecución del contenedor del servidor de inferencia.

Para más información sobre la depuración con registros de contenedor, consulte Obtención de registros de contenedor.

Enrutamiento y reflejo del tráfico en implementaciones en línea

Recuerde que un único punto de conexión puede tener varias implementaciones. A medida que el punto de conexión recibe tráfico entrante (o solicitudes), puede dirigir porcentajes de tráfico a cada implementación, como se usa en la estrategia de implementación azul/verde nativa. Además, puede reflejar (o copiar) el tráfico de una implementación en otra, lo que también se denomina creación de reflejo o sesión concurrente del tráfico.

Enrutamiento del tráfico en una implementación azul/verde

La implementación azul/verde es una estrategia de implementación que permite llevar a cabo una nueva implementación (verde) en un pequeño subconjunto de usuarios o solicitudes antes de implementarla por completo. El punto de conexión puede implementar equilibrio de carga para asignar determinados porcentajes del tráfico a cada implementación, de modo que la suma total de las asignaciones de todas las implementaciones es el 100 %.

Sugerencia

Una solicitud puede omitir el equilibrio de carga de tráfico configurado incluyendo un encabezado HTTP de azureml-model-deployment. Establezca el valor de encabezado en el nombre de la implementación a la que desea enrutar la solicitud.

En la imagen siguiente se muestra la configuración en Estudio de Azure Machine Learning para asignar tráfico entre una implementación azul y una verde.

Screenshot showing slider interface to set traffic allocation between deployments.

Esta asignación de tráfico dirige el tráfico como se muestra en la siguiente imagen, donde el 10 % del tráfico va a la implementación verde y el 90 % del tráfico va a la implementación azul.

Diagram showing an endpoint splitting traffic to two deployments.

Creación de reflejo del tráfico en implementaciones en línea

El punto de conexión también puede reflejar (o copiar) el tráfico de una implementación a otra. La creación de reflejo del tráfico (también denominada sesión concurrente de prueba) es útil cuando se desea probar una nueva implementación con tráfico de producción sin que afecte a los resultados que los clientes reciben de las implementaciones actuales. Por ejemplo, al llevar a cabo una implementación azul/verde donde el 100 % del tráfico se dirige a la implementación azul y el 10 % se refleja en la implementación verde, los resultados del tráfico reflejado en la implementación verde no se devuelven a los clientes, pero se registran las métricas y los registros.

Diagram showing an endpoint mirroring traffic to a deployment.

Para información sobre cómo usar la creación de reflejo del tráfico, consulte Lanzamiento seguro de nuevas implementaciones para la inferencia en tiempo real.

Más funcionalidades de los puntos de conexión en línea en Azure Machine Learning

Autenticación y cifrado

  • Autenticación: claves y tokens de Azure Machine Learning
  • Identidad administrada: asignada por el usuario y asignada por el sistema
  • SSL de forma predeterminada para la invocación de puntos de conexión

Escalado automático

El escalado automático ejecuta automáticamente la cantidad adecuada de recursos para controlar la carga en la aplicación. Los puntos de conexión administrados admiten el escalado automático mediante la integración con la característica de escalado automático de Azure Monitor. Puede configurar escalado basado en métricas (por ejemplo, uso de CPU > 70 %), escalado basado en programación (por ejemplo, reglas de escalado para horario comercial punta) o una combinación.

Screenshot showing that autoscale flexibly provides between min and max instances, depending on rules.

Para saber cómo configurar la escalabilidad automática, consulte Escalabilidad automática de un punto de conexión en línea.

Aislamiento de red gestionada

Al implementar un modelo de ML en un punto de conexión en línea administrado, puede proteger la comunicación con el punto de conexión en línea usando puntos de conexión privados.

Puede configurar la seguridad para las solicitudes de puntuación de entrada y las comunicaciones salientes con el área de trabajo y otros servicios por separado. Las comunicaciones entrantes usan el punto de conexión privado del área de trabajo de Azure Machine Learning. Las comunicaciones salientes usan puntos de conexión privados creados para la red virtual administrada del área de trabajo.

Para obtener más información, consulte Aislamiento de red con puntos de conexión en línea administrados.

Supervisión de los puntos de conexión en línea y las implementaciones

La supervisión de los puntos de conexión de Azure Machine Learning es posible mediante la integración con Azure Monitor. Esta integración permite ver métricas en gráficos, configurar alertas, consultar tablas de registros, usar Application Insights para analizar eventos de contenedores de usuarios, etc.

  • Métricas: use Azure Monitor para hacer un seguimiento de varias métricas de los puntos de conexión, como la latencia de las solicitudes, y explorar en profundidad el nivel de implementación o estado. También puede hacer un seguimiento de las métricas de nivel de implementación, como el uso de CPU/GPU, y explorar en profundidad hasta el nivel de instancia. Azure Monitor permite hacer un seguimiento de estas métricas en gráficos y configurar paneles y alertas para su posterior análisis.

  • Registros: envíe métricas al área de trabajo de Log Analytics, donde puede consultar los registros utilizando la sintaxis de consulta de Kusto. También puede enviar métricas a la cuenta de almacenamiento o a Event Hubs para seguir procesándolas. Además, puede usar tablas de registros dedicadas para eventos relacionados con puntos de conexión en línea, el tráfico y los registros de contenedor. La consulta de Kusto permite un análisis complejo que combina varias tablas.

  • Application Insights: los entornos mantenidos incluyen la integración con Application Insights y puede habilitarla o deshabilitarla cuando crea una implementación en línea. Los registros y las métricas integradas se envían a Application Insights, y puede usar las características integradas (métricas en directo, búsqueda de transacciones, errores y rendimiento), para analizarlos más en profundidad.

Para más información sobre la supervisión, consulte Supervisión de los puntos de conexión en línea.

Inyección secreta en implementaciones en línea (versión preliminar)

La inyección de secretos en el contexto de una implementación en línea es un proceso de recolección de secretos (como claves de API) de almacenes de secretos e inyección de los mismos en el contenedor de usuario que se ejecuta dentro de una implementación en línea. Eventualmente, los secretos serán accesibles a través de variables de entorno, proporcionando así una forma segura de que sean consumidos por el servidor de inferencia que ejecuta su script de puntuación o por la pila de inferencia que traiga con un enfoque de implementación BYOC (traiga su propio contenedor).

Hay dos maneras de insertar secretos. Puede insertar secretos usted mismo, mediante identidades administradas, o puede usar la característica de inserción de secretos. Para más información sobre las formas de insertar secretos, consulte Inserción de secretos en puntos de conexión en línea (versión preliminar).

Pasos siguientes