Puntos de conexión para la inferencia en producción

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

Después de entrenar modelos o canalizaciones de Machine Learning, debe implementarlos en la producción para que otros usuarios puedan usarlos para hacer inferencias. La inferencia es el proceso de aplicar nuevos datos de entrada al modelo o canalización 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. En Azure Machine Learning, se realiza la inferencia mediante puntos de conexión e implementaciones. Los puntos de conexión y las implementaciones permiten desacoplar la interfaz de la carga de trabajo de producción de la implementación que la sirve.

Intuición

Supongamos que está trabajando en una aplicación que predice el tipo y el color de un automóvil según su foto. Para esta aplicación, un usuario con determinadas credenciales realiza una solicitud HTTP a una dirección URL y proporciona una imagen de un automóvil como parte de la solicitud. A cambio, el usuario obtiene una respuesta que incluye el tipo y el color del coche como valores de cadena. En este escenario, la dirección URL actúa como punto de conexión.

A diagram showing the concept of an endpoint.

Además, supongamos que una científica de datos, Alice, trabaja en la implementación de la aplicación. Alice sabe mucho sobre TensorFlow y decide implementar el modelo mediante un clasificador secuencial Keras con una arquitectura restNet de TensorFlow Hub. Después de probar el modelo, Alice está satisfecha con los resultados y decide usar el modelo para resolver el problema de predicción del automóvil. El modelo tiene un tamaño grande y necesita 8 GB de memoria con 4 núcleos para ejecutarse. En este escenario, el modelo y los recursos de Alice necesarios para ejecutar el modelo, como el código y el proceso, constituyen una implementación en el punto de conexión.

A diagram showing the concept of a deployment.

Por último, imaginemos que después de un par de meses, la organización descubre que la aplicación funciona mal en imágenes con condiciones de iluminación no ideales. Bob, otro científico de datos, sabe mucho sobre técnicas de aumento de datos que pueden utilizarse para ayudar al modelo a crear solidez en ese factor. Sin embargo, Bob se siente más cómodo usando Torch a la hora de implementar el modelo y entrena un nuevo modelo con Torch. A Bob le gustaría probar este modelo en producción gradualmente hasta que la organización esté preparada para retirar el antiguo. El nuevo modelo también muestra un mejor rendimiento cuando se implementa en GPU, por lo que la implementación debe incluir una GPU. En este escenario, el modelo y los recursos de Bob necesarios para ejecutar el modelo, como el código y el proceso, constituyen otra implementación en el mismo punto de conexión.

A diagram showing the concept of an endpoint with multiple deployments.

Puntos de conexión e implementaciones

Un punto de conexión es una URL estable y duradera que puede utilizarse para solicitar o invocar un modelo. Las entradas necesarias se proporcionan al punto de conexión y se devuelven las salidas. Los puntos de conexión proporcionan:

  • una dirección URL estable y duradera (como endpoint-name.region.inference.ml.azure.com),
  • un mecanismo de autenticación y
  • un mecanismo de autorización.

Una implementación es un conjunto de recursos y procesos necesarios para hospedar el modelo o el componente que realiza la inferencia real. Un único punto de conexión puede contener varias implementaciones. Estas implementaciones pueden hospedar recursos independientes y consumir distintos recursos en función de las necesidades de los primeros. Los puntos de conexión tienen un mecanismo de enrutamiento que puede dirigir las solicitudes a implementaciones específicas en el punto de conexión.

Para funcionar correctamente, cada punto de conexión debe tener al menos una implementación. Los puntos de conexión y las implementaciones son recursos de Azure Resource Manager independientes que aparecen en Azure Portal.

Puntos de conexión en línea y por lotes

Azure Machine Learning permite implementar puntos de conexión en línea y puntos de conexión por lotes. Los puntos de conexión en línea están diseñados para la inferencia en tiempo real, cuando se invoca el punto de conexión, los resultados se devuelven en la respuesta del punto de conexión. Por otro lado, los puntos de conexión de Batch están diseñados para la inferencia por lotes de larga duración. Cada vez que se invoca un punto de conexión por lotes, se genera un trabajo por lotes que lleva a cabo el trabajo real.

Cuándo usar el punto de conexión en línea o por lotes según su caso de uso

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 en términos del número de solicitudes.

Usa puntos de conexión por lotes para operacionalizar modelos o canalizaciones para la inferencia asincrónica de larga duración. Se recomienda usarlos cuando:

  • Tiene modelos o canalizaciones costosos que requieren un tiempo más largo para ejecutarse.
  • Quiere operacionalizar canalizaciones de aprendizaje automático y reutilizar componentes.
  • Si debe realizar la inferencia en grandes cantidades de datos distribuidos en varios archivos.
  • Si no tiene requisitos de latencia baja.
  • Las entradas del modelo se almacenan en una cuenta de almacenamiento o en un recurso de datos de Azure Machine Learning.
  • Si puede aprovechar la paralelización.

Comparación de puntos de conexión en línea y por lotes

Los puntos de conexión en línea y por lotes se basan en la idea de puntos de conexión e implementaciones, lo que le ayuda a realizar la transición fácilmente de uno a otro. Sin embargo, al pasar de uno a otro, hay algunas diferencias importantes que hay que tener en cuenta. Algunas de estas diferencias se deben a la naturaleza del trabajo:

Puntos de conexión

La siguiente tabla muestra un resumen de las diferentes características disponibles de los puntos de conexión en línea y por lotes.

Característica Puntos de conexión en línea Puntos de conexión por lotes
Dirección URL de invocación estable
Compatibilidad con varias implementaciones
Enrutamiento de la implementación División del tráfico Cambiar al valor predeterminado
Tráfico reflejado para el lanzamiento seguro No
Compatibilidad con Swagger No
Authentication Clave y token Microsoft Entra ID
Compatibilidad con redes privadas
Aislamiento de red gestionada (consulte la configuración adicional necesaria)
Claves administradas por el cliente
Base de costos None Ninguno

Implementaciones

La siguiente tabla muestra un resumen de las diferentes características de los puntos de conexión en línea y por lotes en el nivel de implementación. Estos conceptos se aplican a todas las implementaciones en el punto de conexión.

Característica Puntos de conexión en línea Puntos de conexión por lotes
Tipos de implementación Models Modelos y componentes de canalización
Implementación de modelo de MLflow
Implementación de modelo personalizado Sí, con script de puntuación Sí, con script de puntuación
Implementación de paquetes de modelo 1 Sí (versión preliminar) No
Servidor de inferencia 2 - Servidor de inferencia de Azure Machine Learning
- Triton
- Personalizado (mediante BYOC)
Inferencia por lotes
Recurso de proceso consumido Instancias o recursos pormenorizados Instancias de clúster
Compute type (Tipo de proceso) Proceso administrado y Kubernetes Proceso administrado y Kubernetes
Proceso de prioridad baja No
Escala del proceso a cero No
Proceso de escalado automático3 Sí, en función de la carga de los recursos Sí, en función del número de trabajos
Administración de exceso de capacidad Limitaciones Cola
Base de costos4 Por implementación: instancias de proceso que se ejecutan Por trabajo: instancias de proceso consumidas en el trabajo (este valor está limitado al número máximo de instancias del clúster).
Pruebas locales de implementaciones No

1 La implementación de modelos de MLflow en puntos de conexión sin conectividad saliente a Internet o redes privadas requiere empaquetar el modelo primero.

2 El servidor de inferencia hace referencia a la tecnología de servicio que toma solicitudes, las procesa y crea respuestas. El servidor de inferencia también dicta el formato de la entrada y las salidas esperadas.

3El escalado automático es la capacidad de escalar o reducir verticalmente y de manera dinámica los recursos asignados de la implementación en función de su carga. Las implementaciones en línea y por lotes usan diferentes estrategias de escalado automático. Aunque las implementaciones en línea se escalan y reducen verticalmente en función del uso de recursos (como CPU, memoria, solicitudes, etc.), los puntos de conexión por lotes se escalan o reducen verticalmente en función del número de trabajos creados.

4 Las implementaciones en línea y por lotes cobran por los recursos consumidos. En las implementaciones en línea, los recursos se aprovisionan en el momento de la implementación. Sin embargo, en la implementación por lotes, no se consumen recursos en el momento de la implementación, pero sí cuando se ejecuta el trabajo. Por lo tanto, no hay ningún costo asociado a la propia implementación. Tenga en cuenta que los trabajos en cola tampoco consumen recursos.

Interfaces para desarrolladores

Los puntos de conexión están diseñados para ayudar a las organizaciones a operacionalizar cargas de trabajo de nivel de producción en Azure Machine Learning. Los puntos de conexión son recursos sólidos y escalables y ofrecen lo mejor de las funcionalidades para implementar flujos de trabajo de MLOps.

Puede crear y administrar puntos de conexión por lotes y en línea con varias herramientas de desarrollo:

  • La CLI de Azure y el SDK de Python
  • API de REST o Azure Resource Manager
  • Portal web de Azure Machine Learning Studio
  • Azure Portal (TI o administrador)
  • Compatibilidad con canalizaciones de MLOps de CI/CD mediante la interfaz de la CLI de Azure y las interfaces de REST y Azure Resource Manager

Pasos siguientes