Delen via


GitHub Actions gebruiken met Azure Machine Learning

Van toepassing op:Azure CLI ml extensie v2 (huidige versie)Python SDK azure-ai-ml v2 (huidige versie)

Ga aan de slag met GitHub Actions om een model te trainen in Azure Machine Learning.

In dit artikel leert u hoe u een GitHub Actions-werkstroom maakt die een machine learning-model bouwt en implementeert in Azure Machine Learning. U traint een lineair regressiemodel voor scikit-learn op de NYC Taxi-gegevensset.

GitHub Actions gebruikt een workflow YAML-bestand (.yml) in het /.github/workflows/ pad van uw repository. Deze definitie bevat de verschillende stappen en parameters die deel uitmaken van de werkstroom.

Vereisten

  • Een Azure Machine Learning-werkruimte. Zie De werkruimte maken voor stappen voor het maken van een werkruimte.

  • De Azure Machine Learning SDK voor Python v2. Gebruik de volgende opdracht om de SDK te installeren:

    pip install azure-ai-ml azure-identity
    

    Gebruik de volgende opdracht om een bestaande installatie van de SDK bij te werken naar de nieuwste versie:

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

    Zie de Clientbibliotheek van Het Azure Machine Learning-pakket voor Python voor meer informatie.

Stap 1: De code ophalen

Fork de volgende opslagplaats op GitHub:

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

Kloon uw geforkte repository lokaal.

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

Stap 2: Verifiëren met Azure

Definieer eerst hoe u zich verifieert met Azure. De aanbevolen, veiligere optie is om u aan te melden met behulp van OpenID Connect met een Microsoft Entra-toepassing of een door de gebruiker toegewezen beheerde identiteit. Indien nodig kunt u zich ook aanmelden met behulp van een service-principal en een wachtwoord. Deze methode is minder veilig en wordt niet aanbevolen.

Genereer implementatiereferenties

Als u de Azure Login action met OIDC wilt gebruiken, moet u een federatieve identiteitcredentie configureren in een Microsoft Entra-applicatie of een gebruikers toegewezen beheerde identiteit.

Optie 1: Microsoft Entra toepassing

Optie 2: Door de gebruiker toegewezen beheerde identiteit

Geheimen maken

U moet de client-id, directory-id (tenant-id) en abonnements-id van uw toepassing opgeven voor de aanmeldingsactie. Deze waarden kunnen rechtstreeks in de werkstroom worden opgegeven of kunnen worden opgeslagen in GitHub-geheimen en waarnaar wordt verwezen in uw werkstroom. Het opslaan van de waarden als GitHub-geheimen is de veiligere optie.

  1. Ga in GitHub naar uw opslagplaats.

  2. Selecteer Beveiliging > Geheimen en variabelen > Acties.

    Schermopname van het toevoegen van een geheim

  3. Selecteer Nieuw opslagplaatsgeheim.

    Notitie

    Als u de werkstroombeveiliging in openbare opslagplaatsen wilt verbeteren, gebruikt u omgevingsgeheimen in plaats van opslagplaatsgeheimen. Als voor de omgeving goedkeuring is vereist, heeft een taak geen toegang tot omgevingsgeheimen totdat een van de vereiste revisoren deze goedkeurt.

  4. Geheimen maken voor AZURE_CLIENT_ID, AZURE_TENANT_IDen AZURE_SUBSCRIPTION_ID. Kopieer deze waarden uit uw Microsoft Entra-toepassing of door de gebruiker toegewezen beheerde identiteit voor uw GitHub-geheimen:

    GitHub-geheim Microsoft Entra-toepassing of door de gebruiker toegewezen beheerde identiteit
    AZURE_CLIENT_ID Klant-ID
    AZURE_SUBSCRIPTION_ID Abonnements-id
    AZURE_TENANT_ID Id van directory (tenant)

    Notitie

    Om veiligheidsredenen raden we u aan GitHub Secrets te gebruiken in plaats van waarden rechtstreeks door te geven aan de werkstroom.

Stap 3: Bijwerken setup.sh om verbinding te maken met uw Azure Machine Learning-werkruimte

Werk de CLI-installatiebestandsvariabelen bij zodat deze overeenkomen met uw werkruimte.

  1. Ga in uw geforkte opslagplaats naar azureml-examples/cli/.

  2. Bewerk en werk setup.sh deze variabelen in het bestand bij.

    Variabele Beschrijving
    GROUP Naam van resourcegroep
    LOCATION Locatie van uw werkruimte (voorbeeld: eastus2)
    WORKSPACE Naam van Azure Machine Learning-werkruimte

Stap 4: Bijwerken pipeline.yml met de naam van uw rekencluster

Gebruik een pipeline.yml bestand om uw Azure Machine Learning-pijplijn te implementeren. De pijplijn is een machine learning-pijplijn en niet een DevOps-pijplijn. U hoeft deze update alleen te maken als u een andere naam gebruikt dan cpu-cluster voor de naam van het rekencluster.

  1. Ga in uw geforkte opslagplaats naar azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Telkens wanneer u compute: azureml:cpu-cluster ziet, werkt u de waarde van cpu-cluster bij met uw rekenclusternaam. Als uw cluster bijvoorbeeld de naam my-clusterheeft, is azureml:my-clusteruw nieuwe waarde. Er zijn vijf updates.

Stap 5: Uw GitHub Actions-werkstroom uitvoeren

Uw werkstroom wordt geverifieerd met Azure, stelt de Azure Machine Learning CLI in en gebruikt de CLI om een model te trainen in Azure Machine Learning.

Uw werkstroombestand bestaat uit een triggersectie en taken:

  • Met een trigger wordt de werkstroom in de on sectie gestart. De werkstroom wordt standaard uitgevoerd volgens een cron-schema en wanneer een pull-aanvraag wordt gedaan vanuit overeenkomende vertakkingen en paden. Meer informatie over gebeurtenissen die werkstromen activeren.
  • In de sectie Taken van de werkstroom checkt u code uit en meldt u zich aan bij Azure met de aanmeldingsactie van Azure met behulp van OpenID Connect.
  • De sectie Taken bevat ook een installatieactie waarmee de Machine Learning CLI (v2) wordt geïnstalleerd en ingesteld. Zodra de CLI is geïnstalleerd, wordt de uitvoeractie van de taak uitgevoerd op uw Azure Machine Learning-bestand pipeline.yml om een model te trainen met NYC-taxigegevens.

Uw werkstroom inschakelen

  1. Open .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml en controleer in uw geforkte opslagplaats of uw werkstroom er ongeveer als volgt uitziet.

    Notitie

    Het werkstroombestand in de opslagplaats kan extra stappen (zoals bootstrapping en validatie) bevatten die hier niet worden weergegeven. In het volgende voorbeeld ziet u de kernstappen.

    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-taxi
    
  2. Selecteer Uitvoeringen weergeven.

  3. Schakel werkstromen in door ik begrijp mijn werkstromen, ga door en schakel ze in te selecteren.

  4. Selecteer de cli-jobs-pipelines-nyc-taxi-pipeline-workflow en kies ervoor om de workflow inschakelen.

    Schermopname van het inschakelen van de GitHub Actions-werkstroom.

  5. Selecteer Werkstroom starten en kies om nu de optie Werkstroom starten te kiezen.

    Schermopname van het uitvoeren van een GitHub Actions-werkstroom.

Stap 6: Controleer of uw werkstroom wordt uitgevoerd

  1. Open de voltooide werkstroomuitvoering en controleer of de build-taak succesvol is uitgevoerd. U ziet een groen vinkje naast de taak.

  2. Open Azure Machine Learning Studio en ga naar nyc-taxi-pipeline-example. Controleer of elk deel van uw taak (voorbereiding, transformatie, trainen, voorspellen, score) is voltooid en of u een groen vinkje ziet.

    Schermopname van geslaagde uitvoering van Machine Learning Studio.

Het opruimen van resources

Wanneer u uw resourcegroep en opslagplaats niet meer nodig hebt, schoont u de resources op die u hebt geïmplementeerd door de resourcegroep en uw GitHub-opslagplaats te verwijderen.

Volgende stappen