Organisation du code et refactorisation

Introduction au versionnage des données avec DVC

Ravi Bhadauria

Machine Learning Engineer

Prototypage vs code de production

  • Le prototypage permet d'itérer vite
  • Mais ne convient pas à la production
    • Non testé, sujet aux erreurs
    • Peu modulaire, avec beaucoup de répétitions
    • Souvent non reproductible
Introduction au versionnage des données avec DVC

Atouts d'un bon code de production

  • Reproductible : recréer les mêmes résultats selon l'environnement et dans le temps

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

  • Cohérent : une seule source de vérité pour tous les paramètres

    • Un fichier de configuration/de paramètres

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

Introduction au versionnage 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
    • Format standard pour échanger des données entre langages ou applications
    • Format simple et lisible
    • Extensions valides : .yaml ou .yml
1 https://dvc.org/doc/command-reference/params#description
Introduction au versionnage des données avec DVC

Syntaxe YAML

  • Indiquez les paramètres sous forme de dictionnaires

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

  • Types de données :

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

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

# Paires clé-valeur
a: 1
b: 1.2
c: "String value"
# Tableaux
a: [1, 2.2, 3, 4.8]
b:
  - 5
  - "String value"
# Dictionnaires imbriqués
a:
  b: "Some value"
  c: "Some other value"
Introduction au versionnage des données avec DVC

Exemple de fichier de configuration

# Paramètres de prétraitement des données
preprocess:
  ...
  target_column: RainTomorrow
  categorical_features:
    - Location
    - WindGustDir
    - ...

# Paramètres d'entraînement/évaluation du modèle train_and_evaluate: rfc_params: n_estimators: 2 ...
Introduction au versionnage des données avec DVC

Exemple de fonction modulaire

# Dans 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 }
# Dans le code d'entrée (train_and_evaluate.py)
from model import evaluate_model
metrics = evaluate_model(model, X_test, y_test)
Introduction au versionnage des données avec DVC

Exemple de structure de projet

Image de l'organisation du code dans un dépôt Machine Learning

Introduction au versionnage des données avec DVC

Passons à la pratique !

Introduction au versionnage des données avec DVC

Preparing Video For Download...