XebiCon'16 : Data Science & Craftsmanship : Je t'aime, moi non plus. Par Yoann Benoit...

Preview:

Citation preview

@xebiconfr #xebiconfr

Data Science & Craftsmanship:

Je t’aime, moi non plus

SylvainLequeux

YoannBenoit

@xebiconfr #xebiconfr

Raconte moi une histoire

2

0

@xebiconfr #xebiconfr

Raconte moi une histoire

3

0

@xebiconfr #xebiconfr

@YoannBENOIT

Yoann BenoitSylvain Lequeux

4

@slequeux

@xebiconfr #xebiconfr

Deux mondes que tout sépare

1

5

@xebiconfr #xebiconfr

Des formations différentes

6

1a

@xebiconfr #xebiconfr

Des objectifs personnels différents

7

1b

@xebiconfr #xebiconfr

Des équipes différentes

8

1c

Plusieurs équipesUn objectif commun : délivrer de la valeur

@xebiconfr #xebiconfr

Des outils différents

9

1d

@xebiconfr #xebiconfr

Choix du langage

10

1e

Popularité Data Scientists

Popularité Data Engineers

Disponibilité algos

Scalabilité algos

Outillage (IDE, Notebooks, Build)

@xebiconfr #xebiconfr

Et le Craftsmanship dans tout ça ?

11

1f

@xebiconfr #xebiconfr

Les contraintes du craftsmanship

2

12

@xebiconfr #xebiconfr

Retour à l’essentiel

13

2a

https://essentials.xebia.com

@xebiconfr #xebiconfr 14

2b

@xebiconfr #xebiconfr

Make it work, make it right, make it fast ...

15

2b

@xebiconfr #xebiconfr 16

2c

@xebiconfr #xebiconfr

… and integrate early

17

2c

Packager et intégrer le code dès que possible

● Au début, les fonctions fréquemment utilisées

● Puis toutes les phases○ Feature Engineering○ Modélisation○ ...

@xebiconfr #xebiconfr 18

2d

@xebiconfr #xebiconfr

Quels outils pour automatiser le build ?

19

2d

TOX MavenSBT

@xebiconfr #xebiconfr

Quels outils pour construire en continu ?

20

2d

@xebiconfr #xebiconfr 21

2e

@xebiconfr #xebiconfr

Contraintes pour les tests

22

2e

Pas de changement sans test préalable

Les tests doivent être rapides

@xebiconfr #xebiconfr

En résumé

23

2f

@xebiconfr #xebiconfr

Comment résoudre ces contraintes en pratique ?

3

24

@xebiconfr #xebiconfr

Du notebook au code packagé

25

3a

Notebook

@xebiconfr #xebiconfr

Du notebook au code packagé

26

3b

Notebook

CodeTemplate

@xebiconfr #xebiconfr

Du notebook au code packagé

27

3c

Notebook

CodeTemplate

Big FatMethod

@xebiconfr #xebiconfr

Du notebook au code packagé

28

3d

Notebook

CodeTemplate

IntegrationTest

Big FatMethod

@xebiconfr #xebiconfr

Du notebook au code packagé

29

3e

Notebook

CodeTemplate

IntegrationTest

UnitTests

Refactor

Big FatMethod

@xebiconfr #xebiconfr

Du notebook au code packagé

30

3f

Notebook

CodeTemplate

IntegrationTest

UnitTests

Refactor

Big FatMethod

Binary

@xebiconfr #xebiconfr

Du notebook au code packagé

31

3g

Notebook

CodeTemplate

IntegrationTest

UnitTests

Refactor

ImportPackage

Big FatMethod

Binary

@xebiconfr #xebiconfr

Du notebook au code packagé

32

3h

Notebook

CodeTemplate

IntegrationTest

UnitTests

Refactor

ImportPackage

Big FatMethod

Binary

@xebiconfr #xebiconfr

Focus sur les tests

4

33

@xebiconfr #xebiconfr

Quels outils ?

34

4a

@xebiconfr #xebiconfr

Test du Feature Engineering

35

4b

Standard Scaling

Suppression des

doublons

Gestion des valeurs

manquantes

Gestion des dates ...

● Le Feature Engineering peut très souvent être décomposé en une suite de transformations élémentaires

● Chacune de ces transformations peut être testée indépendamment

@xebiconfr #xebiconfr

Test de modèles de Machine Learning

36

4c

Features

Algorithmede Machine

Learning

● Le test de modèles est particulièrement compliqué○ L'entraînement de modèle implique d’inclure de l’aléatoire

● Rappel : on souhaite tester la performance du modèle sur un jeu de données, pas le comportement du modèle lui-même○ Vérifier que certaines catégories sont correctement prédites○ Définir un seuil minimal d'acceptation.

Modèle

@xebiconfr #xebiconfr

Performances dans le temps

37

4d

● Votre modèle part en production ? Ce n’est pas encore la fin○ “You build it, you run it” + “You maintain it”

● Il est important de monitorer la performance du modèle dans le temps. Si on observe une baisse de performance :○ Réentrainement sur de nouvelles données○ Ajout de nouvelles features○ Changement complet de modèle

@xebiconfr #xebiconfr

Agilité et Data Science

5

38

@xebiconfr #xebiconfr

Scrum ?

39

5a

Scrum ? Nope !Ce n’est pas pour moi

@xebiconfr #xebiconfr

Workflow typique de développement

40

5b

Ecriture de US

ImplémentationDémo

Déploiement prod Déploiement

@xebiconfr #xebiconfr

Workflow typique de data science

41

5c

Exploration

Feature engineering

Modélisation

Validation / review

@xebiconfr #xebiconfr

Comparons ces deux workflows

42

5d

~1 sprint

Exploration

Feature engineering

Modélisation

Validation

Spécification

ImplémentationValidation

@xebiconfr #xebiconfr

Qu’en est-il de la phase d’exploration ?

43

5e

● Une phase d’exploration peut durer plusieurs sprints

● La sortie de cette phase est incertaine

● Mais l’exploration permet de définir les prochaines étapes et les User Stories associées

@xebiconfr #xebiconfr

Nos essentials sur l’agilité dans la Data Science

44

5f

Inclure les résultats de la phase d’exploration dans

chaque sprint review

@xebiconfr #xebiconfr

Nos essentials sur l’agilité dans la Data Science

45

5f

Accepter l’incertitude

@xebiconfr #xebiconfr

Nos essentials sur l’agilité dans la Data Science

46

5f

Accepter l’imperfection

@xebiconfr #xebiconfr

Nos essentials sur l’agilité dans la Data Science

47

5f

Time boxer l’exploration

@xebiconfr #xebiconfr

Nos essentials sur l’agilité dans la Data Science

48

5f

Il n’y a pas que Scrum dans la vie #Kanban

@xebiconfr #xebiconfr

Une question d’organisation

6

49

@xebiconfr #xebiconfr

Organisation traditionnelle d’un projet

50

6a

@xebiconfr #xebiconfr

Organisation recommandée pour un projet data

51

6b

@xebiconfr #xebiconfr

Feature Team

52

6c

@xebiconfr #xebiconfr

Inclure des devops dans l’équipe

53

6d

@xebiconfr #xebiconfr

Pair Programming

54

6e

@xebiconfr #xebiconfr

Take away

7

55

@xebiconfr #xebiconfr

Les conseils fournis

56

7a

Tester votre code

@xebiconfr #xebiconfr

Les conseils fournis

57

7b

Tester votre code

Automatiser le build et déploiement au plus tôt

@xebiconfr #xebiconfr

Les conseils fournis

58

7c

Tester votre code

Automatiser le build et déploiement au plus tôt

Utiliser du code packagé dans votre notebook

@xebiconfr #xebiconfr

Les conseils fournis

59

7d

Tester votre code

Automatiser le build et déploiement au plus tôt

Utiliser du code packagé dans votre notebook

La Data Science peut fonctionner dans un environnement agile

@xebiconfr #xebiconfr

Les conseils fournis

60

7e

Tester votre code

Automatiser le build et déploiement au plus tôt

Utiliser du code packagé dans votre notebook

La Data Science peut fonctionner dans un environnement agile

Travailler en Feature Teams

@xebiconfr #xebiconfr

Merci !

61

Recommended