Workflow do GitHub Actions para ajuste de hiperparâmetros

CI/CD para Machine Learning

Ravi Bhadauria

Machine Learning Instructor

Workflow com branches

  • Branches de feature separadas para treino e ajuste de hiperparâmetros
    • O job desejado deve disparar
    • O outro job não deve disparar
    • Implementado com condição if
  • Ajuste de hiperparâmetros
    • Imprimir tabela de estatísticas para análise
    • Abrir automaticamente um novo PR com mudanças de parâmetros
  • Treinamento
    • Ler novo arquivo de parâmetros no PR de treino
CI/CD para Machine Learning

Definindo condicionais

Ajuste de hiperparâmetros
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
Treinamento
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 para Machine Learning

Configurar permissões do workflow

Repository Settings > Actions > General

Captura de tela da página de configurações para definir permissões do workflow

CI/CD para Machine Learning

Início do job de ajuste de hiperparâmetros

  • Garanta que o nome da branch comece com hp_tune/

Captura de tela do workflow do GHA mostrando o job de ajuste de hiperparâmetros em execução e o de treino ignorado

CI/CD para Machine Learning

Métricas do job de ajuste de hiperparâmetros

Captura de tela do PR mostrando os resultados do GridSearch como comentário

CI/CD para Machine Learning

Criando um PR de treino a partir do ajuste de hiperparâmetros

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

Novo PR da branch de treino

Captura de tela superior do novo PR de treino de modelo criado pelo workflow do GHA

Captura de tela inferior do novo PR de treino de modelo criado pelo workflow do GHA

CI/CD para Machine Learning

Novo PR da branch de treino

Captura de tela do diff do arquivo de melhores parâmetros no novo PR de treino de modelo

CI/CD para Machine Learning

Iniciando o treino manualmente

  • GITHUB_TOKEN não pode acionar workflows em PRs criados por ele mesmo

    • Evita execuções recursivas
  • Alternativas

    • Use um Personal access token com permissões adequadas
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Rodar o job de treino logo após o ajuste na pipeline do GHA
    • Dar force push no código para disparar uma execução (exige revisão)
      -> 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 para Machine Learning

Início do job de treino

Captura de tela do workflow do GHA mostrando o job de treino em execução e o de ajuste de hiperparâmetros ignorado

CI/CD para Machine Learning

Vamos praticar!

CI/CD para Machine Learning

Preparing Video For Download...