Organisation du code et remaniement

Introduction au contrôle de versions des données avec DVC

Ravi Bhadauria

Machine Learning Engineer

Prototypage vs code de production

  • Le prototypage permet des itérations rapides
  • Mais ce n'est pas adapté à la production
    • Non testé et sujet aux erreurs
    • Peu modulaire, avec beaucoup de répétitions
    • Souvent non reproductible
Introduction au contrôle de versions des données avec DVC

Caractéristiques d'un bon code de production

  • Reproductible : recréer les mêmes résultats dans différents environnements et moments

  • Modulaire : écrit en modules distincts, indépendants et testables

  • Uniforme : source unique de vérité pour tous les paramètres

    • Un fichier de configuration/paramètres

Schéma illustrant trois propriétés du code de production

Introduction au contrôle de versions des données avec DVC

Fichiers de configuration et YAML

  • Les fichiers doivent être dans un format pris en charge

    • YAML, JSON, TOML, Python
    • Par défaut : params.yaml
  • Nous utiliserons YAML

    • YAML Ain't Markup Language
    • Offre un format standard pour échanger des données entre langages ou applis
    • Format simple et épuré
    • Extensions valides : .yaml ou .yml
1 https://dvc.org/doc/command-reference/params#description
Introduction au contrôle de versions des données avec DVC

Syntaxe YAML

  • Spécifier les paramètres en dictionnaires

    • Clés et valeurs séparées par :
  • Les commentaires commencent par #

  • Types de données :

    • Entiers, réels, chaînes
  • Structures de données :

    • Tableaux
    • Dictionnaires imbriqués
  • L'indentation est importante

# Key-value pairs
a: 1
b: 1.2
c: "String value"
# Arrays
a: [1, 2.2, 3, 4.8]
b:
  - 5
  - "String value"
# Nested dictionaries
a:
  b: "Some value"
  c: "Some other value"
Introduction au contrôle de versions des données avec DVC

Exemple de fichier de configuration

# Data preprocessing paramters
preprocess:
  ...
  target_column: RainTomorrow
  categorical_features:
    - Location
    - WindGustDir
    - ...

# Model training/evaluation paramters train_and_evaluate: rfc_params: n_estimators: 2 ...
Introduction au contrôle de versions des données avec DVC

Exemple de fonction modulaire

# In model.py
def evaluate_model(model, X_test, y_test):
    """Evaluate a model on a test set and return metrics."""
    y_pred = model.predict(X_test)
    precision = precision_score(y_test, y_pred)
    ...
    return { "accuracy": accuracy, "precision": precision,
        "recall": recall, "f1_score": f1 }
# In entry-point code (train_and_evaluate.py)
from model import evaluate_model
metrics = evaluate_model(model, X_test, y_test)
Introduction au contrôle de versions des données avec DVC

Exemple d'agencement du code d'un projet

Image de la structure du code dans un dépôt de Machine Learning

Introduction au contrôle de versions des données avec DVC

Passons à la pratique !

Introduction au contrôle de versions des données avec DVC

Preparing Video For Download...