Workflow GitHub Actions per l'ottimizzazione degli iperparametri

CI/CD per Machine Learning

Ravi Bhadauria

Machine Learning Instructor

Workflow con branching

  • Branch separati per training e ottimizzazione iperparametri
    • Deve attivarsi il job previsto
    • L'altro job non deve attivarsi
    • Implementato con condizione if
  • Ottimizzazione iperparametri
    • Stampa una tabella di statistiche per l'analisi
    • Apre automaticamente una nuova PR con le modifiche ai parametri
  • Training
    • Legge il nuovo file dei parametri nella PR di training
CI/CD per Machine Learning

Impostare condizioni

Ottimizzazione iperparametri
jobs:
  hp_tune_and_publish_report:
    # Esegui quando il nome del branch inizia con hp_tune/
    if: startsWith(github.head_ref, 'hp_tune/')

steps: ... - name: | DVC pipeline per ottimizzazione iperparametri run: dvc repro -f hp_tune
Training
jobs:
  train_and_publish_report:
    # Esegui quando il nome del branch inizia con train/
    if: startsWith(github.head_ref, 'train/')

steps: ... - name: Esegui la pipeline DVC per il training run: dvc repro train
CI/CD per Machine Learning

Configura le autorizzazioni del workflow

Impostazioni repository > Actions > Generale

Screenshot della pagina delle impostazioni per configurare le autorizzazioni del workflow

CI/CD per Machine Learning

Avvio del job di ottimizzazione iperparametri

  • Assicurati di anteporre al nome del branch hp_tune/

Screenshot del workflow GHA che mostra il job di ottimizzazione iperparametri in esecuzione e il job di training ignorato

CI/CD per Machine Learning

Metriche del job di ottimizzazione iperparametri

Screenshot della PR che mostra i risultati di GridSearch come commento

CI/CD per Machine Learning

Creare una PR di training dall'esecuzione degli iperparametri

steps:
  - name: Create training branch
    env:
      REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    run: |
      # Il nome del branch inizia con train/
      export BRANCH_NAME=train/$(git rev-parse --short "${{ github.sha }}")

# Crea PR per il 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 per Machine Learning

Nuova PR del branch di training

Screenshot in alto della nuova PR di training del modello creata dal workflow GHA

Screenshot in basso della nuova PR di training del modello creata dal workflow GHA

CI/CD per Machine Learning

Nuova PR del branch di training

Screenshot del diff del file dei migliori parametri nella nuova PR di training del modello

CI/CD per Machine Learning

Avviare manualmente l'esecuzione di training

  • GITHUB_TOKEN non può avviare workflow su PR create da sé

    • Previene esecuzioni ricorsive
  • Soluzioni alternative

    • Usa un Personal access token con le autorizzazioni corrette
      steps:
        - env:
            GITHUB_TOKEN: ${{ secrets.MY_TOKEN }}
      
    • Esegui il job di training subito dopo l'ottimizzazione nella pipeline GHA
    • Forza il push del codice per attivare un run (forza l'ispezione)
      -> 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 per Machine Learning

Avvio del job di training

Screenshot del workflow GHA che mostra il job di training in esecuzione e il job di ottimizzazione iperparametri ignorato

CI/CD per Machine Learning

Esercitiamoci!

CI/CD per Machine Learning

Preparing Video For Download...