Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 di flusso di lavoro nel percorso /.github/workflows/ nel repository. Questa definizione contiene i vari passaggi e i parametri che costituiscono il flusso di lavoro.
Prerequisiti
Un'area di lavoro di Azure Machine Learning. Per i passaggi per la creazione di un'area di lavoro, vedere Creare l'area di lavoro.
Azure Machine Learning SDK per Python v2. Per installare l'SDK, usare il comando seguente:
pip install azure-ai-ml azure-identityPer aggiornare un'installazione esistente di SDK alla versione più recente, usare il comando seguente:
pip install --upgrade azure-ai-ml azure-identityPer altre informazioni, vedere Libreria client del pacchetto di Azure Machine Learning per Python.
- Un account GitHub. Se non ne hai uno, crea un account 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
Prima di tutto, definire come eseguire l'autenticazione con Azure. L'opzione consigliata e più sicura consiste nell'accedere usando OpenID Connect con un'applicazione Microsoft Entra o un'identità gestita assegnata dall'utente. Se necessario, è anche possibile accedere utilizzando 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
- Creare un'applicazione Microsoft Entra con un'entità servizio nel portale di Azure, nell'interfaccia della riga di comando Interfaccia della riga di comando Azure o in Azure PowerShell.
- Copiare i valori per ID client, ID sottoscrizione e ID directory (tenant) da usare più avanti nel flusso di lavoro di GitHub Actions.
- Assegnare un ruolo appropriato all'entità servizio tramite il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.
- Configurare una credenziale di identità federata in un'applicazione Microsoft Entra per considerare attendibili i token rilasciati da GitHub Actions nel repository GitHub.
Opzione 2: Identità gestita assegnata dall'utente
- Creare un'identità gestita assegnata dall'utente.
- Copiare i valori per ID client, ID sottoscrizione e ID directory (tenant) per l'utilizzo successivo nel flusso di lavoro di GitHub Actions.
- Assegnare un ruolo appropriato all'identità gestita assegnata dall'utente.
- Configurare una credenziale di identità federata in un'identità gestita assegnata dall'utente per considerare attendibili i token emessi da GitHub Actions nel repository GitHub.
Creare segreti
È necessario fornire l'ID client, l'ID directory (tenant) e l'ID sottoscrizione della tua 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.
In GitHub, andare al proprio repository.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Seleziona nuovo segreto del repository.
Nota
Per migliorare la sicurezza del flusso di lavoro nei repository pubblici, usare i segreti dell'ambiente anziché i segreti del repository. Se è richiesta l'approvazione dell'ambiente, un processo non può accedere ai segreti dell'ambiente finché uno dei revisori richiesti non lo approvi.
Creare segreti per
AZURE_CLIENT_ID,AZURE_TENANT_IDeAZURE_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 del cliente 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
Aggiornare le variabili dell'interfaccia a riga di comando del file di configurazione in modo che corrispondano all'area di lavoro.
Nel repository con fork, passare a
azureml-examples/cli/.Modificare
setup.she aggiornare queste variabili nel file.Variabile Descrizione GROUPnome del gruppo di risorse LOCATIONPosizione dell'area di lavoro (ad esempio: eastus2)WORKSPACENome dell'area di lavoro di Azure Machine Learning
Passaggio 4: aggiornare pipeline.yml con il nome del cluster di elaborazione
Usare 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 cpu-cluster da quello del nome del cluster di calcolo.
- Nel repository con fork, passare a
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml. - Ogni volta che viene visualizzato
compute: azureml:cpu-cluster, aggiornare il valore dicpu-clustercon 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, viene estratto il codice e si effettua l'accesso ad Azure con l'azione di accesso ad 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.ymlper addestrare un modello con i dati dei taxi di New York.
Abilitare il flusso di lavoro
Nel tuo repository forkato, apri
.github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.ymle verifica che il flusso di lavoro sia simile a questo.Nota
Il file del flusso di lavoro nel repository può includere passaggi aggiuntivi, ad esempio il bootstrap e la convalida, non illustrati qui. L'esempio seguente illustra i passaggi principali.
name: cli-jobs-pipelines-nyc-taxi-pipeline on: workflow_dispatch: schedule: - cron: "0 0/4 * * *" pull_request: branches: - main paths: - cli/jobs/pipelines/nyc-taxi/** - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml - cli/run-pipeline-jobs.sh - cli/setup.sh permissions: id-token: write jobs: build: runs-on: ubuntu-latest steps: - name: check out repo uses: actions/checkout@v4 - 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-taxiSelezionare Visualizza esecuzioni.
Abilitare i flussi di lavoro selezionando Comprendo i flussi di lavoro, procedere e abilitarli.
Seleziona il flusso di lavoro cli-jobs-pipelines-nyc-taxi-pipeline e scegli di abilitare il 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 viene visualizzata una spunta verde.
Aprire Azure Machine Learning Studio e passare a nyc-taxi-pipeline-example. Verificare che ogni parte del processo (preparazione, trasformazione, addestramento, previsione, punteggio) sia stata completata e che sia presente 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.