GitHub Actions-workflow voor hyperparametertuning

CI/CD voor Machine Learning

Ravi Bhadauria

Machine Learning Instructor

Branching-workflow

  • Losse feature-branches voor training en hyperparametertuning
    • Gewenste job moet starten
    • Andere job mag niet starten
    • Geïmplementeerd met if-conditie
  • Hyperparametertuning
    • Print een tabel met statistieken voor analyse
    • Open automatisch een nieuwe PR met parameterwijzigingen
  • Training
    • Lees nieuw parameterbestand in de trainings-PR
CI/CD voor Machine Learning

Voorwaardes instellen

Hyperparametertuning
jobs:
  hp_tune_and_publish_report:
    # Run when branch name starts with hp_tune/
    if: startsWith(github.head_ref, 'hp_tune/')

steps: ... - name: | DVC-pijplijn voor hyperparametertuning run: dvc repro -f hp_tune
Training
jobs:
  train_and_publish_report:
    # Run when branch name starts with train/
    if: startsWith(github.head_ref, 'train/')

steps: ... - name: DVC-pijplijn voor training uitvoeren run: dvc repro train
CI/CD voor Machine Learning

Workflowmachtigingen instellen

Repository Settings > Actions > General

Schermafbeelding van instellingenpagina om workflowmachtigingen te configureren

CI/CD voor Machine Learning

Start van hyperparametertuningjob

  • Zorg dat de branchnaam begint met hp_tune/

Schermafbeelding van GHA-workflow met draaiende hyperparametertuningjob en overgeslagen trainingsjob

CI/CD voor Machine Learning

Metrics van hyperparametertuningjob

Schermafbeelding van PR met GridSearch-resultaten als commentaar

CI/CD voor Machine Learning

Een trainings-PR maken vanuit hyperparameterrun

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

Nieuwe trainings-branch PR

Bovenste screenshot van nieuwe trainings-PR als resultaat van GHA-workflow

Onderste screenshot van nieuwe trainings-PR als resultaat van GHA-workflow

CI/CD voor Machine Learning

Nieuwe trainings-branch PR

Schermafbeelding van bestandsdiff met beste parameters in de nieuwe trainings-PR

CI/CD voor Machine Learning

Training handmatig starten

  • GITHUB_TOKEN kan geen workflows triggeren op eigen aangemaakte PR's

    • Voorkomt recursieve runs
  • Workarounds

    • Gebruik een Personal Access Token met de juiste rechten
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Start de training direct na hyperparametertuning in de GHA-pijplijn
    • Force-push om een run te triggeren (dwingt inspectie)
      -> 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 voor Machine Learning

Start van trainingsjob

Screenshot van GHA-workflow met draaiende trainingsjob en overgeslagen hyperparametertuningjob

CI/CD voor Machine Learning

Laten we oefenen!

CI/CD voor Machine Learning

Preparing Video For Download...