Condividi tramite


Usare GitHub Actions con Azure Machine Learning

SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)

Iniziare a usare GitHub Actions per eseguire il training di un modello in Azure Machine Learning.

Questo articolo illustra come creare un flusso di lavoro di GitHub Actions che compila e distribuisce un modello di Machine Learning in Azure Machine Learning. Si esegue il training di un modello di regressione lineare scikit-learn nel set di dati NYC Taxi.

GitHub Actions usa un file YAML (.yml) del /.github/workflows/ flusso di lavoro nel percorso nel repository. Questa definizione contiene i vari passaggi e i parametri che costituiscono il flusso di lavoro.

Prerequisiti

Prima di seguire la procedura descritta in questo articolo, assicurarsi di disporre dei prerequisiti seguenti:

  • Un'area di lavoro di Azure Machine Learning. Se non è disponibile, seguire la procedura descritta nell'articolo Avvio rapido: Creare risorse dell'area di lavoro per crearne una.

  • Per installare l’SDK Python v2, usare il comando seguente:

    pip install azure-ai-ml azure-identity
    

    Per aggiornare un'installazione esistente di SDK alla versione più recente, usare il comando seguente:

    pip install --upgrade azure-ai-ml azure-identity
    

    Per altre informazioni, vedere Installare Python SDK v2 per Azure Machine Learning.

  • Un account GitHub. Se non è disponibile, iscriversi per riceverne uno gratuito.

Passaggio 1: ottenere il codice

Creare una copia tramite fork del repository seguente in GitHub:

https://github.com/azure/azureml-examples

Clonare il repository con fork in locale.

git clone https://github.com/YOUR-USERNAME/azureml-examples

Passaggio 2: eseguire l'autenticazione con Azure

È necessario prima definire come eseguire l'autenticazione con Azure. L'opzione consigliata e più sicura consiste nell'accedere con OpenID Connect usando un'applicazione Microsoft Entra o un'identità gestita assegnata dall'utente. Se necessario, è anche possibile usare l'accesso con un'entità servizio e un segreto. Questo approccio è meno sicuro e non consigliato.

Generare le credenziali per la distribuzione

Per usare l'azione di accesso di Azure con OIDC, è necessario configurare una credenziale di identità federata in un'applicazione Microsoft Entra o in un'identità gestita assegnata dall'utente.

Opzione 1: Applicazione Microsoft Entra

Opzione 2: Identità gestita assegnata dall'utente

Creare segreti

È necessario specificare l'ID client, l'ID directory (tenant) e l'ID sottoscrizione dell'applicazione all'azione di accesso. Questi valori possono essere forniti direttamente nel flusso di lavoro oppure possono essere archiviati nei segreti gitHub e riportati nel flusso di lavoro. Salvare i valori come segreti GitHub è l'opzione più sicura.

  1. In GitHub, andare al proprio repository.

  2. Selezionare Sicurezza > Segreti e variabili > Azioni.

    Screenshot dell'aggiunta di un segreto

  3. Selezionare Nuovo segreto repository.

    Nota

    Per migliorare la sicurezza del flusso di lavoro nei repository pubblici, usare i segreti dell'ambiente anziché i segreti del repository. Se l'ambiente richiede l'approvazione, un processo non può accedere ai segreti dell'ambiente finché uno dei revisori necessari non lo approva.

  4. Creare segreti per AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_SUBSCRIPTION_ID. Copiare questi valori dall'applicazione Microsoft Entra o dall'identità gestita assegnata dall'utente per i segreti GitHub:

    Segreto GitHub Applicazione Microsoft Entra o identità gestita assegnata dall'utente
    AZURE_CLIENT_ID ID client
    AZURE_SUBSCRIPTION_ID ID sottoscrizione
    AZURE_TENANT_ID ID della directory (tenant)

    Nota

    Per motivi di sicurezza, è consigliabile usare i segreti di GitHub anziché passare i valori direttamente al flusso di lavoro.

Passaggio 3: aggiornare setup.sh per connettersi all'area di lavoro di Azure Machine Learning

È necessario aggiornare le variabili del file di installazione dell'interfaccia della riga di comando in modo che corrispondano all'area di lavoro.

  1. Nel repository con fork andare a azureml-examples/cli/.

  2. Modificare setup.sh e aggiornare queste variabili nel file.

    Variabile Descrizione
    GROUP nome del gruppo di risorse
    LOCATION Posizione dell'area di lavoro (ad esempio: eastus2)
    AREA DI LAVORO Nome dell'area di lavoro di Azure Machine Learning

Passaggio 4: aggiornare pipeline.yml con il nome del cluster di elaborazione

Si usa un pipeline.yml file per distribuire la pipeline di Azure Machine Learning. La pipeline è una pipeline di Machine Learning e non una pipeline DevOps. È necessario eseguire questo aggiornamento solo se si usa un nome diverso da cpu-cluster per il nome del cluster del computer.

  1. Nel repository con fork andare a azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Ogni volta che viene visualizzato compute: azureml:cpu-cluster, aggiornare il valore di cpu-cluster con il nome del cluster di elaborazione. Ad esempio, se il cluster è denominato my-cluster, il nuovo valore sarà azureml:my-cluster. Sono disponibili cinque aggiornamenti.

Passaggio 5: eseguire il flusso di lavoro di GitHub Actions

Il flusso di lavoro esegue l'autenticazione con Azure, configura l'interfaccia della riga di comando di Azure Machine Learning e usa l'interfaccia della riga di comando per eseguire il training di un modello in Azure Machine Learning.

Il file del flusso di lavoro è costituito da una sezione trigger e processi:

  • Un trigger avvia il flusso di lavoro nella sezione on. Il flusso di lavoro viene eseguito per impostazione predefinita in base a una pianificazione cronologica e quando viene effettuata una richiesta pull da rami e percorsi corrispondenti. Altre informazioni sugli eventi che attivano i flussi di lavoro.
  • Nella sezione dei processi del flusso di lavoro si estrae il codice e si accede ad Azure con l'azione di accesso di Azure usando OpenID Connect.
  • La sezione processi include anche un'azione di installazione che installa e configura l'interfaccia della riga di comando di Machine Learning (v2). Dopo aver installato l'interfaccia della riga di comando, l'azione di esecuzione del processo esegue il file di Azure Machine Learning pipeline.yml per eseguire il training di un modello con i dati dei taxi di New York.

Abilitare il flusso di lavoro

  1. Nel repository con fork aprire .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml e verificare che il flusso di lavoro sia simile al seguente.

    name: cli-jobs-pipelines-nyc-taxi-pipeline
    on:
      workflow_dispatch:
      schedule:
        - cron: "0 0/4 * * *"
      pull_request:
        branches:
          - main
          - sdk-preview
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v2
        - name: azure login
          uses: azure/login@v2
          with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - name: setup
          run: bash setup.sh
          working-directory: cli
          continue-on-error: true
        - name: run job
          run: bash -x ../../../run-job.sh pipeline.yml
          working-directory: cli/jobs/pipelines/nyc-taxi
    
  2. Selezionare Visualizza esecuzioni.

  3. Abilitare i flussi di lavoro selezionando Comprendo i flussi di lavoro, procedere e abilitarli.

  4. Selezionare il flusso di lavoro cli-jobs-pipelines-nyc-taxi-pipelinee scegliere Abilita flusso di lavoro.

    Screenshot del flusso di lavoro di abilitazione di GitHub Actions.

  5. Selezionare Esegui flusso di lavoro e scegliere l'opzione per eseguire flusso di lavoro ora.

    Screenshot del flusso di lavoro di esecuzione di GitHub Actions.

Passaggio 6: verificare l'esecuzione del flusso di lavoro

  1. Aprire l'esecuzione del flusso di lavoro completata e verificare che il processo di compilazione sia stato eseguito correttamente. Accanto al processo viene visualizzato un segno di spunta verde.

  2. Aprire lo studio di Azure Machine Learning e passare a nyc-taxi-pipeline-example. Verificare che ogni parte del processo (preparazione, trasformazione, training, stima, punteggio) sia stata completata e che venga visualizzato un segno di spunta verde.

    Screenshot dell'esecuzione corretta di Machine Learning Studio.

Pulire le risorse

Quando il gruppo di risorse e il repository non sono più necessari, pulire le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.

Passaggi successivi