GitHub Actions

Completato

Per automatizzare i flussi di lavoro con GitHub è possibile usare GitHub Actions.

GitHub viene usato principalmente per ospitare progetti di codice. Quando si ospita il codice di Machine Learning in un repository GitHub, è possibile creare un flusso di lavoro di GitHub Actions per compilare, testare e distribuire automaticamente il codice.

Nota

Per usare GitHub Actions con le pipeline di Azure Machine Learning, è necessario consentire al repository GitHub di accedere all'area di lavoro di Azure Machine Learning tramite una connessione sicura.

Si apprenderà come usare GitHub Actions per eseguire una pipeline di Azure Machine Learning.

Creare un'azione GitHub

Diagramma della gerarchia di pipeline.

  1. Definire un evento che attiverà il flusso di lavoro.
  2. Eseguire il flusso di lavoro, costituito da processi.
  3. Un processo include uno o più passaggi.
  4. Come passaggio, eseguire una pipeline di Azure Machine Learning.
  5. La pipeline di Azure Machine Learning è costituita da script o da componenti di Azure Machine Learning.

Per creare il flusso di lavoro per GitHub Actions, si definiscono i passaggi da eseguire in un file YAML. Nel file YAML si includeranno:

  • Evento: la modalità di attivazione del flusso di lavoro.
  • Processo: un gruppo di passaggi da eseguire in uno strumento di esecuzione. Per i carichi di lavoro di Machine Learning, si userà probabilmente una macchina virtuale Ubuntu Linux.
  • Passaggio: uno script o un'azione da eseguire. Ad esempio, un comando dell'interfaccia della riga di comando per avviare la pipeline di Azure Machine Learning (az ml job create).

Suggerimento

Altre informazioni sui concetti di base usati in GitHub Actions.

Per eseguire una pipeline di Azure Machine Learning ogni volta che viene eseguito il push delle modifiche nel repository, è possibile usare un file YAML simile al seguente:

name: Train model

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest 
    steps:
    - name: check out repo
      uses: actions/checkout@v2
    - name: install az ml extension
      run: az extension add -n ml -y
    - name: azure login
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}
    - name: set current directory
      run: cd src
    - name: run pipeline
      run: az ml job create --file src/aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws

Di seguito è illustrato il flusso di lavoro di esempio:

  1. Estrarre il repository per renderlo disponibile nello strumento di esecuzione.
  2. Installare l'estensione di Azure Machine Learning per l'interfaccia della riga di comando.
  3. Accedere ad Azure usando il valore predefinito di AZURE_CREDENTIALS.
  4. Passare alla cartella src contenente tutto il codice di produzione.
  5. Eseguire la pipeline di Azure Machine Learning.

Eseguire un flusso di lavoro con GitHub Actions

Si supponga di aver creato il file YAML per definire il flusso di lavoro. Il file YAML viene archiviato nella directory .github/workflows/ del repository.

Per visualizzare il flusso di lavoro, passare alla scheda Actions di GitHub relativa al repository.

Screenshot della panoramica di GitHub Actions.

GitHub estrarrà automaticamente tutti i flussi di lavoro archiviati nella directory .github/workflows/.

Suggerimento

Se si aggiunge workflow_dispatch: al file YAML del flusso di lavoro, è possibile attivare manualmente l'esecuzione del flusso di lavoro dalla scheda Actions.

È possibile attivare il flusso di lavoro con gli eventi specificati nel file YAML del flusso di lavoro. Nell'esempio, l'esecuzione di un push nel repository attiverà l'esecuzione del flusso di lavoro. Ogni volta che si apporta una modifica e si esegue il push dei commit nel repository (in locale in Visual Studio Code o direttamente in GitHub), viene eseguito il flusso di lavoro.

Selezionare l'esecuzione più recente per esaminare più in dettaglio se tutti i passaggi sono stati eseguiti correttamente o quali messaggi di errore sono stati restituiti.

Screenshot del flusso di lavoro eseguito correttamente.

Quando un flusso di lavoro attiva una pipeline di Azure Machine Learning, è necessario esaminare anche l'esecuzione della pipeline nell'area di lavoro di Azure Machine Learning perché possono comunque verificarsi errori all'interno della pipeline di Azure Machine Learning. Tutti i messaggi di errore potranno essere visualizzati nella cartella degli output generati dall'esecuzione dell'esperimento della pipeline di Azure Machine Learning.