Git-integratie voor Azure Machine Learning

Git is een populair versiebeheersysteem waarmee u uw projecten kunt delen en eraan kunt samenwerken.

Azure Machine Learning biedt volledige ondersteuning voor Git-opslagplaatsen voor het bijhouden van werk. U kunt opslagplaatsen rechtstreeks klonen naar uw gedeelde werkruimtebestandssysteem, Git gebruiken op uw lokale werkstation of Git gebruiken vanuit een CI/CD-pijplijn.

Als bronbestanden worden opgeslagen in een lokale Git-opslagplaats, wordt informatie over de opslagplaats bijgehouden als onderdeel van het trainingsproces bij het verzenden van een taak naar Azure Machine Learning.

Omdat Azure Machine Learning gegevens van een lokale Git-opslagplaats bijhoudt, is deze niet gekoppeld aan een specifieke centrale opslagplaats. Uw opslagplaats kan worden gekloond vanuit GitHub, GitLab, Bitbucket, Azure DevOps of een andere git-compatibele service.

Tip

Visual Studio Code gebruiken om met Git te communiceren via een grafische gebruikersinterface. Als u verbinding wilt maken met een extern rekenproces van Azure Machine Learning met behulp van Visual Studio Code, raadpleegt u Visual Studio Code integreren met Azure Machine Learning (preview)

Zie Versiebeheer gebruiken in VS Code en werken met GitHub in VS Code voor meer informatie over functies voor versiebeheer van Visual Studio Code.

Git-opslagplaatsen klonen in het bestandssysteem van de werkruimte

Azure Machine Learning biedt een gedeeld bestandssysteem voor alle gebruikers in de werkruimte. Als u een Git-opslagplaats in deze bestandsshare wilt klonen, raden we u aan een rekenproces te maken en een terminal te openen. Zodra de terminal is geopend, hebt u toegang tot een volledige Git-client en kunt u deze klonen en met Git werken via de Git CLI-ervaring.

U wordt aangeraden de opslagplaats te klonen in uw gebruikersmap, zodat anderen geen conflicten rechtstreeks in uw werkbranch kunnen aanbrengen.

Tip

Er is een prestatieverschil tussen klonen naar het lokale bestandssysteem van het rekenproces of het klonen naar het gekoppelde bestandssysteem (gekoppeld als de ~/cloudfiles/code map). Over het algemeen heeft het klonen naar het lokale bestandssysteem betere prestaties dan het gekoppelde bestandssysteem. Het lokale bestandssysteem gaat echter verloren als u het rekenproces verwijdert en opnieuw maakt. Het gekoppelde bestandssysteem wordt bewaard als u het rekenproces verwijdert en opnieuw maakt.

U kunt elke Git-opslagplaats klonen waar u zich kunt verifiëren (GitHub, Azure-opslagplaatsen, BitBucket, enzovoort)

Zie de handleiding voor het gebruik van Git CLI voor meer informatie over het klonen.

Uw Git-account verifiëren met SSH

Een nieuwe SSH-sleutel genereren

  1. Open het terminalvenster op het tabblad Azure Machine Learning Notebook.

  2. Plak de onderstaande tekst, waarbij u uw e-mailadres vervangt.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Hiermee maakt u een nieuwe ssh-sleutel met behulp van het opgegeven e-mailbericht als label.

> Generating public/private rsa key pair.
  1. Druk op Enter wanneer u wordt gevraagd om 'Enter a file which to save the key' (Een bestand invoeren waarin de toets moet worden opgeslagen) op Enter te drukken. Hiermee wordt de standaardbestandslocatie geaccepteerd.

  2. Controleer of de standaardlocatie '/home/azureuser/.ssh' is en druk op Enter. Geef anders de locatie '/home/azureuser/.ssh' op.

Tip

Zorg ervoor dat de SSH-sleutel is opgeslagen in '/home/azureuser/.ssh'. Dit bestand wordt opgeslagen op het rekenproces is alleen toegankelijk door de eigenaar van het rekenproces

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. Typ bij de prompt een veilige wachtwoordzin. U wordt aangeraden een wachtwoordzin toe te voegen aan uw SSH-sleutel voor extra beveiliging
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

De openbare sleutel toevoegen aan een Git-account

  1. Kopieer de inhoud van uw openbare-sleutelbestand in het terminalvenster. Als u de naam van de sleutel hebt gewijzigd, vervangt u id_rsa.pub door de bestandsnaam van de openbare sleutel.
cat ~/.ssh/id_rsa.pub

Tip

Kopiëren en plakken in terminal

  • Windows: Ctrl-Insert kopiëren en gebruiken Ctrl-Shift-v of Shift-Insert plakken.
  • Mac OS: Cmd-c kopiëren en Cmd-v plakken.
  • FireFox/IE biedt mogelijk geen ondersteuning voor klembordmachtigingen.
  1. Selecteer en kopieer de SSH-sleuteluitvoer naar het Klembord.
  2. Volg vervolgens de stappen om de SSH-sleutel toe te voegen aan het accounttype van uw voorkeur:

De Git-opslagplaats klonen met SSH

  1. Kopieer de SSH Git-kloon-URL uit de Git-opslagplaats.

  2. Plak de URL in de git clone onderstaande opdracht om de URL van uw SSH Git-opslagplaats te gebruiken. Dit ziet er ongeveer als volgt uit:

git clone git@example.com:GitUser/azureml-example.git
Cloning into 'azureml-example'...

U ziet een antwoord zoals:

The authenticity of host 'example.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.

SSH kan de SSH-vingerafdruk van de server weergeven en u vragen deze te verifiëren. Controleer of de weergegeven vingerafdruk overeenkomt met een van de vingerafdrukken op de pagina openbare SSH-sleutels.

SSH geeft deze vingerafdruk weer wanneer deze verbinding maakt met een onbekende host om u te beschermen tegen man-in-the-middle-aanvallen. Zodra u de vingerafdruk van de host accepteert, wordt u niet meer gevraagd door SSH, tenzij de vingerafdruk wordt gewijzigd.

  1. Wanneer u wordt gevraagd of u wilt doorgaan met verbinding maken, typt yesu . Git kloont de opslagplaats en stelt 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, wordt het uploadproces gebruikt om te controleren of de bestanden zijn opgeslagen in een Git-opslagplaats. Zo ja, dan worden gegevens uit uw Git-opslagplaats ook geüpload als onderdeel van de trainingstaak. Deze informatie wordt opgeslagen in de volgende eigenschappen voor de trainingstaak:

Eigenschappen Git-opdracht die wordt gebruikt om de waarde op te halen Beschrijving
azureml.git.repository_uri git ls-remote --get-url De URI waaruit uw opslagplaats is gekloond.
mlflow.source.git.repoURL git ls-remote --get-url De URI waaruit uw opslagplaats is gekloond.
azureml.git.branch git symbolic-ref --short HEAD De actieve vertakking toen de taak werd ingediend.
mlflow.source.git.branch git symbolic-ref --short HEAD De actieve vertakking toen de taak werd ingediend.
azureml.git.commit git rev-parse HEAD De doorvoer-hash van de code die is verzonden voor de taak.
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/doorvoer vuil is; anders, false.

Deze informatie wordt verzonden voor taken die gebruikmaken van een estimator, machine learning-pijplijn of scriptuitvoering.

Als uw trainingsbestanden zich niet in een Git-opslagplaats in uw ontwikkelomgeving bevinden of als de git opdracht niet beschikbaar is, wordt er geen git-gerelateerde informatie bijgehouden.

Tip

Als u wilt controleren of de Git-opdracht beschikbaar is in uw ontwikkelomgeving, opent u een shellsessie, opdrachtprompt, PowerShell of een andere opdrachtregelinterface en typt u de volgende opdracht:

git --version

Als deze is geïnstalleerd en in het pad, ontvangt u een antwoord dat vergelijkbaar is met git version 2.4.1. Zie de Git-website voor meer informatie over het installeren van Git in uw ontwikkelomgeving.

De vastgelegde gegevens weergeven

De Git-informatie wordt opgeslagen in de eigenschappen voor een trainingstaak. U kunt deze informatie weergeven met behulp van de Azure-portal of Python SDK.

Azure Portal

  1. Selecteer uw werkruimte in de studioportal.
  2. Selecteer Taken en selecteer vervolgens een van uw experimenten.
  3. Selecteer een van de taken in de kolom Weergavenaam .
  4. Selecteer Uitvoer en logboeken en vouw vervolgens de logboeken en azureml-vermeldingen uit. Selecteer de koppeling die begint met ###_azure.

De vastgelegde informatie bevat tekst die lijkt op de volgende JSON:

"properties": {
    "_azureml.ComputeTargetType": "batchai",
    "ContentSnapshotId": "5ca66406-cbac-4d7d-bc95-f5a51dd3e57e",
    "azureml.git.repository_uri": "git@github.com:azure/machinelearningnotebooks",
    "mlflow.source.git.repoURL": "git@github.com:azure/machinelearningnotebooks",
    "azureml.git.branch": "master",
    "mlflow.source.git.branch": "master",
    "azureml.git.commit": "4d2b93784676893f8e346d5f0b9fb894a9cf0742",
    "mlflow.source.git.commit": "4d2b93784676893f8e346d5f0b9fb894a9cf0742",
    "azureml.git.dirty": "True",
    "AzureML.DerivedImageName": "azureml/azureml_9d3568242c6bfef9631879915768deaf",
    "ProcessInfoFile": "azureml-logs/process_info.json",
    "ProcessStatusFile": "azureml-logs/process_status.json"
}

Eigenschappen weergeven

Nadat u een trainingsuitvoering hebt ingediend, wordt een taakobject geretourneerd. Het properties kenmerk van dit object bevat de vastgelegde Git-gegevens. Met de volgende code wordt bijvoorbeeld de doorvoer-hash opgehaald:

VAN TOEPASSING OP: Python SDK azure-ai-ml v2 (actueel)

job.properties["azureml.git.commit"]

Volgende stappen