GitHub Actions-arbetsflöde för hyperparameterjustering

CI/CD för maskininlärning

Ravi Bhadauria

Machine Learning Instructor

Grenarbetsflöde

  • Separata funktionsgrenar för träning och hyperparameterjustering
    • Avsett jobb ska triggas
    • Annat jobb ska inte triggas
    • Implementeras med if-villkor
  • Hyperparameterjustering
    • Skriv ut statistiktabell för analys
    • Öppna automatiskt en ny PR med parameterändringar
  • Träning
    • Läs ny parameterfil i tränings-PR
CI/CD för maskininlärning

Ange villkor

Hyperparameterjustering
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äning
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 för maskininlärning

Konfigurera arbetsflödesbehörigheter

Repository Settings > Actions > General

Skärmbild av inställningssidan för att konfigurera arbetsflödesbehörigheter

CI/CD för maskininlärning

Start av hyperparameterjusteringsjobb

  • Se till att prefixera grennamnet med hp_tune/

Skärmbild av GHA-arbetsflöde som visar att hyperparameterjusteringsjobbet körs och träningsjobbet hoppas över

CI/CD för maskininlärning

Mätvärden för hyperparameterjusteringsjobb

Skärmbild av PR som visar GridSearch-resultat som en kommentar

CI/CD för maskininlärning

Skapa en tränings-PR från hyperparameterkörning

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 för maskininlärning

Ny träningsgrens-PR

Övre skärmbild av ny modelltränings-PR skapad som resultat av GHA-arbetsflöde

Nedre skärmbild av ny modelltränings-PR skapad som resultat av GHA-arbetsflöde

CI/CD för maskininlärning

Ny träningsgrens-PR

Skärmbild av diff för bästa parameterfil i den nya modelltränings-PR:en

CI/CD för maskininlärning

Starta träningskörning manuellt

  • GITHUB_TOKEN kan inte trigga arbetsflöden i egenskapade PR:er

    • Förhindrar rekursiva körningar
  • Alternativa lösningar

    • Använd en personlig åtkomsttoken med rätt behörigheter
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Kör träningsjobbet direkt efter hyperparameterjusteringen i GHA-pipelinen
    • Force-pusha koden för att trigga en körning (tvingar inspektion)
      -> 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 för maskininlärning

Start av träningsjobb

Skärmbild av GHA-arbetsflöde som visar att träningsjobbet körs och hyperparameterjusteringsjobbet hoppas över

CI/CD för maskininlärning

Nu kör vi en övning!

CI/CD för maskininlärning

Preparing Video For Download...