Paquetes de modelos para implementación (versión preliminar)
Después de entrenar un modelo de Machine Learning, es necesario implementarlo para que otros puedan usar sus predicciones. Sin embargo, la implementación de un modelo requiere algo más que los pesos o los artefactos del modelo. Los paquetes de modelos son una función de Azure Machine Learning que permite recopilar todas las dependencias necesarias para implementar un modelo de Machine Learning en una plataforma de servicio. Puede mover paquetes entre áreas de trabajo e incluso fuera de Azure Machine Learning.
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.
¿Qué es un paquete de modelo?
Como procedimiento recomendado antes de implementar un modelo, todas las dependencias que requiere el modelo para ejecutarse correctamente deben recopilarse y resolverse para poder implementar el modelo de forma reproducible y sólida.
Normalmente, las dependencias de un modelo incluyen:
- Imagen base o entorno en el que se ejecuta el modelo.
- Lista de paquetes y dependencias de Python de los que depende el modelo para funcionar correctamente.
- Recursos adicionales que el modelo podría necesitar para generar inferencia. Estos activos pueden incluir mapas de etiquetas y parámetros de preprocesamiento.
- Software necesario para que el servidor de inferencia atienda solicitudes; por ejemplo, servidor Flask o servicio de TensorFlow.
- Rutina de inferencia (si es necesario).
Todos estos elementos deben recopilarse para luego implementarse en la infraestructura de servicio. El recurso resultante generado después de recopilar todas las dependencias se denomina paquete de modelo.
Ventajas de empaquetar modelos
El empaquetado de modelos antes de la implementación presenta las siguientes ventajas:
- Reproducibilidad: Todas las dependencias se recopilan en tiempo de empaquetado, en lugar de en tiempo de implementación. Una vez resueltas las dependencias, puede implementar el paquete tantas veces como sea necesario, garantizando al mismo tiempo que las dependencias ya se han resuelto.
- Resolución de conflictos más rápida: Azure Machine Learning detecta cualquier configuración incorrecta relacionada con las dependencias, como la ausencia de un paquete de Python, al empaquetar el modelo. No es necesario implementar el modelo para detectar estos problemas.
- Integración más sencilla con el servidor de inferencia: Dado que el servidor de inferencia que usa podría necesitar configuraciones de software específicas (por ejemplo, paquete Torch Serve), este software puede generar conflictos con las dependencias del modelo. Los paquetes de modelos de Azure Machine Learning insertan las dependencias requeridas por el servidor de inferencia para ayudarle a detectar conflictos antes de implementar un modelo.
- Portabilidad: Puede mover paquetes de modelos de Azure Machine Learning de un área de trabajo a otra mediante registros. También puede generar paquetes que se pueden implementar fuera de Azure Machine Learning.
- Compatibilidad de MLflow con redes privadas: Para los modelos de MLflow, Azure Machine Learning requiere una conexión a Internet para poder instalar dinámicamente los paquetes de Python necesarios para la ejecución de los modelos. Al empaquetar modelos de MLflow, estos paquetes de Python se resuelven durante la operación de empaquetado de modelos, de modo que el paquete del modelo de MLflow no requeriría la implementación de una conexión a Internet.
Sugerencia
El empaquetado de un modelo de MLflow antes de la implementación es muy recomendable e incluso necesario para los puntos de conexión que no tienen conectividad de red saliente. Un modelo de MLflow indica sus dependencias en el propio modelo, lo que requiere la instalación dinámica de paquetes. Cuando se empaqueta un modelo de MLflow, esta instalación dinámica se realiza en el momento del empaquetado en lugar de en el momento de la implementación.
Implementación de paquetes de modelo
Puede proporcionar paquetes de modelos como entradas a los puntos de conexión en línea. El uso de paquetes de modelos ayuda a simplificar los flujos de trabajo de MLOps al reducir las posibilidades de errores en el momento de la implementación, ya que todas las dependencias se habrían recopilado durante la operación de empaquetado. También puede configurar el paquete de modelos para generar imágenes de Docker que podrá implementar en cualquier lugar fuera de Azure Machine Learning, ya sea en las instalaciones o en la nube.
Paquete antes de la implementación
La forma más sencilla de implementar utilizando un paquete de modelos es especificando a Azure Machine Learning que implemente un paquete de modelo, antes de ejecutar la implementación. Al usar la CLI de Azure, el SDK de Azure Machine Learning o Estudio de Azure Machine Learning para crear una implementación en un punto de conexión en línea, puede especificar el uso del empaquetado de modelos de la siguiente manera:
Use la marca --with-package
al crear una implementación:
az ml online-deployment create --with-package -f model-deployment.yml -e $ENDPOINT_NAME
Azure Machine Learning empaqueta primero el modelo y, a continuación, ejecuta la implementación.
Nota:
Al usar paquetes, si indica un entorno base con conda
o pip
dependencias, no es necesario incluir las dependencias del servidor de inferencia (azureml-inference-server-http
). En su lugar, estas dependencias se agregan automáticamente.
Implementar un modelo empaquetado
Puede implementar un modelo que se ha empaquetado directamente en un punto de conexión en línea. Esta práctica garantiza la reproducibilidad de los resultados y es un procedimiento recomendado. Consulte Empaquetar e implementar modelos en puntos de conexión en línea.
Si desea implementar el paquete fuera de Azure Machine Learning, consulte Empaquetar e implementar modelos fuera de Azure Machine Learning.