Delen via


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"