Git-integratie voor Azure Machine Learning
Git is een populair versiebeheersysteem waarmee u uw projecten kunt delen en eraan kunt samenwerken. In dit artikel wordt uitgelegd hoe Azure Machine Learning kan worden geïntegreerd met een lokale Git-opslagplaats om informatie over opslagplaatsen, vertakkingen en huidige doorvoergegevens bij te houden als onderdeel van een trainingstaak.
Azure Machine Learning biedt volledige ondersteuning voor Git-opslagplaatsen voor het bijhouden van werk. U kunt opslagplaatsen rechtstreeks naar uw gedeelde werkruimtebestandssysteem klonen, Git op uw lokale werkstation gebruiken of Git gebruiken vanuit een CI/CD-pijplijn (continue integratie en continue implementatie).
Wanneer u een Azure Machine Learning-trainingstaak verzendt met bronbestanden uit een lokale Git-opslagplaats, wordt informatie over de opslagplaats bijgehouden als onderdeel van de trainingstaak. Omdat de informatie afkomstig is van de lokale Git-opslagplaats, is deze niet gekoppeld aan een specifieke centrale opslagplaats. Uw opslagplaats kan worden gekloond vanuit elke git-compatibele service, zoals GitHub, GitLab, Bitbucket of Azure DevOps.
Tip
U kunt Visual Studio Code gebruiken om met Git te communiceren via een grafische gebruikersinterface. Zie Visual Studio Code integreren met Azure Machine Learning (preview) om verbinding te maken met een extern rekenproces van Azure Machine Learning met behulp van Visual Studio Code.
Zie Versiebeheer gebruiken in Visual Studio Code en werken met GitHub in Visual Studio Code voor meer informatie over functies voor versiebeheer van Visual Studio Code.
Git-opslagplaatsen in een werkruimtebestandssysteem
Azure Machine Learning biedt een gedeeld bestandssysteem voor alle gebruikers in een werkruimte. De beste manier om een Git-opslagplaats te klonen in deze bestandsshare is door een rekenproces te maken en een terminal te openen. In de terminal hebt u toegang tot een volledige Git-client en kunt u klonen en werken met Git met behulp van de Git CLI. Zie Git CLI voor meer informatie.
U kunt elke Git-opslagplaats klonen waar u zich kunt verifiëren, zoals een GitHub-, Azure-opslagplaats of BitBucket-opslagplaats. U kunt de opslagplaats het beste klonen in uw gebruikersmap, zodat andere gebruikers niet rechtstreeks in uw werkbranch botsen.
Er zijn enkele verschillen tussen klonen naar het lokale bestandssysteem van het rekenproces of het klonen naar het gedeelde bestandssysteem, gekoppeld als de map ~/cloudfiles/code/. Over het algemeen biedt het klonen naar het lokale bestandssysteem betere prestaties dan het klonen naar het gekoppelde bestandssysteem. Als u echter het rekenproces verwijdert en opnieuw maakt, gaat het lokale bestandssysteem verloren, terwijl het gekoppelde gedeelde bestandssysteem wordt bewaard.
Een Git-opslagplaats klonen met SSH
U kunt een opslagplaats klonen met behulp van het SSH-protocol (Secure Shell). Als u SSH wilt gebruiken, moet u uw Git-account verifiëren met SSH met behulp van een SSH-sleutel.
Een nieuwe SSH-sleutel genereren en opslaan
Als u een nieuwe SSH-sleutel wilt genereren, gaat u naar de pagina Azure Machine Learning-studio Notebook, opent u een terminal en voert u de volgende opdracht uit, waarbij u uw e-mailadres vervangt.
ssh-keygen -t ed25519 -C "your_email@example.com"
De opdracht retourneert de volgende uitvoer:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_ed25519):
Zorg ervoor dat de locatie in de voorgaande uitvoer is /home/azureuser/.ssh
, of wijzig deze in die locatie en druk op Enter.
U kunt het beste een wachtwoordzin toevoegen aan uw SSH-sleutel voor extra beveiliging. Voer bij de volgende prompts een veilige wachtwoordzin in.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Wanneer u op Enter drukt, genereert de ssh-keygen
opdracht een nieuwe SSH-sleutel met het opgegeven e-mailadres als label. Het sleutelbestand wordt opgeslagen op het rekenproces en is alleen toegankelijk voor de eigenaar van het rekenproces.
De openbare sleutel toevoegen aan uw Git-account
U moet uw openbare SSH-sleutel toevoegen aan uw Git-account. Voer de volgende opdracht uit in het terminalvenster om de sleutel op te halen. Als uw sleutelbestand een andere naam heeft, vervangt u deze door id_ed25519.pub
de bestandsnaam van uw openbare sleutel.
cat ~/.ssh/id_ed25519.pub
Met de opdracht wordt de inhoud van uw openbare-sleutelbestand weergegeven. Kopieer de uitvoer.
Tip
Als u het terminalvenster wilt kopiëren en plakken, gebruikt u deze sneltoetsen, afhankelijk van uw besturingssysteem:
- Windows: Ctrl+C of Ctrl+Insert om te kopiëren, Ctrl+V of Ctrl+Shift+V om te plakken.
- MacOS: Cmd+C om te kopiëren en Cmd+V om te plakken.
Sommige browsers bieden mogelijk geen ondersteuning voor klembordmachtigingen.
Voeg de SSH-sleutel toe aan uw Git-account met behulp van de volgende instructies, afhankelijk van uw Git-service:
De Git-opslagplaats klonen met SSH
Als u een Git-opslagplaats wilt klonen, kopieert u de SSH Git-kloon-URL uit de opslagplaats. Voer in uw terminal de git clone
SSH Git-kloon-URL uit. Voorbeeld:
git clone git@example.com:GitUser/azureml-example.git
SSH kan de SSH-vingerafdruk van de server weergeven en u vragen deze te verifiëren, zoals in het volgende voorbeeld.
The authenticity of host 'github.com (000.00.000.0)' can't be established.
ECDSA key fingerprint is SHA256:0000000000000000000/00000000/00000000.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
SSH geeft deze vingerafdruk weer wanneer deze verbinding maakt met een onbekende host om u te beschermen tegen man-in-the-middle-aanvallen. Controleer of de vingerafdruk overeenkomt met een van de vingerafdrukken op de pagina openbare SSH-sleutels. Zodra u de vingerafdruk van de host accepteert, wordt u niet meer gevraagd door SSH, tenzij de vingerafdruk wordt gewijzigd.
SSH geeft een antwoord weer zoals in het volgende voorbeeld:
Cloning into 'azureml-example'...
Warning: Permanently added 'github.com,000.00.000.0' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/azureuser/.ssh/id_ed25519':
Nadat u uw wachtwoordzin hebt ingevoerd, kloont Git de opslagplaats en stelt git de externe origin in om verbinding te maken met SSH voor toekomstige Git-opdrachten.
Code bijhouden die afkomstig is van Git-opslagplaatsen
Wanneer u een trainingstaak verzendt vanuit de Python SDK of Machine Learning CLI, worden de bestanden die nodig zijn om het model te trainen, geüpload naar uw werkruimte. Als de git
opdracht beschikbaar is in uw ontwikkelomgeving, controleert het uploadproces of de bronbestanden zijn opgeslagen in een Git-opslagplaats.
Zo ja, dan uploadt het proces git-opslagplaats, vertakking en huidige doorvoergegevens als onderdeel van de trainingstaak. De informatie wordt opgeslagen in de volgende trainingstaakeigenschappen voor taken die gebruikmaken van een estimator, machine learning-pijplijn of scriptuitvoering.
Eigenschappen | Git-opdracht om de waarde op te halen | Beschrijving |
---|---|---|
azureml.git.repository_uri of mlflow.source.git.repoURL |
git ls-remote --get-url |
De URI waaruit de opslagplaats is gekloond. |
azureml.git.branch of mlflow.source.git.branch |
git symbolic-ref --short HEAD |
De actieve vertakking toen de taak werd ingediend. |
azureml.git.commit of mlflow.source.git.commit |
git rev-parse HEAD |
De doorvoer-hash van de code die is verzonden voor de taak. |
azureml.git.dirty |
git status --porcelain . |
True als de vertakking of doorvoer vuil is, anders false . |
Als de git
opdracht niet beschikbaar is in uw ontwikkelomgeving of als uw trainingsbestanden zich niet in een Git-opslagplaats bevinden, worden er geen Git-gerelateerde gegevens bijgehouden.
Tip
Als u wilt controleren of de git
opdracht beschikbaar is in uw ontwikkelomgeving, voert u de git --version
opdracht uit in een opdrachtregelinterface. Als Git is geïnstalleerd en in uw pad staat, ontvangt u een antwoord dat vergelijkbaar is met git version 2.43.0
. Zie de Git-website voor meer informatie over het installeren van Git in uw ontwikkelomgeving.
Git-informatie weergeven
De Git-gegevens worden opgeslagen als JSON-code in de eigenschappen voor een trainingstaak. De vastgelegde Git-gegevens kunnen de volgende eigenschappen bevatten:
"azureml.git.repository_uri": "git@github.com:azure/<repo-name>",
"azureml.git.branch": "<branch-name>",
"azureml.git.commit": "<commit-id>",
"azureml.git.dirty": "<True/False>",
"mlflow.source.git.repoURL": "git@github.com:azure/<repo-name>",
"mlflow.source.git.branch": "<branch-name>",
"mlflow.source.git.commit": "<commit-id>",
U kunt deze informatie bekijken met behulp van azure portal, Python SDK of Azure CLI.
Azure Portal
Selecteer uw taak in uw werkruimte in Azure Machine Learning-studio op de pagina Taken. Selecteer in de sectie Eigenschappen van de pagina Overzicht van de taak de optie Onbewerkte JSON onder Alle eigenschappen weergeven.
Zoek in de JSON naar de Git-eigenschappen, bijvoorbeeld:
"properties": {
"mlflow.source.git.repoURL": "git@github.com:azure/azureml-examples",
"mlflow.source.git.branch": "main",
"mlflow.source.git.commit": "0000000000000000000000000000000000000000",
"azureml.git.dirty": "False",
...
},
Python SDK V2
Nadat u een trainingsuitvoering hebt ingediend, wordt een taakobject geretourneerd. Het properties
kenmerk van dit object bevat de geregistreerde Git-gegevens. U kunt bijvoorbeeld de volgende opdracht uitvoeren om de doorvoer-hash op te halen:
job.properties["mlflow.source.git.commit"]
Azure CLI V2
U kunt de az ml job show
opdracht uitvoeren met het --query
argument om de Git-informatie weer te geven. Met de volgende query wordt bijvoorbeeld de mlflow.source.git.commit
eigenschapswaarde opgehaald:
az ml job show --name my-job-id --query "{GitCommit:properties.azureml.git.commit} --resource-group my-resource-group --workspace-name my-workspace"