Índice del contenido[Esconder][Espectáculo]
Todos los que han probado el desarrollo de aprendizaje automático entienden lo difícil que es. Aparte de los problemas estándar en el desarrollo de software, el desarrollo de aprendizaje automático (ML) presenta una serie de obstáculos adicionales.
Cientos de herramientas de código abierto están disponibles para ayudar en cada etapa del ciclo de vida de ML, desde la preparación de datos hasta el entrenamiento de modelos.
A diferencia del desarrollo de software tradicional, cuando los equipos eligen una herramienta para cada paso, con ML generalmente desea explorar todas las herramientas disponibles (por ejemplo, algoritmo) para ver si mejora los resultados.
Como resultado, los desarrolladores de ML deben usar y producir cientos de bibliotecas.
Los algoritmos de aprendizaje automático contienen miles de parámetros personalizables y es difícil identificar qué parámetros, código y datos se incluyeron en cada experimento para generar un modelo, ya sea que trabaje solo o en equipo.
Sin una supervisión adecuada, los equipos suelen tener dificultades para que el mismo código vuelva a funcionar. Ya sea que sea un científico de datos que transfiera su código de capacitación a un ingeniero para el uso de producción, o que esté volviendo a su trabajo anterior para diagnosticar un problema, es crucial retroceder los pasos del flujo de trabajo de ML.
Mover un modelo a producción puede ser difícil debido a los numerosos métodos y entornos de implementación que se deben usar (p. ej., servicio REST, inferencia por lotes o aplicaciones móviles). No existe un método común para mover modelos de cualquier biblioteca a cualquiera de estas herramientas y, por lo tanto, cada nueva implementación presenta un riesgo.
Debido a estos problemas, es obvio que el desarrollo de ML debe mejorar significativamente para volverse tan estable, predecible y ampliamente utilizado como el desarrollo de software tradicional.
Desafíos del aprendizaje automático
- Hay una plétora de herramientas dispares. Cientos de soluciones de software están disponibles para ayudar en cada etapa del ciclo de vida del aprendizaje automático, desde la preparación de datos hasta el entrenamiento de modelos. Además, a diferencia del desarrollo de software tradicional, cuando los equipos eligen una herramienta para cada paso, en el aprendizaje automático (ML), a menudo desea explorar todas las herramientas disponibles (por ejemplo, algoritmo) para ver si mejora los resultados. Como resultado, los desarrolladores de ML deben usar y producir cientos de bibliotecas.
- Es difícil hacer un seguimiento de los experimentos. Los algoritmos de aprendizaje automático contienen miles de parámetros personalizables y es difícil identificar qué parámetros, código y datos se incluyeron en cada experimento para generar un modelo, ya sea que trabaje solo o en equipo.
- Es difícil implementar el aprendizaje automático. Mover un modelo a producción puede ser difícil debido a los numerosos métodos y entornos de implementación que se deben usar (p. ej., servicio REST, inferencia por lotes o aplicaciones móviles). No existe un método común para mover modelos de cualquier biblioteca a cualquiera de estas herramientas. Por lo tanto, cada nuevo despliegue introduce un riesgo.
Que es flujo ml?
MLflow es una plataforma de código abierto para el ciclo de vida del aprendizaje automático. Se basa en un concepto de interfaz abierta, que propone muchas abstracciones esenciales que permiten que la infraestructura actual y los algoritmos de aprendizaje automático se integren fácilmente con el sistema.
Esto implica que si es un desarrollador que quiere usar MLflow pero está usando un marco no compatible, el diseño de interfaz abierta hace que sea relativamente sencillo integrar ese marco y comenzar a trabajar con la plataforma. En la práctica, esto implica que MLflow está diseñado para funcionar con cualquier máquina de aprendizaje biblioteca o idioma.
Además, MLflow promueve la repetibilidad, lo que significa que el mismo código de aprendizaje automático de capacitación o producción está diseñado para ejecutarse con los mismos resultados independientemente del entorno, ya sea en la nube, en una estación de trabajo local o en una computadora portátil.
Finalmente, MLflow está diseñado para la escalabilidad, por lo que puede ser utilizado por un pequeño equipo de científicos de datos, así como por una gran empresa con cientos de profesionales del aprendizaje automático.
MLflow es compatible con cualquier biblioteca, algoritmo, herramienta de implementación o lenguaje de aprendizaje automático. También tiene las siguientes ventajas:
- Diseñado para operar con cualquier servicio en la nube.
- Escala a grandes cantidades de datos con Apache Spark.
- MLflow es compatible con una variedad de marcos de aprendizaje automático de código abierto, incluidos Apache Spark, TensorFlowy SciKit-Aprende.
Si ya tiene código, MLflow se puede usar con él. Incluso puede compartir su marco y modelos entre empresas porque es De código abierto.
Componentes de MLflow: ¿Cómo funcionan?
MLflow es una plataforma gratuita y de código abierto para administrar el ciclo de vida de ML, que incluye experimentación, reproducibilidad, implementación y un registro de modelo único. Actualmente, MLflow tiene cuatro componentes:
1. Seguimiento de MLflow
Voy a comenzar con el seguimiento de MLflow. MLflow admite la recopilación de varios conceptos esenciales vinculados a un repositorio de seguimiento de metadatos de capacitación centralizado. La primera noción es una colección de hiperparámetros críticos o botones de configuración que influyen en el rendimiento del modelo. El uso de las API de MLflow y un servicio de seguimiento centralizado puede preservar todo esto.
Los usuarios también pueden registrar datos de rendimiento para obtener información sobre el éxito de sus modelos de aprendizaje automático. Además, para la repetibilidad, MLflow permite a los usuarios registrar el código fuente específico que se usó para crear un modelo, así como su versión, al integrarse estrechamente con Git para vincular cada modelo a un hash de confirmación específico.
MLflow se puede usar para registrar artefactos, que son archivos arbitrarios que incluyen capacitación, datos de prueba y modelos en sí mismos para la reproducibilidad.
Esto significa que si soy un desarrollador que acaba de entrenar un modelo, puedo conservarlo en el servicio de seguimiento centralizado y uno de mis colegas puede cargarlo más tarde y continuar entrenando y experimentando o produciendo ese modelo para satisfacer una necesidad específica. .
Al ejecutar su código de aprendizaje automático y luego ver los resultados, el seguimiento es una API que le permite registrar parámetros, versiones de código, métricas y archivos de salida. Está escrito en Python, R y Java, entre otros lenguajes. También se puede acceder a ella como una API REST, que se puede usar para crear aplicaciones encima de ella.
Principales Caracteristicas
- Muchos desarrolladores usan MLflow en su PC local, donde el backend y el almacenamiento de artefactos comparten un directorio en el disco.
- Muchos usuarios también emplean SQLite, una base de datos compatible con SQLAlchemy, para ejecutar MLflow en sus PC locales.
- MLflow también admite arquitecturas distribuidas. El servidor de seguimiento, el almacén de back-end y el almacén de artefactos están todos alojados en diferentes servidores en estos.
- Si la ejecución fue iniciada por un proyecto de MLflow, se utilizó el hash de confirmación de git. Las API de MLflow Python, R, Java y REST se pueden usar para registrar datos para ejecutar.
Para obtener más información, puede consultar el oficial documentación.
2. Proyectos MLFlow
Después de revisar los componentes de seguimiento, me gustaría hablar sobre los proyectos de MLflow, que son una estructura de empaquetado repetible para las sesiones de entrenamiento de modelos, independientemente del contexto de ejecución.
Las empresas utilizan una amplia gama de tecnologías de formación de aprendizaje automático, pero también utilizan estas herramientas de formación en un conjunto diverso de contextos. Por ejemplo, pueden estar ejecutando su código de capacitación en la nube, en una PC local o en una computadora portátil.
Esto lleva al problema de que los resultados del aprendizaje automático son difíciles de replicar. A menudo, el mismo código de entrenamiento idéntico no se ejecuta ni produce los mismos resultados en dos ubicaciones separadas.
La solución proporcionada por MLflow es una definición de proyecto de código de capacitación independiente que incluye todo el código de capacitación de aprendizaje automático, así como las dependencias de la biblioteca de versiones, la configuración y los datos de prueba y capacitación.
MLflow garantiza la reproducibilidad en contextos de ejecución al describir claramente todo el conjunto de requisitos para un proceso de capacitación de aprendizaje automático. Lo logra instalando todas esas bibliotecas y logrando el mismo estado del sistema en el que se está ejecutando el código.
El proyecto MLflow no es más que un directorio. Es un directorio que incluye el código de entrenamiento, la definición de dependencia de la biblioteca y otros datos necesarios para la sesión de entrenamiento, así como este archivo de configuración opcional.
Estos requisitos de la biblioteca se pueden definir de varias maneras. Los usuarios pueden, por ejemplo, proporcionar una especificación de entorno anaconda con formato YAML para enumerar los requisitos de su biblioteca de códigos de entrenamiento. MLflow ejecutará el código de entrenamiento dentro del contenedor. En tal caso, también pueden incluir un contenedor Docker.
Finalmente, MLflow tiene una interfaz de línea de comandos (CLI) para ejecutar estos proyectos, así como las API de Python y Java. Estos proyectos se pueden ejecutar en el sistema local del usuario, así como en una variedad de configuraciones remotas, como el programador de trabajos de Databricks y Kubernetes. Los proyectos de MLflow le permiten empaquetar código de ciencia de datos de manera repetible y reutilizable, principalmente en función de los estándares.
El componente de proyectos incluye una API, así como utilidades de línea de comandos para administrar proyectos. Estas capacidades garantizan que los proyectos se puedan encadenar para formar procesos de aprendizaje automático.
Principales Caracteristicas
- MLflow admite entornos de proyecto, incluido el entorno de contenedor Docker, el entorno Conda y el entorno del sistema.
- Cualquier repositorio Git o directorio local puede considerarse un proyecto MLflow; por defecto; puedes usar cualquier caparazón o Script de Python en el directorio como punto de entrada del proyecto.
- Las dependencias que no son de Python, como las bibliotecas de Java, se pueden capturar mediante contenedores de Docker.
- Puede obtener un mayor control sobre un proyecto de MLflow agregando un archivo de proyecto al directorio raíz del proyecto, que es un archivo de texto en sintaxis YAML.
Para obtener más información, puede consultar el oficial documentación.
3. Modelos de MLflow
Ahora, me gustaría analizar los modelos MLflow, un formato de modelo de propósito general que admite una amplia gama de contextos de producción. El motivo de los modelos MLflow ahora es bastante similar al de los proyectos.
Una vez más, vemos que los modelos se pueden generar utilizando una amplia gama de herramientas, pero también se pueden producir o implementar en una gran variedad de situaciones, a diferencia de los entornos de formación.
Estas configuraciones incluyen herramientas para el servicio en tiempo real, como Kubernetes o Amazon SageMaker, así como la transmisión y la puntuación por lotes, como Spark. Además, algunas empresas pueden optar por implementar modelos como un servicio web RESTful que se ejecuta en una instancia de nube preconfigurada.
Un modelo de MLflow, como un proyecto, es una estructura de directorio. Incluye un archivo de configuración y, esta vez, un artefacto de modelo serializado en lugar de un código de entrenamiento. También incluye este conjunto de dependencias para la repetibilidad como proyecto. Esta vez, veremos las dependencias de evaluación en el contexto de un entorno Conda.
Además, MLflow incluye herramientas de generación de modelos para serializar modelos en formato MLflow desde una variedad de marcos populares. Finalmente, MLflow agrega implementaciones, API para producir y conectar cualquier modelo de MLflow a una gama de servicios, y estas API son accesibles en formato Python, Java, R y CLI.
Los modelos son un componente con una estructura estándar para empaquetar modelos que pueden ser utilizados y entendidos por herramientas posteriores como servidores de inferencia o el Databricks plataforma de inferencia por lotes. Este componente ahorra horas de código personalizado al empaquetar un modelo para producción.
El modelo MLflow es un estándar para empaquetar modelos de aprendizaje automático en una variedad de formas conocidas como "sabores". MLflow proporciona muchas herramientas para ayudarlo a implementar varios tipos de modelos. Cada modelo de MLflow se mantiene como un directorio que contiene archivos arbitrarios, así como un archivo descriptor de modelo de ML con una lista de los tipos en los que se puede usar.
Principales Caracteristicas
- Todas las herramientas de implementación integradas de MLflow ofrecen varios tipos "estándar", como un tipo de "función de Python" que explica cómo ejecutar el modelo como una función de Python.
- Cada modelo de MLflow consta de un directorio que contiene archivos arbitrarios, así como un archivo de modelo de ML en la raíz del directorio que define los numerosos tipos del modelo.
- Al almacenar un modelo, MLflow le permite especificar un parámetro de entorno Conda que contiene las dependencias del modelo. Si no se especifica un entorno Conda, se construye un entorno predeterminado basado en el tipo del modelo. Después de eso, el entorno de Conda se almacena en conda.yaml.
Para obtener más información, puede consultar el oficial documentación.
4. Registro de modelos de MLflow
Un registro de modelo es un repositorio de modelos de aprendizaje automático (ML) aprendidos. Model Registry se compone de API y una aplicación basada en web que se utiliza para mantener modelos en varias fases como equipo. Model Lineage, Model Versioning, Easy Stage Transition y Annotation son solo algunas de las capacidades disponibles en Model Registry.
Un registro de modelo, además de los propios modelos, contiene información (metadatos) sobre los datos y las tareas de entrenamiento utilizadas para construir el modelo. Es fundamental realizar un seguimiento de estas entradas necesarias para crear un linaje para los modelos de ML. En este sentido, un modelo de registro funciona de manera similar a un software convencional. control de versiones sistemas (p. ej., Git, SVN) y repositorios de artefactos (p. ej., Artifactory, PyPI).
El Registro de modelos es un marco que permite a los científicos de datos y a los ingenieros de aprendizaje automático publicar, probar, monitorear, administrar y distribuir sus modelos para la cooperación con otros equipos. Esencialmente, el registro modelo se emplea una vez que haya completado su fase de prueba y esté listo para compartir sus hallazgos con el equipo y las partes interesadas.
El registro de modelos de MLflow proporciona una API y una interfaz de usuario para administrar sus modelos y su vida útil desde una ubicación central. El linaje del modelo, el control de versiones del modelo, las anotaciones y las transiciones de etapa están disponibles a través del registro.
En MLflow, un modelo registrado es el que tiene un nombre y metadatos únicos, versiones del modelo, fases de transición y un linaje del modelo. Se pueden encontrar una o más versiones de modelo en un modelo registrado. Un modelo nuevo se considera versión 1 cuando se inscribe en el registro. La siguiente versión se añade a cualquier nuevo modelo con el mismo nombre.
Puede asignar un paso a cualquier versión del modelo en cualquier momento. Sin embargo, las etapas deben asignarse en las fases de MLflow que se han especificado formalmente, como preparación, producción y archivado. Una versión del modelo puede pasar de una etapa a otra.
MLflow le permite usar Markdown para anotar tanto el modelo de nivel superior como cada versión específica. Puede incluir descripciones y otra información pertinente, como explicaciones de algoritmos, metodología y conjuntos de datos utilizados.
Principales Caracteristicas
- Para acceder al registro del modelo a través de la interfaz de usuario o la API al hospedar su propio servidor MLflow, debe usar un almacén back-end respaldado por una base de datos.
- También se puede acceder al registro del modelo a través del tipo de modelo de MLflow o la interfaz API de seguimiento del cliente de MLflow. Puede, por ejemplo, registrar un modelo durante una ejecución de experimento de MLflow o después de todas las ejecuciones de su experimento.
- No todos comenzarán a entrenar sus modelos con MLflow. Como resultado, es posible que tenga algunos modelos entrenados antes de usar MLflow. En lugar de volver a entrenar a los modelos, solo desea registrar sus modelos almacenados en el Registro de modelos.
Para obtener más información, puede consultar el oficial documentación.
Conclusión
MLflow es una herramienta de ciclo de vida de ML excelente y en constante crecimiento. Puede emplearlo junto con sus herramientas y plataformas actuales.
Admite varios lenguajes de programación, incluidos Python, Java y R. También puede rastrear, guardar y comparar rápidamente diferentes versiones de modelos gracias a su diseño fácil de usar.
¡Prueba MLflow y cuéntanos tu experiencia!
Deje un comentario