Przepływ pracy GitHub Actions do strojenia hiperparametrów

CI/CD dla uczenia maszynowego

Ravi Bhadauria

Machine Learning Instructor

Przepływ pracy z gałęziami

  • Oddzielne gałęzie funkcji dla trenowania i strojenia hiperparametrów
    • Właściwe zadanie powinno się wyzwolić
    • Inne zadanie nie powinno się wyzwolić
    • Zaimplementowane przy użyciu warunku if
  • Strojenie hiperparametrów
    • Wydruk tabeli statystyk do analizy
    • Automatyczne otwieranie nowego PR ze zmianami parametrów
  • Trenowanie
    • Odczyt nowego pliku parametrów w PR trenowania
CI/CD dla uczenia maszynowego

Ustawianie warunków

Strojenie hiperparametrów
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
Trenowanie
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 dla uczenia maszynowego

Konfiguracja uprawnień przepływu pracy

Ustawienia repozytorium > Actions > General

Zrzut ekranu strony ustawień do konfiguracji uprawnień przepływu pracy

CI/CD dla uczenia maszynowego

Uruchomienie zadania strojenia hiperparametrów

  • Należy pamiętać, aby poprzedzić nazwę gałęzi prefiksem hp_tune/

Zrzut ekranu przepływu GHA pokazujący uruchomione zadanie strojenia hiperparametrów i pominięte zadanie trenowania

CI/CD dla uczenia maszynowego

Metryki zadania strojenia hiperparametrów

Zrzut ekranu PR z wynikami GridSearch jako komentarz

CI/CD dla uczenia maszynowego

Tworzenie PR trenowania z przebiegu strojenia hiperparametrów

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 dla uczenia maszynowego

Nowy PR gałęzi trenowania

Górny zrzut ekranu nowego PR trenowania modelu utworzonego w wyniku przepływu GHA

Dolny zrzut ekranu nowego PR trenowania modelu utworzonego w wyniku przepływu GHA

CI/CD dla uczenia maszynowego

Nowy PR gałęzi trenowania

Zrzut ekranu różnicy pliku najlepszych parametrów w nowym PR trenowania modelu

CI/CD dla uczenia maszynowego

Ręczne uruchamianie zadania trenowania

  • GITHUB_TOKEN nie może wyzwalać przepływów w samodzielnie utworzonych PR

    • Zapobieganie rekurencyjnym uruchomieniom
  • Obejścia

    • Użycie tokenu dostępu osobistego z odpowiednimi uprawnieniami
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Uruchomienie zadania trenowania bezpośrednio po strojeniu hiperparametrów w potoku GHA
    • Wymuszenie push kodu w celu wyzwolenia uruchomienia (wymusza inspekcję)
      -> 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 dla uczenia maszynowego

Uruchomienie zadania trenowania

Zrzut ekranu przepływu GHA pokazujący uruchomione zadanie trenowania i pominięte zadanie strojenia hiperparametrów

CI/CD dla uczenia maszynowego

Czas na ćwiczenia!

CI/CD dla uczenia maszynowego

Preparing Video For Download...