Робочий процес GitHub Actions для підбору гіперпараметрів

CI/CD для машинного навчання

Ravi Bhadauria

Machine Learning Instructor

Робочий процес з гілками

  • Окремі гілки для тренування та підбору гіперпараметрів
    • Має запускатися потрібна джоба
    • Інша джоба не має запускатися
    • Реалізовано через умову if
  • Підбір гіперпараметрів
    • Вивести таблицю статистики для аналізу
    • Автоматично відкрити новий PR зі змінами параметрів
  • Тренування
    • Прочитати новий файл параметрів у тренувальному PR
CI/CD для машинного навчання

Налаштування умов

Підбір гіперпараметрів
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
Тренування
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 для машинного навчання

Налаштування дозволів для workflow

Repository Settings > Actions > General

Знімок екрана сторінки налаштувань для дозволів робочих процесів

CI/CD для машинного навчання

Запуск джоби підбору гіперпараметрів

  • Обов'язково додайте префікс hp_tune/ до назви гілки

Знімок екрана GHA: джоба підбору гіперпараметрів працює, тренувальна пропущена

CI/CD для машинного навчання

Метрики джоби підбору гіперпараметрів

Знімок екрана PR з результатами GridSearch у коментарі

CI/CD для машинного навчання

Створення тренувального PR з запуску підбору гіперпараметрів

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 для машинного навчання

Новий PR тренувальної гілки

Верхній знімок: новий PR для тренування моделі, створений GHA

Нижній знімок: новий PR для тренування моделі, створений GHA

CI/CD для машинного навчання

Новий PR тренувальної гілки

Знімок екрана diff файлу з найкращими параметрами в новому PR тренування моделі

CI/CD для машинного навчання

Ручний запуск тренування

  • GITHUB_TOKEN не може запускати workflow у власноруч створених PR

    • Запобігання рекурсивним запускам
  • Обхідні шляхи

    • Використайте персональний токен з потрібними дозволами
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Запустіть тренувальну джобу одразу після підбору гіперпараметрів у конвеєрі GHA
    • Виконайте force push, щоб спричинити запуск (примусова перевірка)
      -> 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 для машинного навчання

Запуск тренувальної джоби

Знімок екрана GHA: тренувальна джоба працює, джоба підбору гіперпараметрів пропущена

CI/CD для машинного навчання

Давайте потренуємось!

CI/CD для машинного навчання

Preparing Video For Download...