Workflow GitHub Actions pro ladění hyperparametrů

CI/CD pro Machine Learning

Ravi Bhadauria

Machine Learning Instructor

Workflow s větvemi

  • Oddělené větve pro trénování a ladění hyperparametrů
    • Zamýšlená úloha se spustí
    • Druhá úloha se nespustí
    • Implementováno pomocí podmínky if
  • Ladění hyperparametrů
    • Tisk tabulky statistik pro analýzu
    • Automatické otevření nového PR se změnami parametrů
  • Trénování
    • Načtení nového souboru parametrů v trénovacím PR
CI/CD pro Machine Learning

Nastavení podmínek

Ladění hyperparametrů
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
Trénování
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 pro Machine Learning

Nastavení oprávnění workflow

Nastavení repozitáře > Akce > Obecné

Screenshot stránky nastavení pro konfiguraci oprávnění workflow

CI/CD pro Machine Learning

Spuštění úlohy ladění hyperparametrů

  • Název větve musí začínat předponou hp_tune/

Screenshot workflow GHA zobrazující spuštěnou úlohu ladění hyperparametrů a přeskočenou trénovací úlohu

CI/CD pro Machine Learning

Metriky úlohy ladění hyperparametrů

Screenshot PR zobrazující výsledky GridSearch jako komentář

CI/CD pro Machine Learning

Vytvoření trénovacího PR z běhu ladění hyperparametrů

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 pro Machine Learning

Nový PR trénovací větve

Horní screenshot nového PR pro trénování modelu vytvořeného jako výstup workflow GHA

Dolní screenshot nového PR pro trénování modelu vytvořeného jako výstup workflow GHA

CI/CD pro Machine Learning

Nový PR trénovací větve

Screenshot rozdílu souboru nejlepších parametrů v novém PR pro trénování modelu

CI/CD pro Machine Learning

Ruční spuštění trénovacího běhu

  • GITHUB_TOKEN nemůže spouštět workflow na vlastnoručně vytvořených PR

    • Ochrana před rekurzivními spuštěními
  • Alternativní řešení

    • Použití osobního přístupového tokenu s příslušnými oprávněními
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Spuštění trénovací úlohy hned po ladění hyperparametrů v pipeline GHA
    • Vynucené odeslání kódu pro spuštění běhu (vynutí kontrolu)
      -> 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 pro Machine Learning

Spuštění trénovací úlohy

Screenshot workflow GHA zobrazující spuštěnou trénovací úlohu a přeskočenou úlohu ladění hyperparametrů

CI/CD pro Machine Learning

Pojďme cvičit!

CI/CD pro Machine Learning

Preparing Video For Download...