Operar un servidor de seguimiento de MLflow autoadministrado conlleva una sobrecarga administrativa, incluido el mantenimiento del servidor y la ampliación de recursos. A medida que los equipos escalan su experimentación con ML, administrar eficientemente los recursos durante el uso pico y los períodos de inactividad es un desafío. Las organizaciones que ejecutan MLflow en Amazon EC2 o localmente pueden optimizar los costos y los recursos de ingeniería utilizando Amazon SageMaker AI con MLflow sin servidor.
Esta publicación le muestra cómo migrar su servidor de seguimiento MLflow autoadministrado a una aplicación MLflow, un servidor de seguimiento sin servidor en SageMaker AI que escala automáticamente los recursos según la demanda y al mismo tiempo elimina las tareas de administración de almacenamiento y parches del servidor sin costo alguno. Aprenda a utilizar la herramienta MLflow Export Import para transferir sus experimentos, ejecuciones, modelos y otros recursos de MLflow, incluidas instrucciones para validar el éxito de su migración.
Si bien esta publicación se centra en la migración de servidores de seguimiento de MLflow autoadministrados a SageMaker con MLflow, la herramienta MLflow Export Import ofrece una utilidad más amplia. Puede aplicar el mismo enfoque para migrar los servidores de seguimiento de MLflow administrados por SageMaker existentes a la nueva capacidad de MLflow sin servidor en SageMaker. La herramienta también ayuda con las actualizaciones de versiones y el establecimiento de rutinas de respaldo para la recuperación ante desastres.
Guía paso a paso: seguimiento de la migración del servidor a SageMaker con MLflow
La siguiente guía proporciona instrucciones paso a paso para migrar un servidor de seguimiento de MLflow existente a SageMaker con MLflow. El proceso de migración consta de tres fases principales: exportar sus artefactos de MLflow al almacenamiento intermedio, configurar una aplicación MLflow e importar sus artefactos. Puede optar por ejecutar el proceso de migración desde una instancia EC2, su computadora personal o una computadora portátil SageMaker. Cualquiera que sea el entorno que seleccione debe mantener la conectividad tanto con su servidor de seguimiento de origen como con su servidor de seguimiento de destino. MLflow Export Import admite exportaciones desde servidores de seguimiento autoadministrados y servidores de seguimiento de Amazon SageMaker MLflow (desde MLflow v2.16 en adelante) a Amazon SageMaker Serverless MLflow.
Figura 1: Proceso de migración con la herramienta MLflow Export Import
Requisitos previos
Para seguir esta publicación, asegúrese de tener los siguientes requisitos previos:
Paso 1: verificar la compatibilidad de la versión de MLflow
Antes de comenzar la migración, recuerde que es posible que no todas las funciones de MLflow sean compatibles con el proceso de migración. La herramienta MLflow Export Import admite diferentes objetos según su versión de MLflow. Para prepararse para una migración exitosa:
Verifique la versión actual de MLflow de su servidor de seguimiento de MLflow existente: revise la última versión compatible de MLflow en la documentación de Amazon SageMaker MLflow. Si está ejecutando una versión anterior de MLflow en un entorno autoadministrado, le recomendamos actualizar a la última versión compatible con Amazon SageMaker MLflow antes de continuar con la migración:
Para obtener una lista actualizada de los recursos de MLflow que se pueden transferir mediante MLflow Export Import, consulte la documentación de MLflow Export Import.
Paso 2: cree una nueva aplicación MLflow
Para preparar su entorno de destino, primero debe crear una nueva aplicación SageMaker Serverless MLflow.
Después de configurar SageMaker AI (consulte también la Guía para configurar Amazon SageMaker AI), puede acceder a Amazon SageMaker Studio y, en la sección MLflow, crear una nueva aplicación MLflow (si no se creó automáticamente durante la configuración inicial del dominio). Siga las instrucciones descritas en la documentación de SageMaker. Una vez que se haya creado su aplicación MLflow administrada, debería aparecer en su consola SageMaker Studio. Ten en cuenta que el proceso de creación puede tardar hasta 5 minutos.
Figura 2: Aplicación MLflow en la consola SageMaker Studio
Alternativamente, puede verlo ejecutando el siguiente comando de la interfaz de línea de comandos (CLI) de AWS:
Copie el nombre de recurso de Amazon (ARN) de su servidor de seguimiento en un documento; es necesario en el paso 4. Elija Abrir MLflow, que lo llevará a un panel de MLflow vacío. En los siguientes pasos, importamos nuestros experimentos y artefactos relacionados desde nuestro servidor de seguimiento de MLflow autoadministrado aquí.
Figura 3: interfaz de usuario de MLflow, página de inicio
Paso 3: Instale MLflow y el complemento SageMaker MLflow
Para preparar su entorno de ejecución para la migración, debe establecer conectividad con sus servidores MLflow existentes (consulte los requisitos previos) e instalar y configurar los paquetes y complementos de MLflow necesarios.
Antes de poder comenzar con la migración, debe establecer conectividad y autenticarse en el entorno que aloja su servidor de seguimiento de MLflow autoadministrado existente (por ejemplo, una máquina virtual). Una vez que tenga acceso a su servidor de seguimiento, deberá instalar MLflow y el complemento SageMaker MLflow en su entorno de ejecución. El complemento maneja el establecimiento de la conexión y la autenticación en su aplicación MLflow. Ejecute el siguiente comando (consulte también la documentación):
Paso 4: Instale la herramienta MLflow Export Import
Antes de poder exportar sus recursos de MLflow, debe instalar la herramienta MLflow Export Import.
Familiarícese con la herramienta MLflow Export Import y sus capacidades visitando su página de GitHub. En los siguientes pasos, utilizamos sus herramientas masivas (es decir, exportar todo e importar todo), que le permiten crear una copia de su servidor de seguimiento con sus experimentos y artefactos relacionados. Este enfoque mantiene la integridad referencial entre objetos. Si desea migrar solo los experimentos seleccionados o cambiar el nombre de los experimentos existentes, puede utilizar herramientas únicas. Revise la documentación de MLflow Export Import para obtener más información sobre los objetos admitidos y sus limitaciones. Instale la herramienta MLflow Export Import en su entorno ejecutando el siguiente comando:
Paso 5: exportar recursos de MLflow a un directorio
Ahora que su entorno está configurado, podemos comenzar el proceso de migración real exportando sus recursos de MLflow desde su entorno de origen.
Después de haber instalado la herramienta MLflow Export Import, puede crear un directorio de destino en su entorno de ejecución como destino para los recursos, que extraerá en el siguiente paso. Inspeccione sus experimentos existentes y los recursos de MLflow asociados que desea exportar. En el siguiente ejemplo, queremos exportar los objetos almacenados actualmente (por ejemplo, experimentos y modelos registrados).
Figura 4: Experimentos almacenados en MLflow
Inicie la migración configurando el Identificador uniforme de recursos (URI) de su servidor de seguimiento como una variable ambiental y ejecutando la siguiente herramienta de exportación masiva con los parámetros de su servidor de seguimiento MLflow existente y un directorio de destino (consulte también la documentación):
Espere hasta que finalice la exportación para inspeccionar el directorio de salida (en el caso anterior: mlflow-export).
Paso 6: Importe recursos de MLflow a su aplicación MLflow
Durante la importación, los atributos definidos por el usuario se conservan, pero MLflow Export Import no conserva las etiquetas generadas por el sistema (por ejemplo, fecha_creación). Para conservar los atributos originales del sistema, utilice la opción –import-source-tags como se muestra en el siguiente ejemplo. Esto los guarda como etiquetas con el prefijo mlflow_exim. Para obtener más información, consulte Importación de exportaciones de MLflow: gobernanza y linaje. Tenga en cuenta las limitaciones adicionales que se detallan aquí: Limitaciones de importación.
El siguiente procedimiento transfiere sus recursos MLflow exportados a su nueva aplicación MLflow: Inicie la importación configurando el URI para su aplicación MLflow. Puede utilizar el ARN, que guardó en el Paso 1, para esto. El complemento SageMaker MLflow previamente instalado traduce automáticamente el ARN en un URI válido y crea una solicitud autenticada a AWS (recuerde configurar sus credenciales de AWS como variables ambientales para que el complemento pueda recogerlas).
Paso 7: valide los resultados de su migración
Para confirmar que su migración fue exitosa, verifique que sus recursos de MLflow se transfirieron correctamente:
Una vez que el script de importación de todos haya migrado sus experimentos, ejecuciones y otros objetos al nuevo servidor de seguimiento, puede comenzar a verificar el éxito de la migración abriendo el panel de su aplicación MLflow sin servidor (que abrió en el Paso 2) y verificando que: Los recursos de MLflow exportados están presentes con sus nombres y metadatos originales. Los historiales de ejecución están completos con las métricas y parámetros. Los artefactos del modelo son accesibles y descargables. Las etiquetas y notas se conservan.
Figura 5: interfaz de usuario de MLflow, página de inicio después de la migración
Puede verificar el acceso programático iniciando un nuevo cuaderno de SageMaker y ejecutando el siguiente código:
Consideraciones
Al planificar su migración de MLflow, verifique que su entorno de ejecución (ya sea EC2, máquina local o notebooks SageMaker) tenga suficientes recursos informáticos y de almacenamiento para manejar el volumen de datos de su servidor de seguimiento de origen. Si bien la migración puede ejecutarse en varios entornos, el rendimiento puede variar según la conectividad de la red y los recursos disponibles. Para migraciones a gran escala, considere dividir el proceso en lotes más pequeños (por ejemplo, experimentos individuales).
Limpieza
Un servidor de seguimiento de MLflow administrado por SageMaker generará costos hasta que lo elimine o lo detenga. La facturación de los servidores de seguimiento se basa en el tiempo que los servidores han estado funcionando, el tamaño seleccionado y la cantidad de datos registrados en los servidores de seguimiento. Puede dejar de rastrear servidores cuando no estén en uso para ahorrar costos, o puede eliminarlos mediante API o la interfaz de usuario de SageMaker Studio. Para obtener más detalles sobre los precios, consulte Precios de Amazon SageMaker.
Conclusión
En esta publicación, demostramos cómo migrar un servidor de seguimiento de MLflow autoadministrado a SageMaker con MLflow utilizando la herramienta de código abierto MLflow Export Import. La migración a una aplicación MLflow sin servidor en Amazon SageMaker AI reduce la sobrecarga operativa asociada con el mantenimiento de la infraestructura MLflow al tiempo que proporciona una integración perfecta con los servicios integrales de AI/ML en SageMaker AI.
Para comenzar con su propia migración, siga la guía paso a paso anterior y consulte la documentación a la que se hace referencia para obtener detalles adicionales. Puede encontrar ejemplos de código y ejemplos en nuestro repositorio de GitHub de muestras de AWS. Para obtener más información sobre las capacidades de Amazon SageMaker AI y otras características de MLOps, visite la documentación de Amazon SageMaker AI.
Sobre los autores
Rahul Easwar es gerente senior de productos en AWS y lidera las aplicaciones de inteligencia artificial de socios y MLflow administradas dentro del equipo AIOps de SageMaker. Con más de 20 años de experiencia que abarca desde startups hasta tecnología empresarial, aprovecha su experiencia empresarial y su MBA de Chicago Booth para crear plataformas de aprendizaje automático escalables que simplifiquen la adopción de la IA para organizaciones de todo el mundo. Conéctese con Rahul en LinkedIn para obtener más información sobre su trabajo en plataformas de aprendizaje automático y soluciones de inteligencia artificial empresarial.
Roland Odorfer es arquitecto de soluciones en AWS, con sede en Berlín, Alemania. Trabaja con clientes de la industria y la fabricación alemanes, ayudándoles a diseñar soluciones seguras y escalables. Roland está interesado en los sistemas distribuidos y la seguridad. Le gusta ayudar a los clientes a utilizar la nube para resolver desafíos complejos.
Anurag Gajam es ingeniero de desarrollo de software en el equipo de Amazon SageMaker MLflow en AWS. Sus intereses técnicos abarcan la infraestructura de IA/ML y los sistemas distribuidos, donde es un colaborador reconocido de MLflow que mejoró la herramienta mlflow-export-import agregando soporte para objetos MLflow adicionales para permitir una migración fluida entre los servicios de SageMaker MLflow. Se especializa en resolver problemas complejos y crear software confiable que impulse cargas de trabajo de IA a escala. En su tiempo libre le gusta jugar al bádminton y hacer senderismo.