---
title: Agile Data Science
tags: Docència
slideOptions:
theme: white
transition: 'fade'
---
# Rethinking Agile Data Science
L'alumne hauria de sortir amb aquests coneixements:
+ Conéixer les metodologies àgils per al desenvolupament de programari, **adaptades al cas de la ciència de dades/ML**.
+ Aprendre **el rol i les tasques** d'un científic de dades.
+ Conéixer les **infraestructures i els mètodes de desnvolupament** per a la ciència de dades.
Per això, cal reformular aquest temari:
1. Software Engineering for Data Scientists
+ Agile Methodologies: Kanban, Scrum
+ Version Control: GIT
+ Test Driven Development: Unit Cases (?)
+ Software Deployment: Software as a Service (API?, Cloud app?)
+ Containers: Docker (Kubernetes?)
2. Data Science Workflow
+ Extraction Transformation and Load (ETL) (ELT?)
+ Exploratory data analysis (EDA) (Pre-processing?)
+ Analysis (Machine Learning)
+ Dissemination (Visualisation & Presentation) (Deployment?)
3. Infrastructure for Data Science
+ No-SQL Databases.
+ Message Queues. (?)
+ Platform as a Service (?)
+ (MLOps tools?)
## Per què?
(Resum de varies lectures)
Hi ha motius per pensar que els mètodes Agile no són adequats pel desenvolupament de sistemes predictius.
Les metodologies àgils es van crear principalment per gestionar la incertesa dels requeriments. El problema principal és que les metodologies àgils no es va desenvolupar tenint en compte la ciència de dades. En ciència de dades, el risc més gran és la **viabilitat de la solució**, **no la incertesa dels requisits**.
Els científics de dades s'han de formar per aïllar sistemàticament els riscos de viabilitat mitjançant l'experimentació. Malauradament, el resultat dels experiments de ciència de dades són molt impredictibles, especialment en aplicacions d'aprenentatge automàtic que utilitzen tècniques d'última generació.
El risc més gran d'aquests projectes és (1) dades insuficients o (2) rendiment del model inacceptable, i els científics de dades amb experiència disposen de tècniques per aïllar-los ràpidament.
Malauradament, les tasques i els temps són gairebé impossibles de predir al principi. Això contrasta amb l'experiència de la majoria dels enginyers de software, que mai s'han enfrontat a aquest tipus de risc tècnic. El risc més gran del programari és construir alguna cosa que ningú vol, especialment en el cas de nous productes. Construir un model d'aprenentatge automàtic no és com construir una aplicació web basada en dades. Un projecte d'aprenentatge automàtic no es pot dividir fàcilment en una sèrie de passos.

Viabilitat inicial
+ Abans d'impulsar qualsevol projecte de ML, el científic de dades hauria d'avaluar si el problema es pot resoldre o no. Normalment, això requereix (1) avaluar la qualitat i la quantitat de les dades i (2) avaluar si existeix una metodologia. Els científics de dades realitzaran una anàlisi exploratòria de dades i possiblement una revisió de la literatura.
+ Molts projectes d'aprenentatge automàtic mai no superen aquest punt. L'equip de ciència de dades hauria de treballar de manera independent. Com que el projecte encara no és un esforç de desenvolupament de programari, l'Agile no té cap paper.
Prototip
+ Si la solució és potencialment viable, l'equip de ciència de dades pot començar a avaluar com resol el problema empresarial. Aquest pas sol requerir la formació iterativa d'un model i l'avaluació dels resultats amb la precisió mínima acceptable.
+ El prototipat pot trigar diversos mesos. La programació sol estar determinada per la complexitat de la solució, l'accessibilitat de les dades i la disponibilitat dels clients empresarials per rebre comentaris. Un cop més, el científic de dades hauria de fer la major part d'això de manera independent.
+ Quan el model és "prou bo" (un llindar que òbviament varia segons el problema), altres membres de l'equip poden unir-se al projecte. En aquest punt, les tasques del científic de dades són més previsibles i podeu començar a introduir Agile.
Producció
+ Finalment, tot l'equip ha de desplegar el model i el projecte comença a semblar un esforç d'enginyeria de programari. Agile és fonamental en aquesta cruïlla perquè tot l'equip d'enginyeria ha de treballar en col·laboració per aconseguir que el model estigui en producció.
+ El científic de dades continuarà fent experiments, però el temps i l'abast seran més previsibles. Aquestes tasques de ciència de dades, però, mai seran tan previsibles com les tasques d'un esforç d'enginyeria de programari tradicional.
El desenvolupament d'un sistema d'aprenentatge automàtic no es fa quan s'aconsegueix un bon resultat amb el conjunt de proves. Tan bon punt el model troba dades del món real, és llavors quan comença una segona fase de desenvolupament, tant o més important que l'anterior. Tant si es tracta de deriva de dades, millores de rendiment o fins i tot d'esdeveniments inesperatts, s'ha de supervisar, diagnosticar, perfeccionar i millorar el model per estar al dia amb un món en constant canvi.
Els models d'aprenentatge automàtic mai no es tanquen realment. Han d'ingerir dades noves per aprendre nous patrons, i per això hem de pensar en el procés com un bucle iteratiu. El procés comença de nou a mesura que flueixen noves dades al sistema, formant un cercle virtuós i continu de passos de creació i desplegament de models. I aquesta capacitat d'iterar ("completar el bucle") és el procés que es pot dir que està trencat en l'aprenentatge automàtic/ciència de dades avui. Això es deu al fet que normalment es basa en una multitud de passos manuals que són molt propensos a errors, i implementar-los en una plataforma de producció robusta és encara més difícil.
El desenvolupament d'aprenentatge automàtic no és el mateix que el desenvolupament de programari. La diferència més important és que ara estem tractant amb dues peces mòbils: el codi i les dades.
A diferència del desnvolupament de programari, en realitat estem treballant amb dos bucles: un bucle de codi que té una relació simbiòtica amb el bucle de dades.

En els sistemes de ML, hem de ser capaços d'acceptar els canvis de dades. Els principis de DevOps s'han d'aplicar de manera eficaç al codi, a les dades, a la formació de models, al desplegament de pipelines i a molts altres processos per facilitar la ràpida iteració. Aquest és el camp emergent dels MLOps.

:::warning
**Nota:**
Abans d'aquesta darrera onada d'interès i exageració en IA i aprenentatge automàtic, les organitzacions que tenien necessitats de projectes centrats en les dades també van buscar metodologies que s'ajustessin als seus objectius. En el món de la mineria i anàlisi de dades, les metodologies proposades tenien com a nucli un cicle iteratiu centrat en el descobriment, preparació, modelització, avaluació i lliurament de dades. Una de les iniciatives més importants es coneix simplement com a *Knowledge Discovery in Databases (KDD)*. Tanmateix, igual que les metodologies en cascada, KDD és d'alguna manera massa rígid o abstracte per tractar amb models en contínua evolució.
Responent a les necessitats d'un enfocament més iteratiu de la mineria i l'anàlisi de dades, un consorci de cinc venedors va desenvolupar el procés estàndard inter-industrial per a la mineria de dades (CRISP-DM) centrat en un enfocament d'iteració contínua. Concretament, la metodologia comença amb un bucle iteratiu entre la comprensió empresarial i la comprensió de les dades, i després un traspàs a un bucle iteratiu entre la preparació de dades i el modelatge de dades, que després passa a una fase d'avaluació, que divideix els seus resultats fins al desplegament i de nou al comprensió empresarial. Tot l'enfocament es desenvolupa en un bucle iteratiu cíclic, que condueix a la modelització, preparació i avaluació contínua de dades. Tanmateix, el desenvolupament posterior de CRISP-DM sembla haver-se aturat, amb només una versió 1.0 produïda completament fa gairebé dues dècades.
:::
Referències:
+ https://www.forbes.com/sites/cognitiveworld/2020/01/19/why-agile-methodologies-miss-the-mark-for-ai--ml-projects/?sh=7dbecb9321ea
+ https://www.prolego.com/blog/blindly-following-the-agile-methodology-will-slowly-and-painfully-kill-your-ai-project
+ https://jimmymwhitaker.medium.com/completing-the-machine-learning-loop-e03c784eaab4
+ MLOps: https://ml-ops.org/content/mlops-principles#summary-of-mlops-principles-and-best-practices
+ https://www.infoq.com/articles/machine-learning-agile/
+ https://edwinth.github.io/ADSwR/index.html
+ https://eugeneyan.com/writing/data-science-and-agile-frameworks-for-effectiveness/
+ https://www.oreilly.com/radar/mlops-and-devops-why-data-makes-it-different/
+ https://towardsdatascience.com/how-i-redesigned-over-100-etl-into-elt-data-pipelines-c58d3a3cb3c
+ https://cal-data-eng.github.io/