De los experimentos a la implementación: MLflow 101
HogarHogar > Noticias > De los experimentos a la implementación: MLflow 101

De los experimentos a la implementación: MLflow 101

Feb 24, 2024

edad afaque

Seguir

--

1

Escuchar

Compartir

Imagínese esto: tiene una nueva idea de negocio y los datos que necesita están al alcance de su mano. Estás entusiasmado por sumergirte en la creación de ese fantástico modelo de aprendizaje automático 🤖. Pero, seamos realistas, ¡este viaje no es pan comido! Experimentarás como loco, lidiando con el preprocesamiento de datos, seleccionando algoritmos y ajustando hiperparámetros hasta que te marees 😵‍💫. A medida que el proyecto se vuelve más complicado, es como intentar atrapar humo: pierdes la noción de todos esos experimentos descabellados e ideas brillantes que tuviste en el camino. Y créeme, recordar todo eso es más difícil que pastorear gatos 😹

¡Pero espera hay mas! Una vez que tengas ese modelo, ¡debes desplegarlo como un campeón! Y con los datos y las necesidades de los clientes en constante cambio, ¡volverás a entrenar a tu modelo más veces de las que te cambiarás los calcetines! Es como una montaña rusa sin fin y necesitas una solución sólida para mantenerlo todo junto 🔗. ¡Ingrese a MLOps! Es la salsa secreta que pone orden en el caos ⚡

Muy bien amigos, ahora que tenemos el por qué.detrás de nosotros, profundicemos en lo quey el jugoso comoen este blog.

Echemos un vistazo al proceso que construiremos al final de este blog 👆

¡Agárrate fuerte, porque esta no será una lectura rápida! Estamos creando una solución MLOps de extremo a extremo y, para que sea realista, tuve que dividirla en tres secciones.

Sección 1:Sentaremos las bases y teorías 📜

Sección 2: ¡Ahí es donde está la acción! Estamos creando un filtro de spam y rastreando todos esos experimentos locos con MLflow 🥼🧪

Seccion 3:Nos centraremos en lo real: implementar y monitorear nuestro modelo campeón, preparándolo para producción 🚀

¡Vamos a rockear con MLOps!

MLOps representa una colección de metodologías y mejores prácticas de la industria destinadas a ayudar a los científicos de datos a simplificar y automatizar todo el ciclo de vida de capacitación, implementación y administración del modelo dentro de un entorno de producción a gran escala.

Está emergiendo gradualmente como un enfoque distinto e independiente para gestionar todo el ciclo de vida del aprendizaje automático. Las etapas esenciales en el proceso MLOps incluyen las siguientes:

¿Cómo lo vamos a implementar? Si bien hay varias opciones disponibles como Neptune, Comet y Kubeflow, etc., nos quedaremos con MLflow. Entonces, familiaricémonos con MLflow y profundicemos en sus principios.

MLflow es como la navaja suiza del aprendizaje automático: es súper versátil y de código abierto, lo que le ayuda a gestionar todo su viaje de aprendizaje automático como un jefe. Funciona bien con todas las bibliotecas de aprendizaje automático importantes (TensorFlow, PyTorch, Scikit-learn, spaCy, Fastai, Statsmodels, etc.). Aún así, también puedes usarlo con cualquier otra biblioteca, algoritmo o herramienta de implementación que prefieras. Además, está diseñado para ser súper personalizable: puedes agregar fácilmente nuevos flujos de trabajo, bibliotecas y herramientas mediante complementos personalizados.

MLflow sigue una filosofía de diseño modular y basada en API, dividiendo su funcionalidad en cuatro partes distintas.

Ahora, ¡revisemos cada una de estas partes una por una!

Esto es un resumen de nuestra comprensión básica de las ofertas de MLflow. Para obtener detalles más detallados, consulte su documentación oficial aquí 👉📄. Ahora, armados con este conocimiento, profundicemos en la Sección 2. Comenzaremos creando una aplicación de filtro de spam simple y luego pasaremos al modo de experimento completo, rastreando diferentes experimentos con ejecuciones únicas.

Muy bien amigos, ¡prepárense para un viaje emocionante! Antes de sumergirnos en el laboratorio y ensuciarnos las manos con experimentos, diseñemos nuestro plan de ataque para saber qué estamos construyendo. En primer lugar, vamos a utilizar un clasificador de spam utilizando el clasificador de bosque aleatorio (sé que Multinomial NB funciona mejor para la clasificación de documentos, pero bueno, queremos jugar con los hiperparámetros de bosque aleatorio). Al principio lo haremos intencionalmente no tan bueno, solo por la emoción. Luego, daremos rienda suelta a nuestra creatividad y realizaremos un seguimiento de varias ejecuciones, ajustando hiperparámetros y experimentando con cosas interesantes como Bag of Words y Tfidf. ¿Y adivina qué? Usaremos la interfaz de usuario de MLflow como jefe para toda esa dulce acción de seguimiento y nos prepararemos para la siguiente sección. ¡Así que abróchate el cinturón porque nos lo vamos a pasar genial! 🧪💥

Para esta tarea, utilizaremos el conjunto de datos de recopilación de spam disponible en Kaggle. Este conjunto de datos contiene 5574 mensajes SMS en inglés, etiquetados como ham (legítimo) o spam. Sin embargo, hay un desequilibrio en el conjunto de datos, con alrededor de 4.825 etiquetas de jamón. Para evitar desviaciones y mantener las cosas concisas, decidí dejar algunas muestras de jamón, reduciéndolas a alrededor de 3000, y guardé el CSV resultante para usarlo más adelante en nuestro modelo y preprocesamiento de texto. Siéntase libre de elegir su enfoque según sus necesidades; esto fue solo por brevedad. Aquí está el fragmento de código que muestra cómo logré esto.

Ahora que tenemos los datos listos para usar, construyamos rápidamente un clasificador básico. No los aburriré con el viejo cliché de que las computadoras no pueden captar el lenguaje de texto, de ahí la necesidad de vectorizarlo para la representación de texto. Una vez hecho esto, podemos alimentarlo a los algoritmos ML/DL y no le diré si necesita un repaso o tiene alguna duda, no se preocupe: lo cubro en uno de mis blogs anteriores para que pueda Referirse a. Eso ya lo sabes, ¿verdad? 🤗

nivelup.gitconnected.com

Muy bien, ¡pongámonos manos a la obra! Cargaremos los datos y preprocesaremos los mensajes para eliminar palabras vacías, puntuaciones y más. Incluso los derivaremos o lematizaremos por si acaso. Luego viene la parte interesante: vectorizar los datos para obtener algunas funciones sorprendentes con las que trabajar. A continuación, dividiremos los datos para el entrenamiento y las pruebas, los encajaremos en el clasificador de bosque aleatorio y haremos esas jugosas predicciones en el conjunto de prueba. ¡Finalmente, es hora de evaluar para ver cómo funciona nuestro modelo! prediquemos con el ejemplo ⚡

En este código, proporcioné varias opciones para experimentos como comentarios, como preprocesamiento con o sin palabras vacías, lematización, derivación, etc. De manera similar, para vectorizar, puede elegir entre Bag of Words, TF-IDF o incrustaciones. ¡Ahora vayamos a la parte divertida! Entrenaremos nuestro primer modelo llamando a estas funciones secuencialmente y pasando hiperparámetros.

Sí, estoy totalmente de acuerdo, este modelo es prácticamente inútil. La precisión es casi cero, lo que conduce a una puntuación F1 cercana a 0 también. Dado que tenemos un ligero desequilibrio de clases, la puntuación de F1 se vuelve más crucial que la precisión, ya que proporciona una medida general de precisión y recuperación: ¡esa es su magia! Así que aquí lo tenemos: nuestro primer modelo terrible, absurdo e inútil. Pero bueno, no te preocupes, todo es parte del viaje de aprendizaje 🪜.

Ahora, iniciemos MLflow y preparémonos para experimentar con diferentes opciones e hiperparámetros. Una vez que afinamos las cosas, todo empezará a tener sentido. ¡Podremos visualizar y analizar nuestro progreso como profesionales!

Primero lo primero, pongamos en funcionamiento MLflow. Para mantener todo ordenado, se recomienda configurar un entorno virtual. Simplemente puedes instalar MLflow usando pip 👉pip install mlflow

Una vez instalado, inicie la interfaz de usuario de MLflow ejecutando 👉mlflow ui en la terminal (asegúrese de que esté dentro del entorno virtual donde instaló MLflow). Esto iniciará el servidor MLflow en su navegador local alojado en http://localhost:5000. Verás una página similar a 👇

Como todavía no hemos grabado nada, no habrá mucho que comprobar en la interfaz de usuario. MLflow ofrece varias opciones de seguimiento, como local, local con una base de datos, en un servidor o incluso en la nube. Para este proyecto, nos ceñiremos a todo lo local por ahora. Una vez que dominamos la configuración local, podemos pasar el URI del servidor de seguimiento y configurar algunos parámetros más adelante; los principios subyacentes siguen siendo los mismos.

Ahora, profundicemos en la parte divertida: almacenar métricas, parámetros e incluso modelos, visualizaciones o cualquier otro objeto, también conocido como artefactos.

La funcionalidad de seguimiento de MLflow puede verse como una evolución o un reemplazo del registro tradicional en el contexto del desarrollo del aprendizaje automático. En el registro tradicional, normalmente se utilizaría un formato de cadena personalizado para registrar información como hiperparámetros, métricas y otros detalles relevantes durante el entrenamiento y la evaluación del modelo. Este enfoque de registro puede volverse tedioso y propenso a errores, especialmente cuando se trata de una gran cantidad de experimentos o procesos complejos de aprendizaje automático, mientras que Mlflow automatiza el proceso de registro y organización de esta información, lo que facilita la gestión y comparación de experimentos que conducen a resultados más eficientes. y flujos de trabajo de aprendizaje automático reproducibles.

El seguimiento de Mlflow se centra en tres funciones principales: log_parampara registrar parámetros, log_metricpara registrar métricas y log_artifact para registrar artefactos (por ejemplo, archivos de modelo o visualizaciones). Estas funciones facilitan el seguimiento organizado y estandarizado de datos relacionados con experimentos durante el proceso de desarrollo del aprendizaje automático.

Al registrar un solo parámetro, se registra utilizando un par clave-valor dentro de una tupla. Por otro lado, cuando se trata de múltiples parámetros, se puede utilizar un diccionario con pares clave-valor. El mismo concepto se aplica también al registro de métricas. Aquí hay un fragmento de código para ilustrar el proceso.

Un experimento actúa como un contenedor que representa un grupo de ejecuciones de aprendizaje automático relacionadas, proporcionando una agrupación lógica para ejecuciones con un objetivo compartido. Cada experimento tiene un ID de experimento único y puede asignar un nombre fácil de usar para una fácil identificación.

Por otro lado, una ejecución corresponde a la ejecución de su código de aprendizaje automático dentro de un experimento. Puede realizar varias ejecuciones con diferentes configuraciones dentro de un solo experimento y a cada ejecución se le asigna un ID de ejecución único. La información de seguimiento, que incluye parámetros, métricas y artefactos, se almacena en un almacén backend, como un sistema de archivos local, una base de datos (por ejemplo, SQLite o MySQL) o un almacenamiento remoto en la nube (por ejemplo, AWS S3 o Azure Blob Storage). .

MLflow ofrece una API unificada para registrar y realizar un seguimiento de los detalles de estos experimentos, independientemente del almacén backend que se utilice. Este enfoque simplificado permite la recuperación y comparación sin esfuerzo de los resultados de los experimentos, lo que mejora la transparencia y la manejabilidad del proceso de desarrollo del aprendizaje automático.

Para comenzar, puede crear un experimento usando mlflow.create_experiment()o un método más simple, mlflow.set_experiment("your_exp_name") . Si se proporciona un nombre, utilizará el experimento existente; de lo contrario, se creará uno nuevo para registrar las ejecuciones.

A continuación, llame a mlflow.start_run() para inicializar la ejecución activa actual y comenzar a registrar. Después de registrar la información necesaria, cierre la ejecución usando mlflow.end_run().

Aquí hay un fragmento básico que ilustra el proceso:

En lugar de ejecutar scripts a través del shell y proporcionar parámetros allí, optaremos por un enfoque fácil de usar. Creemos una interfaz de usuario básica que permita a los usuarios ingresar el nombre del experimento o valores de hiperparámetros específicos. Cuando se hace clic en el botón de tren, se invocará la función de tren con las entradas especificadas. Además, exploraremos cómo consultar experimentos y ejecuciones una vez que hayamos guardado una cantidad sustancial de ejecuciones.

Con esta interfaz de usuario interactiva, los usuarios pueden experimentar sin esfuerzo con diferentes configuraciones y realizar un seguimiento de sus ejecuciones para un desarrollo de aprendizaje automático más optimizado. No profundizaré en los detalles de Streamlit ya que el código es sencillo. Realicé ajustes menores a la función de entrenamiento anterior para el registro de MLflow, así como también implementé configuraciones de tema personalizadas. Antes de ejecutar un experimento, se solicita a los usuarios que elijan entre ingresar un nuevo nombre de experimento (que registra las ejecuciones en ese experimento) o seleccionar un experimento existente en el menú desplegable, generado usando mlflow.search_experiments() . Además, los usuarios pueden ajustar fácilmente los hiperparámetros según sea necesario. Aquí está el código de la aplicación 👇

y así es como se verá la aplicación 🚀

Ahora que nuestra aplicación está lista, procedamos a los experimentos. Para el primer experimento, usaré las palabras en su forma original sin derivar ni lematizar, enfocándome solo en palabras vacías y eliminación de puntuación, y aplicando Bag of Words (BOW) a los datos del texto para la representación del texto. Luego, en ejecuciones sucesivas, ajustaré algunos hiperparámetros. Llamaremos a este experimento RawToken.

Después de ejecutar algunas ejecuciones, podemos iniciar MLflow desde la interfaz de usuario de Streamlit y aparecerá algo como esto

Muy bien, ahora tenemos el RawToken. experimento enumerado en Experimentos y un montón de ejecuciones en la columna Ejecutar, todas asociadas con este experimento. Puede elegir una, un par o todas las ejecuciones y presionar el botón comparar para ver sus resultados uno al lado del otro. Una vez dentro de la sección de comparación, podrás seleccionar las métricas o parámetros que deseas comparar o visualizar.

¡Hay más para explorar de lo que cabría esperar y descubrirás el mejor enfoque una vez que sepas lo que estás buscando y por qué!

Muy bien, completamos un experimento, pero no resultó como esperábamos, ¡y está bien! Ahora, necesitamos obtener algunos resultados con al menos alguna puntuación de F1 para evitar posibles situaciones embarazosas. Sabíamos que esto sucedería porque usamos fichas sin procesar y mantuvimos la cantidad de árboles y la profundidad bastante baja. Entonces, profundicemos en un par de experimentos nuevos, uno con derivación y el otro con lematización. Dentro de estos experimentos, tomaremos fotografías de diferentes hiperparámetros junto con diferentes técnicas de representación de texto.

No utilizaré el modo profesional completo aquí porque nuestro propósito es diferente y solo un recordatorio amistoso de que no he implementado la integración de Git. El seguimiento de experimentos con Git podría ser ideal, pero requerirá algunos cambios en el código, que ya comenté. MLflow también puede realizar un seguimiento de Git, pero agregarlo generaría un montón de capturas de pantalla adicionales, y sé que eres un mago en Git, ¡así que te lo dejo a ti!

Ahora, comentemos y descomentemos manualmente algún código para agregar estos dos nuevos experimentos y registrar algunas ejecuciones dentro de ellos. Después de repasar todo lo que acabo de decir, aquí están los experimentos y sus resultados. ¡Veamos cómo va! 🚀🔥

Muy bien, ahora que hemos terminado con nuestros experimentos, nuestras ejecuciones pueden parecer un poco desordenadas y caóticas, al igual que los casos de uso de la vida real. ¿Te imaginas hacer todo esto manualmente? Sería una pesadilla y probablemente nos quedaríamos sin notas adhesivas o necesitaríamos un suministro interminable de analgésicos. Pero gracias a MLflow, nos cubre y se encarga de todo el desorden de nuestros experimentos salvajes, dejándonos con una solución limpia y organizada. ¡Apreciemos la magia de MLflow! 🧙‍♀️✨

Muy bien, digamos que hemos terminado con algunos experimentos y ahora necesitamos cargar un modelo de un experimento específico.y correr . El objetivo es recuperar el run_idy cargar los artefactos (el modelo y el vectorizador) asociados con esa identificación de ejecución. Una forma de lograrlo es buscar experimentos, obtener sus identificadores y luego buscar ejecuciones dentro de esos experimentos. Puede filtrar los resultados según métricas como la precisión y seleccionar la identificación de ejecución que necesita. Después de eso, puede cargar los artefactos utilizando funciones de MLflow.

Una opción más sencilla es utilizar la interfaz de usuario de MLflow directamente, donde puede comparar los resultados en orden descendente, tomar la identificación de ejecución del resultado superior y repetir el proceso.

Otro método sencillo y estándar es implementar modelos en producción, que cubriremos en la última sección del blog.

Mi intención detrás del primer enfoque fue familiarizarlo con la consulta del experimento, ya que a veces es posible que necesite un panel o gráficos personalizados en lugar de las funciones integradas de MLflow. Al utilizar la interfaz de usuario de MLflow, puede crear fácilmente visualizaciones personalizadas que se adapten a sus necesidades específicas. ¡Se trata de explorar diferentes opciones para hacer que su viaje a MLflow sea aún más eficiente y efectivo!

Ahora que hemos obtenido el run_id , podemos cargar el modelo y realizar predicciones a través de varias API. MLflow utiliza un formato específico llamado sabores para diferentes bibliotecas. También puedes crear tu propio estilo personalizado, pero ese es un tema aparte para explorar. En cualquier caso, al hacer clic en cualquier modelo en MLflow, se mostrarán instrucciones sobre cómo cargarlo.

¡Carguemos uno de nuestros modelos para realizar una predicción rápida y veamos cómo funciona en acción!

¡¡Vaya!! ¡Eso estuvo suave! Cargar un modelo de 15 ejecuciones diferentes fue muy sencillo. Todo lo que teníamos que hacer era proporcionar el ID de ejecución y no había necesidad de recordar rutas complejas ni nada por el estilo. Pero espera, ¿eso es todo? ¿Cómo servimos los modelos o los implementamos? Profundicemos en eso en la siguiente sección y exploremos el mundo de la implementación y el servicio de modelos.

¡Bienvenidos a la sección final! Saltemos al grano sin perder tiempo. Una vez decidido el modelo que queremos utilizar, solo queda seleccionarlo y registrarlo con un nombre de modelo único. En versiones anteriores de MLflow, registrar un modelo requería una base de datos, pero ya no. Ahora es mucho más sencillo y tendré que escribir un poco menos sobre eso.

El punto clave aquí es mantener el nombre del modelo simple y único. Este nombre será crucial para tareas futuras como reentrenamiento o actualización de modelos. Siempre que tenemos un nuevo modelo resultante de experimentos exitosos con buenas métricas, lo registramos con el mismo nombre. MLflow registra automáticamente el modelo con una nueva versión y sigue actualizándolo.

En esta sección, registremos tres modelos según la tabla de precisión de la prueba: uno en la parte inferior, otro en el medio y el último en la parte superior. Llamaremos al modelo spamfilter.

Una vez que registremos modelos de diferentes ejecuciones bajo el mismo nombre de modelo, se agregarán versiones como esta 👇

Entonces, ¿es el final del camino una vez que hemos registrado el modelo? ¡La respuesta es no! Registrar el modelo es solo un paso en el ciclo de vida del aprendizaje automático, y es a partir de aquí que MLOps, o más específicamente, el proceso de CI/CD, entra en juego.

Una vez que hayamos registrado los modelos en MLflow, los siguientes pasos suelen ser: ⚠️ Teoría a seguir ⚠️

¡Muy bien entonces! ¡¡No más charlas y jerga teórica!! Ya hemos terminado con eso y el aburrimiento no está invitado a esta fiesta. Es hora de liberar el código ⚡ ¡Ensuciémonos las manos y divirtámonos de verdad! 🚀💻. Aquí estoy trabajando solo, no estoy limitado por la calidad o las limitaciones del equipo de pruebas 😉. Si bien no entiendo completamente el significado de la etapa amarilla (puesta en escena para la validación), daré el salto y pasaré directamente a la etapa verde. Aunque este enfoque puede ser arriesgado en un escenario del mundo real, en mi mundo experimental estoy dispuesto a correr el riesgo.

Entonces, con solo unos pocos clics, prepararé el escenario de producción de mi modelo versión 3 y exploraremos cómo podemos consultar el modelo de producción.

Así mismo podemos ejecutar una consulta, y filtrando por la condición current_stage == 'Production', podemos recuperar el modelo. Tal como hicimos en la última sección, podemos usar model.run_id para proceder. ¡Se trata de aprovechar lo que hemos aprendido! 💡

Alternativamente, también puede cargar un modelo de producción usando el siguiente fragmento.

Ahora que nuestro modelo de producción está implementado, el siguiente paso es brindarlo a través de una API. MLflow proporciona una API REST predeterminada para realizar predicciones utilizando el modelo registrado, pero tiene opciones de personalización limitadas. Para tener más control y flexibilidad, podemos utilizar marcos web como FastAPI o Flask para crear puntos finales personalizados.

Para fines de demostración, usaré Streamlit nuevamente para mostrar información sobre los modelos de producción. Además, exploraremos cómo un nuevo modelo de un experimento puede potencialmente reemplazar al anterior si funciona mejor. Aquí está el código para la aplicación de usuario denominada user_app.py

La interfaz de usuario de la aplicación se verá así 😎

¡Vaya, hemos implementado con éxito nuestra primera aplicación! Pero espera, que el viaje no termina aquí. Ahora que la aplicación se ofrece a los usuarios, estos interactuarán con ella utilizando diferentes datos, lo que dará como resultado diversas predicciones. Estas predicciones se registran a través de diversos medios, como comentarios, calificaciones y más. Sin embargo, a medida que pasa el tiempo, el modelo puede perder su eficacia y es entonces cuando llega el momento de volver a entrenarlo.

El reentrenamiento implica volver a la etapa inicial, posiblemente con nuevos datos o algoritmos, para mejorar el rendimiento del modelo.

Después del reentrenamiento, ponemos a prueba los nuevos modelos con el modelo de producción y, si muestran una mejora significativa, se ponen en cola en el área de preparación 🟨 para validación y controles de calidad.

Una vez que obtienen luz verde, son trasladados a la Producción. 🟩 etapa, reemplazando el modelo actual en uso. El modelo de producción anterior se archiva ⬛.

Nota: Tenemos la flexibilidad de implementar múltiples modelos simultáneamente en producción. Esto significa que podemos ofrecer diferentes modelos con distintas calidades y funcionalidades, adaptados a suscripciones o requisitos específicos. ¡Se trata de personalizar la experiencia del usuario a la perfección!

Ahora, mueva esta última ejecución a la etapa de producción y actualice nuestra aplicación 🔄️

Refleja los últimos cambios y así es exactamente como se sirven los modelos en el mundo real. Estos son los conceptos básicos de CI/CD: integración continua e implementación continua. Esto es MLOps. ¡Lo hemos logrado de principio a fin! 🎉

¡Y aquí termina este extenso blog! Pero recuerda, esto es sólo un pequeño paso en el vasto mundo de MLOps. El viaje que tenemos por delante implica alojar nuestra aplicación en la nube, colaborar con otros y ofrecer modelos a través de API. Si bien utilicé Streamlit únicamente en este blog, tienes la libertad de explorar otras opciones como FastAPI o Flask para crear puntos finales. Incluso puede combinar Streamlit con FastAPI para desacoplar y acoplar con su canalización preferida. Si necesita un repaso, lo cubro con uno de mis blogs anteriores que muestra cómo hacer precisamente eso.

medio.com

¡Hey hey hey! ¡Hemos llegado a la meta, amigos! Aquí está el GitHub Repo de todo este proyecto 👇

github.com

Espero que este blog te haya traído algunas sonrisas y conocimientos. Si te lo pasaste bien leyéndolo y te resultó útil, no olvides seguirte de verdad, Afaque Umer., para artículos más interesantes.

Estén atentos a más aventuras emocionantes en el mundo del aprendizaje automático y la ciencia de datos. Me aseguraré de dividir esos términos que suenan sofisticados en conceptos sencillos.

¡Está bien, está bien, está bien! Es hora de decir adiós 👋

Fuente de imagen:desempaquetarPor quéQuéCómoImagen por autorSección 1:Sección 2:Seccion 3:Fuente de imagen:Ladrillos de datosRecopilación de datos:Análisis de los datos:Transformación/Preparación de Datos:Capacitación y desarrollo del modelo:Modelo de validación:Servicio modelo:Monitoreo de modelos:Reentrenamiento del modelo:Seguimiento de flujo ML:Proyectos Mlflow:Modelos de flujo ml:Registro Mlflow:instalación de pip mlflowinterfaz de usuario de flujo mlImagen del autor: interfaz de usuario de Mlflowlog_paramlog_metriclog_artifactImagen del autor:Seguimiento de flujo MLmlflow.create_experiment()mlflow.set_experiment("tu_exp_nombre")mlflow.start_run()mlflow.end_run()mlflow.search_experimentos()Imagen del autor: Streamlit UI (aplicación Trainer)Token crudo.Imagen del autor: Ajuste de hiperparámetrosImagen del autor: experimentos y ejecucionestoken crudoImagen del autor: Comparación de ejecucionesImagen del autor: métricas y parámetrosImagen del autor: todos los experimentosImagen del autor: Comparación de todas las ejecucionesexperimentocorrerrun_idartefactosImagen del autor: Ejecuciones de consultaImagen del autor: Seguimientorun_idsaboresImagen del autor: carga y predicciónfiltro de spamImagen del autor: registro de un modeloImagen del autor: Versiones de modelosImagen del autor: Puesta en escena modeloPuesta en escena y validación 🟨:Implementación 🟩:Monitoreo y Mantenimiento ⛑️:Reentrenamiento ⚙️:Versionado del modelo 🔢:Bucle de retroalimentación y mejora:Imagen del autor: Consulta de modelos registradoscurrent_stage == 'Producción',modelo.run_idImagen del autor: Encontrar el modelo de producciónImagen del autor: Encontrar el modelo de producciónaplicación_usuario.pyImagen del autor: Código StramlitImagen del autor: interfaz de usuario StramlitImagen del autor: reentrenamiento y seguimientoImagen del autor: Puesta en escena de modelosProducción Nota: Tenemos la flexibilidad de implementar múltiples modelos simultáneamente en producción. Esto significa que podemos ofrecer diferentes modelos con distintas calidades y funcionalidades, adaptados a suscripciones o requisitos específicos. ¡Se trata de personalizar la experiencia del usuario a la perfección!Imagen del autor: Haciendo prediccionesedad afaque