Verwenden von GitHub Actions für Modelltraining

Abgeschlossen

GitHub Actions ist eine Plattform, auf der Sie Aufgaben automatisieren können, die von Ereignissen in einem GitHub-Repository ausgelöst werden. Ein GitHub Actions-Workflow besteht aus Aufträgen. Ein Auftrag fasst mehrere Schritte in einer Gruppe zusammen, die Sie definieren können. Bei einem dieser Schritte kann die CLI (v2) verwendet werden, um einen Azure Machine Learning-Auftrag Azure Machine Learning-Auftrag zum Trainieren eines Modells auszuführen.

Zum Automatisieren des Modelltrainings mit GitHub Actions müssen Sie folgende Schritte ausführen:

  • Erstellen eines Dienstprinzipals mithilfe der Azure CLI
  • Speichern der Azure-Anmeldeinformationen in einem GitHub-Geheimnis
  • Definieren einer GitHub Actions-Aktion in YAML

Erstellen eines Dienstprinzipals

Wenn Sie GitHub Actions zum Automatisieren von Azure Machine Learning-Aufträgen verwenden, müssen Sie einen Dienstprinzipal verwenden, um GitHub für die Verwaltung des Azure Machine Learning-Arbeitsbereichs zu authentifizieren. So müssen Sie bzw. das Tool, das Sie verwenden, beispielsweise zum Trainieren eines Modell mithilfe von Azure Machine Learning Compute zur Verwendung dieser Computeinstanz berechtigt sein.

Speichern der Azure-Anmeldeinformationen

Die Azure-Anmeldeinformationen, die Sie authentifizieren müssen, sollten nicht im Code oder als Nur-Text gespeichert werden, sondern in einem GitHub-Geheimnis.

So fügen Sie Ihrem GitHub-Repository einen geheimen Schlüssel hinzu

  1. Navigieren Sie zur Registerkarte Einstellungen.

    Screenshot der Registerkarte „Einstellungen“ im GitHub-Repository

  2. Erweitern Sie auf der Registerkarte Einstellungen unter Sicherheit die Option Geheimnisse, und wählen Sie Aktionen aus.

    Screenshot der Option „Geheimnisse“ im Abschnitt „Sicherheit“

  3. Geben Sie Ihre Azure-Anmeldeinformationen als Geheimnis ein, und benennen Sie das Geheimnis in AZURE_CREDENTIALS um.

  4. Wenn Sie ein Geheimnis verwenden möchten, das Azure-Anmeldeinformationen in einer GitHub Actions-Aktion enthält, verwenden Sie das Geheimnis in der YAML-Datei.

    on: [push]
    
    name: Azure Login Sample
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Log in with Azure
            uses: azure/login@v1
            with:
              creds: '${{secrets.AZURE_CREDENTIALS}}'
    

Definieren der GitHub Actions-Aktion

Zum Definieren eines Workflows müssen Sie eine YAML-Datei erstellen. Sie können den Workflow auslösen, um ein Modell manuell oder mit einem Pushereignis zu trainieren. Das manuelle Auslösen des Workflows ist ideal für Tests, während das Automatisieren mit einem Ereignis für die Automatisierung besser ist.

Wenn Sie einen GitHub Actions-Workflow so konfigurieren möchten, dass Sie ihn manuell auslösen können, verwenden Sie on: workflow_dispatch. Verwenden Sie hingegen on: [push], wenn ein Workflow mit einem Pushereignis ausgelöst werden soll.

Nach dem Auslösen des GitHub Actions-Workflows können Sie einem Auftrag verschiedene Schritte hinzufügen. Sie können beispielsweise einen Schritt verwenden, um einen Azure Machine Learning-Auftrag auszuführen:

name: Manually trigger an Azure Machine Learning job

on:
  workflow_dispatch:

jobs:
  train-model:
    runs-on: ubuntu-latest
    steps:
    - name: Trigger Azure Machine Learning job
      run: |
        az ml job create --file src/job.yml