Delen via


GitHub Actions gebruiken met Azure Machine Learning

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

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 waarmee een machine learning-model wordt gebouwd en geïmplementeerd in Azure Machine Learning. U traint een scikit-learn lineair regressiemodel op de NYC Taxi-gegevensset.

GitHub Actions maakt gebruik van een YAML-werkstroombestand (.yml) in het /.github/workflows/ pad in uw opslagplaats. Deze definitie bevat de verschillende stappen en parameters die deel uitmaken van de werkstroom.

Vereisten

Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:

  • Een Azure Machine Learning-werkruimte. Als u er nog geen hebt, gebruikt u de stappen in de quickstart: artikel Werkruimtebronnen maken om er een te maken.

  • Gebruik de volgende opdracht om de Python SDK v2 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 Python SDK v2 voor Azure Machine Learning installeren voor meer informatie.

  • Een GitHub-account. Als u geen account hebt, kunt u zich registreren voor een gratis account.

Stap 1: De code ophalen

Fork de volgende opslagplaats op GitHub:

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

Kloon uw vervalste opslagplaats lokaal.

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

Stap 2: Verifiëren met Azure

U moet eerst definiëren hoe u zich verifieert met Azure. U kunt een service-principal of OpenID Connect gebruiken.

Genereer implementatiereferenties

Maak een service-principal met de opdracht az ad sp create-for-rbac in de Azure CLI. Voer deze opdracht uit met Azure Cloud Shell in de Azure Portal of door de knop Uitproberen te selecteren.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

De parameter --json-auth is beschikbaar in Azure CLI-versies >= 2.51.0. Versies vóór dit gebruik --sdk-auth met een afschaffingswaarschuwing.

Vervang in het bovenstaande voorbeeld de tijdelijke aanduidingen door uw abonnements-id, resourcegroepnaam en app-naam. De uitvoer is een JSON-object met de roltoewijzingsreferenties die toegang bieden tot uw App Service-app, vergelijkbaar met hieronder. Kopieer dit JSON-object voor later gebruik.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Geheimen maken

  1. Ga in GitHub naar uw opslagplaats.

  2. Ga naar Instellingen in het navigatiemenu.

  3. Selecteer Acties voor beveiligingsgeheimen > en variabelen>.

    Schermopname van het toevoegen van een geheim

  4. Selecteer Nieuw opslagplaatsgeheim.

  5. Plak de volledige JSON-uitvoer van de Azure CLI-opdracht in het waardeveld van het geheim. Geef het geheim de naam AZURE_CREDENTIALS.

  6. Selecteer Geheim toevoegen.

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

U moet de CLI-installatiebestandsvariabelen bijwerken 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
    GROEP Naam van resourcegroep
    LOCATIE Locatie van uw werkruimte (voorbeeld: eastus2)
    WERKRUIMTE Naam van Azure Machine Learning-werkruimte

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

U gebruikt een pipeline.yml bestand om uw Azure Machine Learning-pijplijn te implementeren. Dit 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 computercluster.

  1. Ga in uw geforkte opslagplaats naar azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Telkens wanneer u dit ziet compute: azureml:cpu-cluster, werkt u de waarde bij met de naam van cpu-cluster het rekencluster. 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 uw service-principalgeheim.
  • 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 uw Azure Machine Learning-bestand pipeline.yml uitgevoerd met de actie Voor het uitvoeren van taken om een model te trainen met nyc-taxigegevens.

Uw werkstroom inschakelen

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

    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
    
  2. Selecteer Weergaveuitvoeringen.

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

  4. Selecteer de cli-jobs-pipelines-nyc-taxi-pipeline-workflow en kies ervoor om werkstroom in te schakelen. Schermopname van het inschakelen van de GitHub Actions-werkstroom.

  5. Selecteer Werkstroom uitvoeren en kies nu de optie werkstroom uitvoeren. 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 buildtaak is uitgevoerd. Er wordt een groen vinkje naast de taak weergegeven.

  2. Open Azure Machine Learning-studio en navigeer naar het 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.

Resources opschonen

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

Volgende stappen