¿Cómo realizar tracking en la nube con AWS para Machine Learning?
Iniciar el camino hacia el uso eficiente de servicios en la nube es esencial en el mundo del Machine Learning. En esta guía, exploraremos cómo hacer tracking utilizando los servicios de Amazon Web Services (AWS), lo que permite compartir los resultados de tus experimentos de manera efectiva con tu equipo de trabajo. Al integrar MLflow con AWS, puedes gestionar y almacenar experimentos, bases de datos y resultados en un entorno accesible y colaborativo. ¡Vamos a comenzar!
¿Qué debes configurar en AWS?
Antes de aprovechar al máximo los servicios de AWS, es vital seguir una serie de pasos de configuración. Aquí te dejo un resumen de los aspectos clave:
Crear una instancia S2 en AWS: Aquí es donde se ejecutará nuestro servidor. Esta instancia servirá como la base para realizar el tracking.
Configurar un bucket en S3: Este bucket almacenará los resultados de los experimentos, lo que facilitará su gestión y acceso al equipo.
Establecer una base de datos Postgres: Actuará como Backend Store para MLflow. No olvides anotar información crucial, como el nombre de usuario, contraseña y endpoint de la base de datos.
¿Cómo activar MLflow con un servidor AWS?
Ahora que hemos configurado nuestra infraestructura, el siguiente paso es habilitar MLflow para realizar el tracking. Sigamos este esquema de configuración:
# Configuración para server de MLflowport:5000backend_store_uri:"postgres://<usuario>:<contraseña>@<endpoint>:5432/nombre_DB"default_artifact_root:"s3://nombre-tu-bucket/mlflow"
Pasos:
Conectar a la instancia S2: Utiliza las llaves generadas para acceder al servidor. Asegúrate de estar en la posición correcta al hacer la conexión.
Actualizar y configurar dependencias: Ejecuta los comandos para descargar e instalar las dependencias necesarias para que MLflow opere correctamente.
Importar y configurar variables ambientales: Crea un módulo de Python para gestionar de manera segura tus claves de acceso (secret key y access key).
¿Cómo correr experimentos de ML con tracking en AWS?
Una vez configurado el servidor y MLflow, estás listo para ejecutar tus experimentos de Machine Learning y realizar el tracking de resultados. Aquí te muestro un ejemplo simple:
import mlflow
import mlflow.sklearn# Configurar dirección del servidor
mlflow.set_tracking_uri('http://<tu-dirección-ip>:5000')# Configura tu experimento
mlflow.set_experiment('Logistic Regression')with mlflow.start_run(): mlflow.log_param('param_name', param_value) mlflow.log_metric('metric_name', metric_value) mlflow.sklearn.log_model(model,'model')
Pasos:
Definir el tracking server: Usa la dirección pública de tu instancia S2 y el puerto 5000.
Realizar el tracking de los experimentos: Ejecuta tu código de experimentación, registrando parámetros, métricas y tu modelo en MLflow.
Visualizar resultados en MLflow: Accede al servidor MLflow en tu navegador mediante http://<tu-dirección-ip>:5000 para explorar tus experimentos.
Ahora tienes la capacidad de compartir de forma segura y eficiente los resultados de tus experimentos de Machine Learning con tu equipo a través de AWS. No más transferencias manuales o riesgos de pérdida de información. Continúa explorando y optimizando tus procesos para aprovechar al máximo el potencial de la nube en tus proyectos de Machine Learning.
Una forma interesante es desplegar el server MLflow completamente en la nube. Por acá les comparto un repo mío donde levanto todo con Terraform y, como la profe lo hizo en la clase, con backend storage en postgres y S3 para artifacts.
El link del recurso lleva a una branch que se llama templates, ahí no está trackeado el notebook mlflow_con_aws, hay que pasarse a la master para poder verlo
Si alguien recibe el siguiente error al intentar crear el servidor de MLFlow:
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with LibreSSL 2.8.3. See:
Se puede arreglar instalando la siguiente versión de urllib3
pip install urllib3==1.26.6
me da unos errores rarisimos, pero lo solucione con pip install urllib3==1.26.7
El audio está corrido y el video tiene un bucle, es decir, se repite una parte
Puse 2 pestañas y adelante el audio de una 3 segundos y apague el audio de la otra ajjajaj
Muchas expectativas con este curso, pero tiene muy poca conexión, no es posible seguir la linea del curso y uno se desconecta con mucha facilidad :(
No entiendo muy bien como agregar una regla de entrada en el grupo de seguridad que creamos al momento de definir la EC2?
ATENCIÓN: con la capa free tier de AWS, en el servicio de RDS sólo se permite crear 1 base de datos.
Si quieren crear una DB adicional, o borrar la antigua y crear una nueva, tendrán que pagar unos 15-17$ al mes (pago por uso, ya saben)
Gracias!
Aqui complemento tu aporte
CUANDO empece este curso jamas habia intentadoalgo en la nuve. cree mi cuenta hace 5 dias en aws sette las alertas y el presupues . y pense bueno continuo con el curso en unos dias . no use conciente mente ninguna de las instancias y sin embargo en 5 dias subio medio dolar la cuenta , no se si buscar una certificacion o curso de AWS antes de continuar con este. que me recomendarias ? b
Sinceramente no entiendo, voy a paso de tortuga, el .md del paso a paso para crear la instancia y conectar es muy vago, va uno a tientas en la plataforma tratando de ver dónde queda todo y encima hay cosas que en el .md describe muy por encima, hasta hay algunas que omite, no dice que había que crear la db para poder hacer el envío de los trackings de mlflow, por ejemplo, no dice dónde buscar las access keys. Oiga, un curso gratis en inglés de MLOps zoomcamp de DataTalksClub es paso a paso y le queda claro a uno qué va sucediendo. El curso por varios asuntos no se merece ni 4 estrellas, sinceramente, todo hecho a las carreras.
Link del archivo Markdown con las instrucciones
Al ingresar al servidor por el puerto 5000, no llegaba a levantar la interfaz, revisando vi que era por un tema de timeout, por ello terminé agregando al comando :
--gunicorn-opts "--timeout 180"
dejo la fuente:
El tracking de modelos con MLflow en la nube se refiere al proceso de registrar, monitorear y gestionar experimentos de machine learning utilizando la herramienta MLflow, pero en lugar de almacenar los datos localmente, se utiliza un servicio en la nube.
Conceptos básicos:
MLflow:
Es una herramienta que ayuda a los científicos de datos y a los ingenieros de machine learning a organizar y gestionar sus experimentos.
Con MLflow, puedes registrar todos los detalles de un experimento de machine learning: los parámetros que utilizaste, los resultados que obtuviste, y los modelos que entrenaste.
Tracking (seguimiento):
Es la capacidad de registrar y hacer un seguimiento de todos los experimentos que realizas. Así, puedes ver cuál combinación de parámetros funcionó mejor o comparar diferentes modelos para decidir cuál es el más adecuado.
La nube:
Cuando hablamos de "la nube", nos referimos a servicios de almacenamiento y computación proporcionados por empresas como Amazon Web Services (AWS), Google Cloud Platform (GCP), o Microsoft Azure.
En lugar de guardar los datos en tu computadora, los guardas en servidores remotos que están en la nube.
¿Cómo funciona el tracking de modelos con MLflow en la nube?
Configuración de MLflow en la nube:
En lugar de configurar MLflow para guardar los datos en tu computadora o en una base de datos local como SQLite, configuras MLflow para que guarde todo en un servicio en la nube.
Esto implica especificar la ubicación en la nube donde quieres almacenar la información (por ejemplo, un bucket en Amazon S3 o un servicio de base de datos en la nube).
Registro de experimentos:
Cuando entrenas un modelo y usas MLflow, todos los detalles de ese experimento (como los parámetros del modelo, las métricas de rendimiento y el propio modelo entrenado) se envían y almacenan en la nube.
Esto permite que todos los datos estén centralizados y accesibles desde cualquier lugar, siempre que tengas acceso a la nube.
Consulta y análisis:
Puedes acceder a tus experimentos desde cualquier lugar y en cualquier momento. Por ejemplo, si estás trabajando en un laboratorio de computación en la universidad y luego quieres revisar tus experimentos en casa, puedes hacerlo fácilmente porque los datos están en la nube.
Ventajas:
Acceso desde cualquier lugar: Como los datos están en la nube, no dependes de una sola máquina para acceder a ellos.
Colaboración: Si estás trabajando en equipo, todos pueden ver los experimentos y modelos, y pueden colaborar más fácilmente.
Escalabilidad: Las soluciones en la nube suelen manejar grandes volúmenes de datos mejor que las soluciones locales, lo que es útil si estás trabajando con modelos y conjuntos de datos grandes.
Hasta este punto, creamos una instancia EC2, la aprovisionamos manualmente, nos conectamos a un DB Postgres y configuramos un bucket S3 para el servidor de MLflow. Hacer este proceso de manera manual es valioso para entender realmente las tripas del flujo y cómo se conectan los componentes de MLflow con AWS.
Sin embargo, en el contexto de MLOps —y espero no estar adelantándome— esta parte también debería incorporar un enfoque más automatizado. Una opción de varias, sería, usar Terraform para gestionar la infraestructura como código: crear las instancias, generar la base de datos, configurar el bucket y definir los valores necesarios. Después, usar Ansible para el aprovisionamiento remoto, instalando las bibliotecas en la instancia EC2, configurando los servicios requeridos y levantando el servidor de MLflow.
En lo personal, también considero que, como requisito previo para llegar a esta parte, es importante tener claro qué son los usuarios y roles en IAM de AWS y cómo se levanta una intancias de EC2 de forma clara, ya que tuve que revisar estos temas por mi cuenta.
La creación de la instancia en EC2, el bucket y la base de datos debió hacerse en el propio video. Personas ajenas a AWS y su funcionamiento tiene que adivinar cómo se debe su interfaz para llegar a las imágenes que aparecen en el md. Sin mencionar que se actualiza y las imágenes de referencia terminen siendo poco funcionales.
yo tengo problemas cuando creo la base de datos, puesto que se me pidde agragarla a una subred, y al pareces hay una configuraci[on adicional que se debe hacer en estas subredes para que sean publicas, y si lo intento asociar a la instancia EC2 no me deja ponerla de accesibilidad publica
Hola tengo una pregunta! Según manual de MLFlow se pueden crear experimentos usando MlflowClient.create_experiment(), borrar experimentos usando MlflowClient.delete_experiment() y obtener experimentos ya creados con MlflowClient.get_experiment()
Por alguna razon quiero borrar un experimento que hice usando el experiment_id pero cuando intento crear un nuevo experimento MLflow me dice que ya existe y dehecho puedo obtener de nuevo ese experimento:(
Update: es porque el metodo borra el experimento parcialmente, para borrarlo por completo se debe borrar desde la carpeta trash
Por si las moscas el endpoint se encuentra en los detalles de la instancia del database:
Estuve profundizando en el servicio de RDS y aqui traje un corto resumen: AWS RDS (Relational Database Service) es un servicio que simplifica la configuracion, las operaciones y el escalamiento de bases de datos relacionales sobre AWS. Con este servicio te enforcas más en el desarrollo de tu aplicación que en otras tareas frecuentes como
Backups
Patching
Scaling
Replication
Ventajas
Simplficamos la instalación del software de base de dato s
Lanzamiento super veloz para empezar a hacer queries SQL
Podemos replicar nuestra data para aumentar la disponibilidad
Puedes conectar tus tools de reporting o incluso de ETL