Workflow GitHub Actions pour le réglage des hyperparamètres

CI/CD pour le Machine Learning

Ravi Bhadauria

Machine Learning Instructor

Workflow de branches

  • Branches de fonctionnalités distinctes pour l'entraînement et le réglage des hyperparamètres
    • Le job visé doit se déclencher
    • L'autre job ne doit pas se déclencher
    • Implémenté avec une condition if
  • Réglage des hyperparamètres
    • Afficher un tableau de statistiques pour l'analyse
    • Ouvrir automatiquement une nouvelle PR avec les changements de paramètres
  • Entraînement
    • Lire le nouveau fichier de paramètres dans la PR d'entraînement
CI/CD pour le Machine Learning

Définir des conditions

Réglage des hyperparamètres
jobs:
  hp_tune_and_publish_report:
    # Run when branch name starts with hp_tune/
    if: startsWith(github.head_ref, 'hp_tune/')

steps: ... - name: | DVC pipeline for hyperparameter tuning run: dvc repro -f hp_tune
Entraînement
jobs:
  train_and_publish_report:
    # Run when branch name starts with train/
    if: startsWith(github.head_ref, 'train/')

steps: ... - name: Run DVC pipeline for training run: dvc repro train
CI/CD pour le Machine Learning

Configurer les autorisations du workflow

Repository Settings > Actions > General

Capture d'écran de la page des paramètres pour configurer les autorisations du workflow

CI/CD pour le Machine Learning

Lancement du job de réglage des hyperparamètres

  • Veillez à préfixer le nom de la branche par hp_tune/

Capture d'écran d'un workflow GHA montrant le job de réglage des hyperparamètres en cours et le job d'entraînement ignoré

CI/CD pour le Machine Learning

Métriques du job de réglage des hyperparamètres

Capture d'écran d'une PR montrant les résultats de GridSearch en commentaire

CI/CD pour le Machine Learning

Créer une PR d'entraînement depuis l'exécution de réglage

steps:
  - name: Create training branch
    env:
      REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    run: |
      # Branch name begins with train/
      export BRANCH_NAME=train/$(git rev-parse --short "${{ github.sha }}")

# Create PR for training cml pr create \ --user-email [email protected] \ --user-name HPBot \ --message "Hyperparameter tuning" \ --branch $BRANCH_NAME \ --target-branch main \ rfc_best_params.json
CI/CD pour le Machine Learning

Nouvelle PR de branche d'entraînement

Capture d'écran du haut : nouvelle PR d'entraînement de modèle créée par le workflow GHA

Capture d'écran du bas : nouvelle PR d'entraînement de modèle créée par le workflow GHA

CI/CD pour le Machine Learning

Nouvelle PR de branche d'entraînement

Capture d'écran du diff du meilleur fichier de paramètres dans la nouvelle PR d'entraînement de modèle

CI/CD pour le Machine Learning

Démarrer l'entraînement manuellement

  • GITHUB_TOKEN ne peut pas déclencher de workflows sur des PR créées par lui-même

    • Évite les exécutions récursives
  • Solutions

    • Utiliser un jeton d'accès personnel avec les bonnes autorisations
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Lancer le job d'entraînement juste après le réglage dans le pipeline GHA
    • Forcer le push du code pour déclencher une exécution (force l'inspection)
      -> git checkout train/1f34fs
      -> git commit --amend --no-edit && git push -f
      
1 https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow
CI/CD pour le Machine Learning

Lancement du job d'entraînement

Capture d'écran d'un workflow GHA montrant le job d'entraînement en cours et le job de réglage des hyperparamètres ignoré

CI/CD pour le Machine Learning

Passons à la pratique !

CI/CD pour le Machine Learning

Preparing Video For Download...