Resumen
El episodio 51 de enCoders es un taller sobre cómo iniciar un proyecto de analítica avanzada (Data Science y Machine Learning) en una empresa, desde el punto de vista técnico y no desde la gestión de proyectos. Se organiza en tres ejes: metodología (documentación, interfaz de interacción, flujo de datos y tipos de programación), infraestructura (almacenamiento de datos, poder de cómputo, control de versiones) y herramientas (apoyo al desarrollo, a la ejecución y a la disponibilización). Cris ilustra los riesgos con un proyecto heredado que no tenía README, ambiente virtual, control de versiones ni datos accesibles. Las conclusiones principales son que los proyectos rara vez fracasan por el algoritmo elegido, sino por la falta de estas bases. También se concluye que conviene usar git, ambientes virtuales y documentación, pensar el proyecto como un flujo de datos (input, script, output) y preferir un código simple y lineal que sea fácil de depurar. En la segunda parte hay preguntas del chat (formación, sueldos en Chile, qué es "analítica avanzada", ChatGPT frente a Bing), memes y un cierre.
Capítulos
- 00:00IntroPresentan el episodio 51 y el taller adaptado por Cris. Se enfoca en el lado técnico y no en la gestión de proyectos, y se conecta con los episodios 46 (hacking skills), 34 (flujo de MLOps sano) y el del setup de un Data Scientist. Hay una broma sobre un video de "rave" para celebrar suscripciones. Cris propone que el objetivo es dar un mapa conceptual para saber qué preguntar al enfrentar un proyecto: dónde están los datos, dónde se trabaja, qué estructura y metodologías sigue el equipo. Usa un mapa hecho en SimpleMind.
- 06:05Metodología: DocumentaciónRecomienda tener el proyecto en un repositorio del equipo con un README que explique qué hace, cómo se instala y configura y cómo aportar. Lo presenta como una norma de buenas prácticas.
- 07:15Infraestructura: Almacenamiento de datosExplica las fuentes de datos: bases columnares o relacionales, nube o local, archivos, Excel, object storage como S3 y el file system. Menciona la necesidad de credenciales, IP o endpoint de acceso.
- 08:22Infraestructura: Poder de cómputoHay que declarar los requerimientos de CPU, RAM y GPU. Los modelos grandes corren en GPU (mínimo 8 GB) y el ML clásico con unos 32 GB de RAM. Un asistente pregunta si esto es demasiado para principiantes; Cris responde que es conocimiento base. Se explica la diferencia entre S3 (servicio) y object storage, se presenta MinIO con Docker como alternativa open source y se comenta que en S3 no existen carpetas reales. También se menciona la paralelización con CPU y el deep learning con GPU.
- 14:27Infraestructura: Control de versionesSe precisa que se trata de control de versiones de código con git. Permite trackear cambios y colaborar sin archivos "final_final_v2". Recomiendan GitHub, GitLab o Bitbucket para respaldar el código en la nube.
- 16:50Metodología: Interfaz de interacciónCompara notebooks, VS Code, RStudio, PyCharm, Databricks y la terminal. Defienden la terminal como la opción más pura para conectarse a servidores y diagnosticar problemas. Explican qué es un alias en Linux (por ejemplo `rs` para iniciar RStudio Server), el archivo `.bashrc` y el `.profile`, y la reproducibilidad de la línea de comandos frente a Windows.
- 24:45Herramientas: Apoyo al desarrollo de códigoDefiende los ambientes virtuales (venv, conda, pipenv, entre otros) porque registran las dependencias de forma automática. Relata el caso del proyecto heredado: sin datos documentados, con una conexión a una base MS SQL local, archivos enviados por correo, sin control de versiones y con un README incompleto. Presenta MLflow para registrar parámetros y resultados de modelos iterativos, y menciona Copilot y los autoformateadores.
- 31:25Herramientas: apoyo a la ejecusión de códigoPara ejecutar el proyecto de forma sistemática y automática menciona batch, Snakemake y Airflow.
- 31:45Herramientas: apoyo a la disponibilización de códigoPara disponibilizar los resultados menciona APIs, Docker y dashboards. Surge la anécdota de VS Code frente a Sublime en el trabajo y una duda del chat sobre feature flags.
- 34:20Raid y dudasLos feature flags activan o desactivan funcionalidades de software. Cris resume los conceptos fundamentales, enfocados en un contexto empresarial. Sostienen que conocer estos conceptos ayuda a conversar con otros profesionales y que los proyectos rara vez fracasan por el algoritmo. Hay una discusión sobre ChatGPT (de pago), Bard y Bing (límite de 30 consultas diarias), la importancia de las referencias y el uso de ChatGPT sobre todo para temas que uno ya domina. Se cierra con el "googling", Stack Overflow y la baja de tráfico en este último.
- 47:49MemesExplican el formato de la sesión de memes. Comentan memes sobre estructuras de proyecto desordenadas, Excel de 8 GB y claves subidas en el código. Invitan a unirse al Discord. Responden preguntas del chat: la formación de Cris (cursos, diplomado y, sobre todo, proyectos propios y portafolio), rangos de sueldos en Chile, trabajar para empresas extranjeras y qué significa "analítica avanzada", al que consideran un término marquetero.
- 01:01:34Metodología: Flujo de datos y flujo de tareasCris define un flujo de datos como input, script y output con parámetros, una cadena secuencial donde la salida de un script alimenta al siguiente. El flujo de tareas, en cambio, solo ejecuta cosas en orden sin dependencia de salida. Dice que no tener claro el flujo de datos produce proyectos desordenados como el que recibió.
- 01:05:41Metodología: Tipos de programaciónRepasa los paradigmas funcional, orientado a objetos, declarativo e imperativo, con SQL como ejemplo declarativo. Cris sostiene que el trabajo analítico es mayormente imperativo y secuencial, usando funciones de librerías ya validadas. Critica el proyecto heredado, que escondía la lógica en funciones anidadas dentro de un script de 600 líneas. Advierte que las transformaciones deben poder revisarse porque las decisiones de negocio dependen de ellas, y que lo recomendable es mantener el código simple.
- 01:21:25CierreResumen del mensaje central: ordenar el proyecto como flujo de datos, usar control de versiones, conocer la infraestructura y mantener el código simple para depurarlo. Debaten si el código lineal aplica al desarrollo web con procesos asíncronos. Cierran con un último meme y la despedida (episodios los martes de 7 a 9 hora chilena).