Рабочий процесс 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 для машинного обучения

Настройка разрешений рабочего процесса

Настройки репозитория > 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 ветки обучения

Снимок экрана с различиями в файле лучших параметров в новом PR обучения модели

CI/CD для машинного обучения

Запуск обучения вручную

  • GITHUB_TOKEN не может запускать рабочие процессы в самостоятельно созданных PR

    • Защита от рекурсивных запусков
  • Варианты обхода

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