Propósito del Curso
El curso tiene como objetivo las prácticas esenciales de desarrollo y despliegue de modelos de aprendizaje automático (ML). Se explora desde la creación y ajuste de modelos hasta su implementación en entornos de producción. A través de buenas practicas de desarrollo, pruebas y seguimiento, los estudiantes obtendrán las habilidades necesarias para garantizar la calidad, escalabilidad y trazabilidad de los modelos en aplicaciones reales.
Se presentaran Metodologías y Herramientas para desarrollar flujos de trabajo eficientes para proyectos de ciencia de datos reproducibles, mantenibles y escalables. Donde se presentaran buenas prácticas de desarrollo que permiten a los científicos de datos adaptarse a la creciente demanda de complejidad, al tiempo que garantiza que los sistemas desarrollados sean confiables.
El curso hace parte de las optativas del ciclo profesional del programa de Ingeniería de Ciencia de Datos de la Universidad Pontificia Bolivariana.
Conocimientos Previos
- Python (Pandas, Scikit Learn, Numpy, Matplotlib)
- Estadística descriptiva e Inferencial
- Visualización de la información
- Machine Learning (Aprendizaje supervisado y no supervisado)
- Analítica de datos Estructurados (Tabulares)
- Gestión de proyectos
Contenido
1. Introducción
Introducción al curso de Ciencia de Datos en Producción
2. Proyectos de ML
Proyectos de Machine Learning
3. Control de Versiones
Control de versiones de código con Git y GitHub.
4. Configuración Entorno
Configuración del entorno de desarrollo para proyectos de Ciencia de Datos.
5. Calidad de código
Herramientas y buenas prácticas de calidad de código.
6. Funciones en Python
Funciones y scripts de Python
7. Pruebas Unitarias
Cómo aplicar pruebas unitarias en proyectos de Ciencia de Datos usando pytest
Herramientas para el curso
Python | Ruff | Github Pro |
UV | Git | Linux (Nativo o Virtual) |
IDE - Vscode | Docker | Github Actions |
Copilot | Jupyter | pre-commit |
Scikit-learn | Pandas | pytest |
mlflow | pandera | fastapi |
Cronograma
1. Nivel 0 - MLOps: Proceso manual
El objetivo es definir una metodología para abordar proyectos de ciencia de datos de principio a fin mediante un proceso manual para crear una prueba de concepto (POC), incluidos análisis de datos, preparación de datos, entrenamiento de modelos, validación de modelos, interpretación de los modelos y creación de un demo. Se requiere la ejecución de cada paso y la transición de un paso a otro, ambas de forma manual.
Clase | MES 1 |
---|---|
1 | Introducción (Presentación y por que del curso) |
2 | Introducción (Contenido, herramientas y evaluación) |
3 | Proyectos basados en datos (Generalidades) |
4 | Proyectos basados en datos (Proyectos ML) |
5 | Proyectos basados en datos (PASOS DE PREPARACIÓN Y DESCRIPCIÓN DE DATOS) |
6 | Pull request y buenas practicas |
7 | Revision de PR (comentarios, approves, request for changes). Scikit-learn Transformers y models |
8 | Pipelines, modelo base y selección de modelos. |
2. Configuración local, code quality y Scripts
El objetivo es realizar el primer proceso de producción de un proyecto de Machine Learning al convertir los procesos realizados manualmente en scripts de python, y garantizar que el proyecto sea reproducible, mantenible y escalable, esto se logra mediante:
- Gestión de Python, ambientes virtuales y dependencias (Lograr que sean los mismos procesos en cualquier ambiente de desarrollo: Local, CI/CD, Servidores de producción)
- Code-quality (linter, formater, isort, mypy, pip-audit, pre-commit)
- Creación de scrips de Python con buenas practicas (Mantenimiento y Escalabilidad)
Clase | MES 2 |
---|---|
9 | Model interpretation y demos (streamlit, taipy, gradio) |
10 | Trabajo Practico (Resolver Issues y PR) |
11 | Desarrollo en ambientes virtuales ( Gestor de python, ambientes y dependencias) |
12 | Trabajo Practico (Resolver Issues y PR) |
13 | Trabajo Practico (Resolver Issues y PR) |
14 | Code-quality y pre-commit (linter, formater, isort, mypy, pip-audit) |
15 | Configuración de Pre-commit y herramientas de calidad de código |
16 | Funciones de Python (static typing, docstring y validaciones) |
3. Automatización y CI/CD
El Objetivo es el siguiente paso en la producción de un proyecto de Machine Learning, donde se automatizan los procesos de desarrollo (Continuous Integration), garantizando que la preparación de los datos y entrenamiento del modelo se puedan implementar en entornos de producción de manera eficiente y segura.:
Clase | MES 3 |
---|---|
17 | MLOPS (Generalidades y Nivel 0) |
18 | Trabajo Practico (Resolver Issues y PR) |
19 | Proceso Modular de Proyectos de Machine Learning |
20 | Pruebas unitarias y de integración |
21 | Repositorios (Mono repo, Multi repo), Branching gitflow, Commits |
22 | Trabajo Practico (Resolver Issues y PR) |
23 | Plantilla de desarrollo y configuración de repositorio, CI /CD |
24 | Trabajo Practico (Resolver Issues y PR) |
4. Despliegue, Experiment Tracking y Monitoreo
El Objetivo es el siguiente paso en la producción de un proyecto de Machine Learning, donde se implementan los procesos de validación de datos y modelos, despliegue y monitoreo de modelos en entornos de producción. Se exploran herramientas y técnicas para realizar un seguimiento de los experimentos, gestionar el ciclo de vida del modelo y garantizar la calidad del modelo en producción.
Clase | MES 4 |
---|---|
25 | MLOPS (Generalidades y Nivel 1) |
26 | Data Validation y Model validation |
27 | Experiment Tracking |
28 | Despliegue de modelos (Docker, FastAPI) Model Monitoring (Data drift, Model Drift, concept drift) |
Referencias
Libros y Papers
- Thompson, S. (2023). Managing Machine Learning Projects: From Design to Deployment. Simon and Schuster.
- Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications, Chip Huyen, June 2022, 386 pages.
- Effective Data Science Infrastructure:, How to make data scientists productive, Ville Tuulos, July 2022, 352 pages.
- Machine Learning Operations (MLOps): Overview, Definition, and Architecture,
Cursos y Tutoriales
- ciencia de datos con python
- MLOps Zoomcamp course
- https://madewithml.com/
- Machine learning con Python y Scikit-learn
- Efficient Python Tricks and Tools for Data Scientists
- Build a Reproducible and Maintainable Data Science Project
Web
- MLOps: Continuous delivery and automation pipelines in machine learning in Google
- Best Practices for ML Engineering in Google
- https://github.com/EthicalML/awesome-production-machine-learning