Workflow GitHub Actions pentru ajustarea hiperparametrilor

CI/CD pentru Machine Learning

Ravi Bhadauria

Machine Learning Instructor

Workflow cu ramuri

  • Ramuri separate pentru antrenament și ajustarea hiperparametrilor
    • Jobul vizat trebuie să se declanșeze
    • Celălalt job nu trebuie să se declanșeze
    • Implementat prin condiția if
  • Ajustarea hiperparametrilor
    • Afișați un tabel de statistici pentru analiză
    • Deschideți automat un PR nou cu modificările parametrilor
  • Antrenament
    • Citiți noul fișier de parametri din PR-ul de antrenament
CI/CD pentru Machine Learning

Configurarea condițiilor

Ajustarea hiperparametrilor
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
Antrenament
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 pentru Machine Learning

Configurarea permisiunilor workflow

Setări repository > Actions > General

Captură de ecran a paginii de setări pentru configurarea permisiunilor workflow

CI/CD pentru Machine Learning

Lansarea jobului de ajustare a hiperparametrilor

  • Asigurați-vă că prefixați numele ramurii cu hp_tune/

Captură de ecran a workflow-ului GHA cu jobul de ajustare a hiperparametrilor în execuție și jobul de antrenament omis

CI/CD pentru Machine Learning

Metrici pentru ajustarea hiperparametrilor

Captură de ecran a PR-ului cu rezultatele GridSearch ca un comentariu

CI/CD pentru Machine Learning

Crearea unui PR de antrenament din rularea hiperparametrilor

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

PR nou pentru ramura de antrenament

Captură de ecran superioară a PR-ului de antrenament creat ca rezultat al workflow-ului GHA

Captură de ecran inferioară a PR-ului de antrenament creat ca rezultat al workflow-ului GHA

CI/CD pentru Machine Learning

PR nou pentru ramura de antrenament

Captură de ecran cu diferențele din fișierul de parametri optimi în noul PR de antrenament

CI/CD pentru Machine Learning

Pornirea manuală a rulării antrenamentului

  • GITHUB_TOKEN nu poate declanșa workflow-uri pe PR-uri create de el însuși

    • Prevenirea rulărilor recursive
  • Soluții alternative

    • Utilizați un token de acces personal cu permisiunile corespunzătoare
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Rulați jobul de antrenament imediat după ajustarea hiperparametrilor în pipeline-ul GHA
    • Forțați push-ul codului pentru a declanșa o rulare (forțează inspecția)
      -> 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 pentru Machine Learning

Lansarea jobului de antrenament

Captură de ecran a workflow-ului GHA cu jobul de antrenament în execuție și jobul de ajustare a hiperparametrilor omis

CI/CD pentru Machine Learning

Să exersăm!

CI/CD pentru Machine Learning

Preparing Video For Download...