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 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 YAML-bestand (.yml) van een werkstroom 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. De aanbevolen, veiligere optie is om u aan te melden met OpenID Connect met behulp van een Microsoft Entra-toepassing of een door de gebruiker toegewezen beheerde identiteit. Indien nodig kunt u zich ook aanmelden met een service-principal en geheim. Deze methode is minder veilig en wordt niet aanbevolen.

Genereer implementatiereferenties

Als u azure-aanmeldingsactie wilt gebruiken met OIDC, moet u een federatieve identiteitsreferentie configureren in een Microsoft Entra-toepassing of een door de gebruiker toegewezen beheerde identiteit.

Optie 1: Microsoft Entra-toepassing

Optie 2: Door de gebruiker toegewezen beheerde identiteit

Geheimen maken

U moet de client-id, map-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 Acties voor beveiligingsgeheimen > en variabelen>.

    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 Client 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

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. 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 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 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 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@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 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. U ziet een groen vinkje naast de taak.

  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