Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR:
Azure CLI ML-Erweiterung v2 (aktuell)
Python SDK azure-ai-ml v2 (aktuell)
Beginnen Sie mit dem Trainieren eines Modells in Azure Machine Learning mithilfe von GitHub Actions.
In diesem Artikel erfahren Sie, wie Sie einen GitHub Actions-Workflow erstellen, der ein Machine Learning-Modell für Azure Machine Learning erstellt und bereitstellt. Dazu trainieren Sie ein lineares scikit-learn-Regressionsmodell mit dem NYC Taxi-Dataset.
GitHub Actions verwendet für den Workflow eine YAML-Datei (.yml) unter dem Pfad /.github/workflows/ in Ihrem Repository. Diese Definition enthält die verschiedenen Schritte und Parameter, die den Workflow bilden.
Voraussetzungen
Ein Azure Machine Learning-Arbeitsbereich. Schritte zum Erstellen eines Arbeitsbereichs finden Sie unter Erstellen des Arbeitsbereichs.
Das Azure Machine Learning SDK für Python v2. Verwenden Sie den folgenden Befehl, um das SDK zu installieren:
pip install azure-ai-ml azure-identityVerwenden Sie den folgenden Befehl, um eine vorhandene Installation des SDK auf die neueste Version zu aktualisieren:
pip install --upgrade azure-ai-ml azure-identityWeitere Informationen finden Sie in der Clientbibliothek des Azure Machine Learning-Pakets für Python.
- Ein GitHub-Konto. Falls Sie nicht über ein Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
Schritt 1: Abrufen des Codes
Forken Sie das folgende Repository auf GitHub:
https://github.com/azure/azureml-examples
Klonen Sie Ihr geforktes Repository lokal.
git clone https://github.com/YOUR-USERNAME/azureml-examples
Schritt 2: Authentifizieren bei Azure
Definieren Sie zunächst, wie Sie sich bei Azure authentifizieren. Die empfohlene, sicherere Option besteht darin, sich mit OpenID Connect mit einer Microsoft Entra-Anwendung oder einer vom Benutzer zugewiesenen verwalteten Identität anzumelden. Bei Bedarf können Sie auch die Anmeldung mithilfe eines Dienstprinzipals und eines Secrets verwenden. Dieser Ansatz ist nicht so sicher und wird nicht empfohlen.
Generieren von Anmeldeinformationen für die Bereitstellung
Um die Aktion „Azure-Anmeldung“ mit OIDC zu verwenden, müssen Sie Anmeldeinformationen für eine Verbundidentität in einer Microsoft Entra-Anwendung oder eine benutzerseitig zugewiesene verwaltete Identität konfigurieren.
Option 1: Microsoft Entra-Anwendung
- Erstellen Sie eine Microsoft Entra-Anwendung mit einem Dienstprinzipal im Azure-Portal, mit Azure CLI oder Azure PowerShell.
- Kopieren Sie die Werte für Client-ID, Abonnement-ID, und Verzeichnis-ID (Mandanten-ID), um sie später in Ihrem GitHub Actions-Workflow zu verwenden.
- Weisen Sie Ihrem Dienstprinzipal über das Azure-Portal, die Azure CLI oder Azure PowerShell eine geeignete Rolle zu.
- Konfigurieren Sie Verbundidentitäts-Anmeldeinformationen für eine Microsoft Entra-Anwendung, um Token zu vertrauen, die von GitHub Actions an Ihr GitHub-Repository ausgestellt wurden.
Option 2: Benutzerseitig zugewiesene verwaltete Identität
- Erstellen einer benutzerseitig zugewiesenen verwalteten Identität.
- Kopieren Sie die Werte für Client-ID, Abonnement-ID, und Verzeichnis-ID (Mandanten-ID), um sie später in Ihrem GitHub Actions-Workflow zu verwenden.
- Weisen Sie der benutzerseitig zugewiesenen verwalteten Identität eine geeignete Rolle zu.
- Konfigurieren Sie Verbundidentitäts-Anmeldeinformationen für eine benutzerseitig zugewiesene verwaltete Identität, um Token zu vertrauen, die von GitHub Actions an Ihr GitHub-Repository ausgegeben werden.
Geheimnisse erstellen
Sie müssen die Client-ID Ihrer Anwendung, die Verzeichnis-ID (Mandanten-ID) und die Abonnement-ID für die Anmeldeaktion bereitstellen. Diese Werte können entweder direkt im Workflow bereitgestellt werden oder in GitHub-Geheimnissen gespeichert und darauf in Ihrem Workflow verwiesen werden. Das Speichern der Werte als GitHub-Geheimnisse ist die sicherere Option.
Wechseln Sie in GitHub zu Ihrem Repository.
Wählen Sie
Sicherheit, Geheimnisse und Variablen, Aktionen aus.
Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.
Hinweis
Um die Sicherheit von Workflows in öffentlichen Repositorys zu verbessern, verwenden Sie Umgebungsgeheimnisse anstelle von geheimen Repositorygeheimnissen. Wenn für die Umgebung eine Freigabe erforderlich ist, kann ein Auftrag erst auf Umgebungsgeheimnisse zugreifen, nachdem einer der erforderlichen Prüfer seine Freigabe erteilt hat.
Erstellen Sie Geheimnisse für
AZURE_CLIENT_ID,AZURE_TENANT_IDundAZURE_SUBSCRIPTION_ID. Kopieren Sie diese Werte aus Ihrer Microsoft Entra-Anwendung oder benutzerseitig zugewiesenen verwalteten Identität für Ihre GitHub-Geheimnisse:GitHub-Geheimnis Microsoft Entra-Anwendung oder benutzerseitig zugewiesene verwaltete Identität AZURE_CLIENT_ID Kunden-ID AZURE_SUBSCRIPTION_ID Abonnement-ID AZURE_TENANT_ID Verzeichnis-ID (Mandant) Hinweis
Aus Sicherheitsgründen empfehlen wir die Verwendung von GitHub-Geheimnissen, anstatt Werte direkt an den Workflow zu übergeben.
Schritt 3: Aktualisieren von setup.sh zum Herstellen einer Verbindung mit Ihrem Azure Machine Learning-Arbeitsbereich
Aktualisieren Sie die CLI-Setup-Datei-Variablen so, dass sie Ihrem Arbeitsbereich entsprechen.
Wechseln Sie in Ihrem geforkten Repository zu
azureml-examples/cli/.Bearbeiten Sie
setup.shund aktualisieren Sie diese Variablen in der Datei.Variable Beschreibung GROUPName der Ressourcengruppe LOCATIONOrt Ihres Arbeitsbereichs (Beispiel: eastus2)WORKSPACEName des Azure Machine Learning-Arbeitsbereichs
Schritt 4: Aktualisieren Sie pipeline.yml mit Ihrem Compute-Cluster-Namen
Verwenden Sie eine pipeline.yml Datei, um Ihre Azure Machine Learning-Pipeline bereitzustellen. Die Pipeline ist eine Machine Learning-Pipeline und keine DevOps-Pipeline. Sie müssen dieses Update nur vornehmen, wenn Sie einen anderen Namen als cpu-cluster für den Namen Ihres Computeclusters verwenden.
- Wechseln Sie in Ihrem geforkten Repository zu
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml. - Jedes Mal, wenn
compute: azureml:cpu-clusterangezeigt wird, aktualisieren Sie den Wert voncpu-clustermit dem Namen Ihres Rechenclusters. Heißt Ihr Cluster z. B.my-cluster, wäre der neue Wertazureml:my-cluster. Es gibt fünf Aktualisierungen.
Schritt 5: Ausführen des GitHub Actions-Workflows
Ihr Workflow führt die Authentifizierung bei Azure durch, richtet die Azure Machine Learning-CLI ein und verwendet die CLI, um ein Modell in Azure Machine Learning zu trainieren.
Ihre Workflowdatei besteht aus einem Auslöserabschnitt und Aufträgen:
- Ein Auslöser startet den Workflow im Abschnitt
on. Der Workflow wird standardmäßig gemäß einem Cron-Zeitplan ausgeführt sowie wenn eine Pull-Anforderung aus übereinstimmenden Zweigen und Pfaden erfolgt. Erfahren Sie mehr über Ereignisse zum Auslösen von Workflows. - Im Abschnitt „Aufträge“ des Workflows können Sie Code auschecken und sich mit der Azure-Anmeldeaktion über OpenID Connect bei Azure anmelden.
- Der Abschnitt „Aufträge“ enthält außerdem eine Setup-Aktion, die die Machine Learning-CLI (v2) installiert und einrichtet. Nachdem die CLI installiert wurde, führt die Aktion „Auftrag ausführen“ Ihre Azure Machine Learning
pipeline.yml-Datei aus und trainiert ein Modell mit NYC-Taxidaten.
Aktivieren Ihres Workflows
Öffnen Sie
.github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.ymlin Ihrem geforkten Repository und stellen Sie sicher, dass Ihr Workflow ähnlich aussieht.Hinweis
Die Workflowdatei im Repository kann zusätzliche Schritte (z. B. Bootstrapping und Validierung) enthalten, die hier nicht angezeigt werden. Das folgende Beispiel zeigt die wichtigsten Schritte.
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-taxiWählen Sie Läufe anzeigen aus.
Aktivieren Sie Workflows, indem Sie die Option „I understand my workflows, go ahead and enable them“ (Ich verstehe meine Workflows, und sie sollen aktiviert werden) auswählen.
Wählen Sie den Workflow cli-jobs-pipelines-nyc-taxi-pipeline aus und wählen Sie Workflow aktivieren.
Wählen Sie Workflow ausführen aus und wählen Sie aus, dass der Workflow jetzt ausgeführt werden soll.
Schritt 6: Überprüfung der Workflow-Ausführung
Öffnen Sie den abgeschlossenen Workflow und überprüfen Sie, ob der Buildauftrag erfolgreich ausgeführt wurde. Neben dem Auftrag wird ein grünes Häkchen angezeigt.
Öffnen Sie das Azure Machine Learning-Studio, und wechseln Sie zu nyc-taxi-pipeline-beispiel. Stellen Sie sicher, dass alle Teile Ihres Auftrags abgeschlossen wurden (prep, transform, train, predict, score) und dass ein grünes Häkchen angezeigt wird.
Bereinigen von Ressourcen
Wenn Sie Ihre Ressourcengruppe und Ihr Repository nicht mehr benötigen, bereinigen Sie die von Ihnen bereitgestellten Ressourcen, indem Sie die Ressourcengruppe und Ihr GitHub-Repository löschen.