Sexta etapa: Práctica de proyectos de IA e implementación en producción
Un curso completo de ingeniería de aprendizaje automático que enseña cómo combinar el aprendizaje automático con la ingeniería de software, desde la experimentación hasta la implementación en producción.
Descripción Detallada del Proyecto Made With ML
Resumen del Proyecto
Made With ML es un proyecto de código abierto creado por Goku Mohandas, enfocado en enseñar cómo combinar el aprendizaje automático con la ingeniería de software para diseñar, desarrollar, implementar e iterar aplicaciones de aprendizaje automático de nivel de producción. El proyecto se ha convertido en uno de los repositorios de aprendizaje automático más importantes en GitHub, con más de 40,000 desarrolladores siguiéndolo.
Objetivos y Características del Proyecto
Filosofía Central
El curso construye gradualmente un sistema de producción confiable, desde la fase experimental (diseño + desarrollo) hasta la fase de producción (implementación + iteración), a través de un enfoque iterativo.
Características Principales
- 💡 Primeros Principios: Establecer una comprensión de los primeros principios para cada concepto de aprendizaje automático antes de entrar directamente en el código.
- 💻 Mejores Prácticas: Implementar las mejores prácticas de ingeniería de software al desarrollar e implementar modelos de aprendizaje automático.
- 📈 Escalabilidad: Escalar fácilmente las cargas de trabajo de aprendizaje automático en Python (datos, entrenamiento, ajuste, servicio) sin necesidad de aprender un lenguaje completamente nuevo.
- ⚙️ MLOps: Conectar componentes de MLOps (seguimiento, pruebas, servicio, orquestación, etc.) para construir sistemas de aprendizaje automático de extremo a extremo.
- 🚀 Desarrollo a Producción: Aprender a pasar rápida y confiablemente del desarrollo a la producción sin cambiar el código ni la gestión de la infraestructura.
- 🐙 CI/CD: Aprender a crear flujos de trabajo de CI/CD maduros para entrenar e implementar continuamente mejores modelos de forma modular.
Público Objetivo
El proyecto está dirigido a varios tipos de estudiantes:
- 👩💻 Todos los Desarrolladores: Ya sean ingenieros de software/infraestructura o científicos de datos, el aprendizaje automático se está convirtiendo cada vez más en una parte clave del desarrollo de productos.
- 👩🎓 Recién Graduados: Aprender las habilidades prácticas necesarias en la industria, cerrando la brecha entre los cursos universitarios y las expectativas de la industria.
- 👩💼 Producto/Liderazgo: Desean establecer una base técnica para construir productos asombrosos y confiables impulsados por el aprendizaje automático.
Estructura y Contenido del Proyecto
Estructura del Código
El código central del proyecto se ha refactorizado en los siguientes scripts de Python:
madewithml
├── config.py
├── data.py
├── evaluate.py
├── models.py
├── predict.py
├── serve.py
├── train.py
├── tune.py
└── utils.py
Flujos de Trabajo Principales
1. Configuración del Entorno
El proyecto admite varios entornos de implementación:
- Entorno Local: Usar una computadora portátil personal como clúster
- Plataforma Anyscale: Usar Anyscale Workspace para el desarrollo en la nube
- Otras Plataformas: Soporte para AWS, GCP, Kubernetes, implementación local, etc.
2. Datos y Entrenamiento del Modelo
export EXPERIMENT_NAME="llm"
export DATASET_LOC="https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/dataset.csv"
export TRAIN_LOOP_CONFIG='{"dropout_p": 0.5, "lr": 1e-4, "lr_factor": 0.8, "lr_patience": 3}'
python madewithml/train.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--train-loop-config "$TRAIN_LOOP_CONFIG" \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/training_results.json
3. Ajuste del Modelo
python madewithml/tune.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--initial-params "$INITIAL_PARAMS" \
--num-runs 2 \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/tuning_results.json
4. Evaluación del Modelo
export RUN_ID=$(python madewithml/predict.py get-best-run-id --experiment-name $EXPERIMENT_NAME --metric val_loss --mode ASC)
python madewithml/evaluate.py \
--run-id $RUN_ID \
--dataset-loc $HOLDOUT_LOC \
--results-fp results/evaluation_results.json
5. Predicción del Modelo
python madewithml/predict.py predict \
--run-id $RUN_ID \
--title "Transfer learning with transformers" \
--description "Using transformers for transfer learning on text classification tasks."
6. Servicio del Modelo
python madewithml/serve.py --run_id $RUN_ID
Seguimiento de Experimentos
El proyecto utiliza MLflow para el seguimiento de experimentos y la gestión de modelos:
export MODEL_REGISTRY=$(python -c "from madewithml import config; print(config.MODEL_REGISTRY)")
mlflow server -h 0.0.0.0 -p 8080 --backend-store-uri $MODEL_REGISTRY
Marco de Pruebas
El proyecto incluye un conjunto completo de pruebas:
# Pruebas de código
python3 -m pytest tests/code --verbose --disable-warnings
# Pruebas de datos
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings
# Pruebas de modelo
pytest --run-id=$RUN_ID tests/model --verbose --disable-warnings
# Pruebas de cobertura
python3 -m pytest tests/code --cov madewithml --cov-report html --disable-warnings
Implementación en Producción
Implementación en Anyscale
El proyecto proporciona una solución completa de implementación en Anyscale:
- Configuración del Entorno del Clúster:
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
- Configuración de Cómputo:
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
- Envío de Trabajos:
anyscale job submit deploy/jobs/workloads.yaml
- Implementación del Servicio:
anyscale service rollout -f deploy/services/serve_model.yaml
Flujo de CI/CD
El proyecto integra GitHub Actions para la implementación automatizada:
- Disparador del Flujo de Trabajo: Se activa un flujo de trabajo de cargas de trabajo al crear una PR
- Entrenamiento y Evaluación del Modelo: Ejecución automática del entrenamiento y la evaluación
- Retroalimentación de Resultados: Muestra los resultados del entrenamiento y la evaluación directamente en la PR
- Implementación Automática: Implementación automática en el entorno de producción después de la fusión en la rama principal
Puntos Clave de Aprendizaje
Pila Tecnológica
- Python: Lenguaje de programación principal
- Ray: Marco de computación distribuida
- MLflow: Seguimiento de experimentos y gestión de modelos
- Transformers: Modelos de aprendizaje profundo
- FastAPI: Marco de servicio de API
- pytest: Marco de pruebas
- GitHub Actions: Plataforma CI/CD
Mejores Prácticas de Ingeniería de Aprendizaje Automático
- Organización del Código: Estructura de proyecto modular
- Gestión de Experimentos: Seguimiento sistemático de experimentos
- Control de Versiones: Gestión de versiones de código y modelos
- Estrategia de Pruebas: Cobertura de pruebas completa
- Automatización de la Implementación: Integración del flujo de CI/CD
- Monitoreo y Mantenimiento: Monitoreo continuo del entorno de producción
Valor del Proyecto
El aprendizaje automático no es una industria separada, sino una poderosa forma de pensar en los datos que no se limita a ningún tipo específico de persona. El proyecto proporciona una ruta de aprendizaje completa, desde conceptos básicos hasta la implementación en producción, ayudando a los estudiantes a dominar el conjunto completo de habilidades de la ingeniería moderna de aprendizaje automático.
Recursos de Aprendizaje
- Curso en Línea: https://madewithml.com/
- Código Fuente: https://github.com/GokuMohandas/Made-With-ML
- Cuadernos Interactivos: notebooks/madewithml.ipynb
- Bootcamp en Vivo: Bootcamps en línea organizados regularmente
Mejora Continua
El proyecto enfatiza la importancia de la mejora continua, y con el establecimiento de flujos de trabajo de CI/CD, uno puede concentrarse en mejorar continuamente los modelos, expandiéndose fácilmente a ejecuciones programadas (cron), canalizaciones de datos, monitoreo de detección de deriva, evaluación en línea, etc.
Este proyecto proporciona un recurso de aprendizaje integral y práctico para los profesionales del aprendizaje automático, que cubre el proceso completo desde la comprensión conceptual hasta la implementación en producción, y es un excelente recurso para aprender MLOps moderno.