Orquestación de MLOps en Azure Databricks mediante Databricks Notebook

Databricks
Blob Storage
Monitor

En este escenario se describe un enfoque para las operaciones de aprendizaje automático (MLOps) que implica ejecutar el entrenamiento del modelo y la puntuación por lotes en Azure Databricks mediante Databricks Notebook como orquestador, así como administrar el ciclo de vida de aprendizaje automático de un extremo a otro mediante la plataforma MLflow de código abierto.

Posibles casos de uso

Aunque usa grandes conjuntos de datos (millones de registros) para el entrenamiento de modelos y la puntuación por lotes, las fases de MLOps, como la ingeniería de características y el entrenamiento de modelos, pueden convertirse en procesos de ejecución prolongada. Para asegurarse de que estas tareas de ejecución prolongada se controlan correctamente y de que cada fase continúa de forma resistente, es fundamental administrar, supervisar y ejecutar las fases de MLOps con un alto grado de control y flexibilidad.

El uso de un proyecto de MLflow es un enfoque común para orquestar diferentes fases de MLOps. Sin embargo, las limitaciones de los sistemas de hospedaje e implementación pueden dificultar la ejecución resistente de las fases mediante MLflow. Como alternativa, puede usar Databricks Notebook como orquestador que administra las distintas fases de MLOps necesarias para el entrenamiento del modelo o la puntuación por lotes.

Un orquestador de Databricks Notebook se puede ejecutar mediante un trabajo de Databricks en un clúster de Databricks existente o en un nuevo clúster, un enfoque que le permite obtener más control sobre la orquestación aprovechando las características adicionales de Databricks, como widgets, bibliotecas con ámbito de cuaderno, trabajos, etc.

Architecture

El proceso de este escenario funciona de la siguiente manera:

  1. Ejecutar la canalización de integración continua. Esto implica lo siguiente:

    1. Pruebas unitarias y comprobaciones de Lint.

    2. Empaquetado de código fuente de ML y de MLOps (paquetes de rueda).

  2. Ejecutar la canalización de implementación continua. Esto implica lo siguiente:

    1. Carga de los paquetes de rueda de ML y MLOps en Azure Databricks DBFS.

    2. Importación de los archivos de origen de Python del orquestador como cuadernos de Azure Databricks.

    3. Creación o actualización de trabajos de Azure Databricks según las plantillas de trabajo (archivos JSON) almacenadas en el control de código fuente.

  3. Desencadenar o programar el entrenamiento del modelo o la puntuación por lotes de trabajos de Azure Databricks con los parámetros necesarios.

  4. El trabajo de Azure Databricks invoca su cuaderno de orquestador correspondiente.

  5. El cuaderno de orquestador ejecuta un comando "pip" de Python mágico para instalar paquetes de rueda de ML y MLOps como bibliotecas con ámbito de cuaderno.

  6. El cuaderno de orquestador ejecuta la función de Python de MLOps y la función ML de Python correspondiente para la fase desde los paquetes de rueda instalados.

    También puede implementar la lógica condicional de Python para habilitar o deshabilitar fases específicas de MLOps para una ejecución determinada o volver a ejecutar el trabajo de Azure Databricks. Por ejemplo, si es necesario deshabilitar la fase "Ingeniería de características" de MLOps para volver a ejecutarla, puede usar un parámetro de trabajo de Azure Databricks para establecer cuándo deshabilitarla.

    Nota: Este paso se repetirá para todas las fases de MLOps.

  7. Los resultados del entrenamiento del modelo o la puntuación por lotes se pueden publicar tanto en artefactos de MLflow como en Azure Storage en función del uso:

    1. El registro de modelos de MLflow se usa para almacenar el modelo entrenado para la puntuación por lotes.

    2. Los artefactos de MLflow pueden contener resultados estadísticos durante el entrenamiento o la puntuación por lotes. Por ejemplo, gráficos de PCA, trazados de Box, UMAP, etc.

    3. Azure Storage pueden contener resultados de puntuación por lotes.

  8. Supervisión de una ejecución de trabajo doe Azure Databricks:

    1. Los parámetros de MLflow se usan para almacenar parámetros relacionados con el modelo, como hiperparámetros de entrenamiento, etc.

    2. Las métricas de MLflow se usan para almacenar las métricas de rendimiento del modelo.

    3. Azure Monitor se usa para almacenar registros, seguimientos y métricas de fases de MLOps.

    4. Azure Monitor se usa para la supervisión general de clústeres de Azure Databricks.

Ventajas

Además de abordar el problema del proceso de ejecución prolongada, este enfoque también agrega ventajas potenciales:

  • Una alternativa a los proyectos de MLflow

    • Este enfoque permite reutilizar un clúster de Databricks existente. Para ejecutar un proyecto de MLflow en Azure Databricks, se debe crear un nuevo clúster. No se puede usar un clúster existente. Sin embargo, en determinadas situaciones no es posible crear un nuevo clúster en Databricks; por ejemplo, si se comparte el servicio Databricks o si carece de los permisos necesarios para crear nuevos clústeres. En estas situaciones, este enfoque ofrece una solución alternativa.

    • Este enfoque se puede usar completamente en el ecosistema de Databricks mediante características, como Trabajos o Grupos de nodos, sin interactuar con sistemas externos (por ejemplo, la CLI de MLflow). Esto podría ser necesario si el acceso a Databricks está restringido detrás de una VPN.

  • Capacidad de prueba del código de MLOps

    • Las pruebas unitarias de paquetes de MLOps permiten detectar errores al principio del proceso de desarrollo.

    • Al usar de cuadernos para la orquestación, el código del orquestador se puede probar mediante pruebas de integración con la ayuda de un marco de pruebas como Nutter.

Componentes

En este escenario se usan los siguientes componentes:

  • MLOps, basado en principios y procedimientos de DevOps que aumentan la eficacia de los flujos de trabajo.

  • MLflow, una plataforma de código abierto para administrar el ciclo de vida del aprendizaje automático de un extremo a otro.

  • Azure Databricks, una plataforma de análisis de datos optimizada para la plataforma de servicios en la nube de Microsoft Azure.

  • Azure Blob Storage, la solución de almacenamiento de objetos de Microsoft para la nube. El almacenamiento de blobs está optimizado para almacenar grandes cantidades de datos no estructurados.

  • Azure Monitor, una solución completa para recopilar, analizar y actuar en la telemetría desde los entornos local y en la nube.

Consideraciones

Esta arquitectura no proporciona compatibilidad en la compilación para la ejecución en entornos remotos.

Alternativas

Si puede crear nuevos clústeres de Databricks y puede interactuar con sistemas externos como la CLI de MLflow, también puede considerar la posibilidad de ejecutar estos tipos de cargas de trabajo mediante proyectos de MLflow. Consulte Ejecución de proyectos de MLflow en Azure Databricks.

Si las cargas de trabajo dependen en gran medida de la ejecución remota mediante Azure Machine Learning y una solución de implementación contenedorizada como Azure Kubernetes Service (AKS), MLflow también puede ser una mejor opción para satisfacer sus necesidades. Consulte MLflow y Azure Machine Learning.

Precios

Los costos relacionados con este caso de uso dependerán de los precios estándar de los siguientes servicios, en función de su uso:

Implementación de este escenario

Hay disponible una implementación de ejemplo de este concepto en Azure Databricks MLOps mediante el repositorio de MLflow. Este ejemplo proporciona lo siguiente:

  • Una manera de ejecutar operaciones MLOps basadas en Python sin usar  proyectos de MLflow, pero usando MLflow para administrar el ciclo de vida de aprendizaje automático de un extremo a otro.

  • Un ejemplo de estructura de código fuente de aprendizaje automático junto con casos de pruebas unitarias.

  • Ejemplo de estructura de código de MLOps junto con casos de pruebas unitarias.

  • Una configuración de demostración para probar la suscripción.

Pasos siguientes

¿Quiere obtener más información sobre el desarrollo de una solución de aprendizaje automático en Azure? Vea los artículos siguientes:

También pueden resultarle útiles estos artículos del Centro de arquitectura: