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 eseguirà il training di un modello di regressione lineare scikit-learn nel set di dati NYC Taxi.
GitHub Actions usa un file YAML (.yml) del flusso di lavoro /.github/workflows/
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. È possibile usare un'entità servizio o OpenID Connect.
Generare le credenziali per la distribuzione
Creare un'entità servizio con il comando az ad sp create-for-rbac dell'interfaccia della riga di comando di Azure. Eseguire questo comando con Azure Cloud Shell nel portale di Azure oppure selezionando il pulsante Prova.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Il parametro --json-auth
è disponibile nelle versioni >dell'interfaccia della riga di comando di Azure = 2.51.0. Versioni precedenti a questo utilizzo --sdk-auth
con un avviso di deprecazione.
Nell'esempio precedente sostituire i segnaposto con l'ID sottoscrizione e il nome del gruppo di risorse. L'output è un oggetto JSON con le credenziali di assegnazione di ruolo che forniscono l'accesso all'app del servizio app simile a questo esempio. Copiare l'oggetto JSON per un uso successivo.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Creare segreti
In GitHub, andare al proprio repository.
Passare a Impostazioni nel menu di spostamento.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto repository.
Incollare l'intero output JSON del comando dell'interfaccia della riga di comando di Azure nel campo del valore del segreto. Assegnare al segreto il nome
AZURE_CREDENTIALS
.Selezionare Aggiungi segreto.
Passaggio 3: aggiornare setup.sh
per connettersi all'area di lavoro di Azure Machine Learning
Sarà necessario aggiornare le variabili del file di installazione dell'interfaccia della riga di comando in modo che corrispondano all'area di lavoro.
Nel repository con fork andare a
azureml-examples/cli/
.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 userà un file pipeline.yml
per distribuire la pipeline di Azure Machine Learning. Si tratta di una pipeline di Machine Learning e non di una pipeline DevOps. È necessario eseguire questo aggiornamento solo se si usa un nome diverso da cpu-cluster
per il nome del cluster del computer.
- Nel repository con fork andare a
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
. - Ogni volta che viene visualizzato
compute: azureml:cpu-cluster
, aggiornare il valore dicpu-cluster
con il nome del cluster di elaborazione. Ad esempio, se il cluster è denominatomy-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 il segreto dell'entità servizio.
- 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
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@v1 with: creds: ${{secrets.AZURE_CREDENTIALS}} - 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
Selezionare Visualizza esecuzioni.
Abilitare i flussi di lavoro selezionando Comprendo i flussi di lavoro, procedere e abilitarli.
Selezionare il flusso di lavoro cli-jobs-pipelines-nyc-taxi-pipelinee scegliere Abilita flusso di lavoro.
Selezionare Esegui flusso di lavoro e scegliere l'opzione per eseguire flusso di lavoro ora.
Passaggio 6: verificare l'esecuzione del flusso di lavoro
Aprire l'esecuzione del flusso di lavoro completata e verificare che il processo di compilazione sia stato eseguito correttamente. Accanto al processo verrà visualizzato un segno di spunta verde.
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.
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.