Git-integrering för Azure Machine Learning

Git är ett populärt versionskontrollsystem som gör att du kan dela och samarbeta i dina projekt.

Azure Machine Learning har fullt stöd för Git-lagringsplatser för att spåra arbete – du kan klona lagringsplatser direkt till filsystemet för delade arbetsytor, använda Git på din lokala arbetsstation eller använda Git från en CI/CD-pipeline.

När du skickar ett jobb till Azure Machine Learning, om källfiler lagras på en lokal git-lagringsplats spåras information om lagringsplatsen som en del av träningsprocessen.

Eftersom Azure Machine Learning spårar information från en lokal git-lagringsplats är den inte kopplad till någon specifik central lagringsplats. Lagringsplatsen kan klonas från GitHub, GitLab, Bitbucket, Azure DevOps eller någon annan git-kompatibel tjänst.

Dricks

Använd Visual Studio Code för att interagera med Git via ett grafiskt användargränssnitt. Information om hur du ansluter till en fjärrberäkningsinstans i Azure Machine Learning med Visual Studio Code finns i Starta Visual Studio Code integrerat med Azure Machine Learning (förhandsversion)

Mer information om versionskontrollfunktioner i Visual Studio Code finns i Använda versionskontroll i VS Code och Arbeta med GitHub i VS Code.

Klona Git-databaser till arbetsytans filsystem

Azure Machine Learning tillhandahåller ett delat filsystem för alla användare på arbetsytan. Om du vill klona en Git-lagringsplats till den här filresursen rekommenderar vi att du skapar en beräkningsinstans och öppnar en terminal. När terminalen har öppnats har du åtkomst till en fullständig Git-klient och kan klona och arbeta med Git via Git CLI-upplevelsen.

Vi rekommenderar att du klonar lagringsplatsen till din användarkatalog så att andra inte gör kollisioner direkt på din arbetsgren.

Dricks

Det finns en prestandaskillnad mellan kloning till det lokala filsystemet för beräkningsinstansen eller kloning till det monterade filsystemet (monterat som ~/cloudfiles/code katalogen). I allmänhet har kloning till det lokala filsystemet bättre prestanda än det monterade filsystemet. Det lokala filsystemet går dock förlorat om du tar bort och återskapar beräkningsinstansen. Det monterade filsystemet behålls om du tar bort och återskapar beräkningsinstansen.

Du kan klona valfri Git-lagringsplats som du kan autentisera till (GitHub, Azure Repos, BitBucket osv.)

Mer information om kloning finns i guiden om hur du använder Git CLI.

Autentisera ditt Git-konto med SSH

Generera en ny SSH-nyckel

  1. Öppna terminalfönstret på fliken Azure Machine Learning Notebook.

  2. Klistra in texten nedan och ersätt med din e-postadress.

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

Detta skapar en ny ssh-nyckel med det angivna e-postmeddelandet som etikett.

> Generating public/private rsa key pair.
  1. När du uppmanas att "Ange en fil där du vill spara nyckeln" trycker du på Retur. Detta accepterar standardfilens plats.

  2. Kontrollera att standardplatsen är '/home/azureuser/.ssh' och tryck på Retur. Annars anger du platsen "/home/azureuser/.ssh".

Dricks

Kontrollera att SSH-nyckeln sparas i "/home/azureuser/.ssh". Den här filen sparas på beräkningsinstansen är endast tillgänglig för ägaren av beräkningsinstansen

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. I prompten skriver du en säker lösenfras. Vi rekommenderar att du lägger till en lösenfras i din SSH-nyckel för ökad säkerhet
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

Lägg till den offentliga nyckeln i Git-kontot

  1. Kopiera innehållet i den offentliga nyckelfilen i terminalfönstret. Om du har bytt namn på nyckeln ersätter du id_rsa.pub med filnamnet för den offentliga nyckeln.
cat ~/.ssh/id_rsa.pub

Dricks

Kopiera och klistra in i terminalen

  • Windows: Ctrl-Insert för att kopiera och använda Ctrl-Shift-v eller Shift-Insert klistra in.
  • Mac OS: Cmd-c för att kopiera och Cmd-v klistra in.
  • FireFox/IE kanske inte stöder Behörigheter för Urklipp korrekt.
  1. Välj och kopiera SSH-nyckelutdata till Urklipp.
  2. Följ sedan stegen för att lägga till SSH-nyckeln till önskad kontotyp:

Klona Git-lagringsplatsen med SSH

  1. Kopiera SSH Git-klonings-URL:en från Git-lagringsplatsen.

  2. Klistra in URL:en i git clone kommandot nedan för att använda din SSH Git-lagringsplats-URL. Detta ser ut ungefär så här:

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

Du ser ett svar som:

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 visa serverns SSH-fingeravtryck och be dig verifiera det. Du bör kontrollera att det fingeravtryck som visas matchar ett av fingeravtrycken på sidan offentliga SSH-nycklar.

SSH visar det här fingeravtrycket när det ansluter till en okänd värd för att skydda dig mot man-in-the-middle-attacker. När du har godkänt värdens fingeravtryck uppmanar SSH dig inte igen om inte fingeravtrycket ändras.

  1. När du tillfrågas om du vill fortsätta ansluta skriver du yes. Git klonar lagringsplatsen och konfigurerar ursprungsfjärrappen för att ansluta till SSH för framtida Git-kommandon.

Spåra kod som kommer från Git-lagringsplatser

När du skickar ett träningsjobb från Python SDK eller Machine Learning CLI laddas de filer som behövs för att träna modellen upp till din arbetsyta. git Om kommandot är tillgängligt i utvecklingsmiljön använder uppladdningsprocessen det för att kontrollera om filerna lagras på en git-lagringsplats. I så fall laddas även information från git-lagringsplatsen upp som en del av träningsjobbet. Den här informationen lagras i följande egenskaper för träningsjobbet:

Property Git-kommando som används för att hämta värdet beskrivning
azureml.git.repository_uri git ls-remote --get-url Den URI som lagringsplatsen klonades från.
mlflow.source.git.repoURL git ls-remote --get-url Den URI som lagringsplatsen klonades från.
azureml.git.branch git symbolic-ref --short HEAD Den aktiva grenen när jobbet skickades.
mlflow.source.git.branch git symbolic-ref --short HEAD Den aktiva grenen när jobbet skickades.
azureml.git.commit git rev-parse HEAD Incheckningshash för den kod som skickades för jobbet.
mlflow.source.git.commit git rev-parse HEAD Incheckningshash för den kod som skickades för jobbet.
azureml.git.dirty git status --porcelain . True, om grenen/incheckningen är smutsig; annars . false

Den här informationen skickas för jobb som använder en uppskattning, en maskininlärningspipeline eller en skriptkörning.

Om dina träningsfiler inte finns i en git-lagringsplats i utvecklingsmiljön, eller git om kommandot inte är tillgängligt, spåras ingen git-relaterad information.

Dricks

Om du vill kontrollera om git-kommandot är tillgängligt i utvecklingsmiljön öppnar du en gränssnittssession, kommandotolk, PowerShell eller något annat kommandoradsgränssnitt och skriver följande kommando:

git --version

Om du har installerat och i sökvägen får du ett svar som liknar git version 2.4.1. Mer information om hur du installerar git i utvecklingsmiljön finns på Git-webbplatsen.

Visa den loggade informationen

Git-informationen lagras i egenskaperna för ett träningsjobb. Du kan visa den här informationen med hjälp av Azure-portalen eller Python SDK.

Azure Portal

  1. Välj din arbetsyta i studioportalen.
  2. Välj Jobb och välj sedan ett av dina experiment.
  3. Välj ett av jobben i kolumnen Visningsnamn .
  4. Välj Utdata + loggar och expandera sedan loggarna och azureml-posterna. Välj länken som börjar med ###_azure.

Den loggade informationen innehåller text som liknar följande 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"
}

Visa egenskaper

När du har skickat en träningskörning returneras ett jobbobjekt . Attributet properties för det här objektet innehåller den loggade git-informationen. Följande kod hämtar till exempel incheckningshash:

GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

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

Nästa steg