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
- Maak een Microsoft Entra-toepassing met een service-principal via Azure Portal, Azure CLI of Azure PowerShell.
- Kopieer de waarden voor client-id, abonnements-id en map-id (tenant) voor later gebruik in uw GitHub Actions-werkstroom.
- Wijs een geschikte rol toe aan uw service-principal via Azure Portal, Azure CLI of Azure PowerShell.
- Configureer een federatieve identiteitsreferentie in een Microsoft Entra-toepassing om tokens te vertrouwen die door GitHub Actions zijn uitgegeven aan uw GitHub-opslagplaats.
Optie 2: Door de gebruiker toegewezen beheerde identiteit
- Een door een gebruiker toegewezen beheerde identiteit maken.
- Kopieer de waarden voor client-id, abonnements-id en map-id (tenant) voor later gebruik in uw GitHub Actions-werkstroom.
- Wijs een geschikte rol toe aan uw door de gebruiker toegewezen beheerde identiteit.
- Configureer een federatieve identiteitsreferentie op een door de gebruiker toegewezen beheerde identiteit om tokens te vertrouwen die zijn uitgegeven door GitHub Actions aan uw GitHub-opslagplaats.
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.
Ga in GitHub naar uw opslagplaats.
Selecteer Acties voor beveiligingsgeheimen > en variabelen>.
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.
Geheimen maken voor
AZURE_CLIENT_ID
,AZURE_TENANT_ID
enAZURE_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.
Ga in uw geforkte opslagplaats naar
azureml-examples/cli/
.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.
- Ga in uw geforkte opslagplaats naar
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
. - Telkens wanneer u dit ziet
compute: azureml:cpu-cluster
, werkt u de waarde bij met de naam vancpu-cluster
het rekencluster. Als uw cluster bijvoorbeeld de naammy-cluster
heeft, isazureml:my-cluster
uw 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
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
Selecteer Weergaveuitvoeringen.
Schakel werkstromen in door mijn werkstromen te selecteren , ga verder en schakel ze in.
Selecteer de cli-jobs-pipelines-nyc-taxi-pipeline-workflow en kies ervoor om werkstroom in te schakelen.
Selecteer Werkstroom uitvoeren en kies nu de optie werkstroom uitvoeren.
Stap 6: Controleer of uw werkstroom wordt uitgevoerd
Open de voltooide werkstroomuitvoering en controleer of de buildtaak is uitgevoerd. U ziet een groen vinkje naast de taak.
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.
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.