Dela via


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. Den här artikeln beskriver hur Azure Machine Learning kan integreras med en lokal Git-lagringsplats för att spåra lagringsplats, gren och aktuell incheckningsinformation som en del av ett träningsjobb.

Azure Machine Learning har fullt stöd för Git-lagringsplatser för spårningsarbete. 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 (kontinuerlig integrering och kontinuerlig distribution).

När du skickar ett Azure Machine Learning-utbildningsjobb som har källfiler från en lokal Git-lagringsplats spåras information om lagringsplatsen som en del av träningsjobbet. Eftersom informationen kommer från den lokala Git-lagringsplatsen är den inte kopplad till någon specifik central lagringsplats. Lagringsplatsen kan klonas från valfri Git-kompatibel tjänst, till exempel GitHub, GitLab, Bitbucket eller Azure DevOps.

Dricks

Du kan använda 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 hjälp av 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 Visual Studio Code och Arbeta med GitHub i Visual Studio Code.

Git-lagringsplatser i ett arbetsytefilsystem

Azure Machine Learning tillhandahåller ett delat filsystem för alla användare på en arbetsyta. Det bästa sättet att klona en Git-lagringsplats till den här filresursen är att skapa en beräkningsinstans och öppna en terminal. I terminalen har du åtkomst till en fullständig Git-klient och kan klona och arbeta med Git med hjälp av Git CLI. Mer information finns i Git CLI.

Du kan klona valfri Git-lagringsplats som du kan autentisera till, till exempel en GitHub-, Azure Repos- eller BitBucket-lagringsplats. Det är bäst att klona lagringsplatsen till din användarkatalog så att andra användare inte kolliderar direkt på din arbetsgren.

Det finns vissa skillnader mellan kloning till det lokala filsystemet för beräkningsinstansen eller kloning till det delade filsystemet, monterat som katalogen ~/cloudfiles/code/ . I allmänhet ger kloning till det lokala filsystemet bättre prestanda än kloning till det monterade filsystemet. Men om du tar bort och återskapar beräkningsinstansen går det lokala filsystemet förlorat medan det monterade delade filsystemet behålls.

Klona en Git-lagringsplats med SSH

Du kan klona en lagringsplats med hjälp av SSH-protokollet (Secure Shell). Om du vill använda SSH måste du autentisera ditt Git-konto med SSH med hjälp av en SSH-nyckel.

Generera och spara en ny SSH-nyckel

Om du vill generera en ny SSH-nyckel kan du gå till sidan Azure Machine Learning-studio Notebook, öppna en terminal och köra följande kommando och ersätta din e-postadress.

ssh-keygen -t ed25519 -C "your_email@example.com"

Kommandot returnerar följande utdata:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_ed25519):

Kontrollera att platsen i föregående utdata är /home/azureuser/.ssh, eller ändra den till den platsen och tryck sedan på Retur.

Det är bäst att lägga till en lösenfras i SSH-nyckeln för extra säkerhet. Ange en säker lösenfras i följande prompter.

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

När du trycker på Retur ssh-keygen genererar kommandot en ny SSH-nyckel med den angivna e-postadressen som etikett. Nyckelfilen sparas på beräkningsinstansen och är endast tillgänglig för beräkningsinstansens ägare.

Lägg till den offentliga nyckeln i ditt Git-konto

Du måste lägga till din offentliga SSH-nyckel till ditt Git-konto. Hämta nyckeln genom att köra följande kommando i terminalfönstret. Om nyckelfilen har ett annat namn ersätter du id_ed25519.pub med namnet på den offentliga nyckelfilen.

cat ~/.ssh/id_ed25519.pub

Kommandot visar innehållet i den offentliga nyckelfilen. Kopiera utdata.

Dricks

Om du vill kopiera och klistra in i terminalfönstret använder du dessa kortkommandon, beroende på operativsystemet:

  • Windows: Ctrl+C eller Ctrl+Insert för att kopiera, Ctrl+V eller Ctrl+Skift+V för att klistra in.
  • MacOS: Cmd+C för att kopiera och Cmd+V att klistra in.

Vissa webbläsare kanske inte stöder Behörigheter för Urklipp korrekt.

Lägg till SSH-nyckeln till ditt Git-konto med hjälp av följande instruktioner, beroende på din Git-tjänst:

Klona Git-lagringsplatsen med SSH

Om du vill klona en Git-lagringsplats kopierar du SSH Git-klonings-URL:en från lagringsplatsen. I terminalen kör du git clone följt av SSH Git-klonens URL. Till exempel:

git clone git@example.com:GitUser/azureml-example.git

SSH kan visa serverns SSH-fingeravtryck och be dig verifiera det, som i följande exempel.

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 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. Du bör kontrollera att fingeravtrycket matchar ett av fingeravtrycken på sidan offentliga SSH-nycklar. När du har godkänt värdens fingeravtryck uppmanar SSH dig inte igen om inte fingeravtrycket ändras.

SSH visar ett svar som i följande exempel:

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': 

När du har angett lösenfrasen klonar Git 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 kontrollerar uppladdningsprocessen om källfilerna lagras på en Git-lagringsplats.

I så fall laddar processen upp Git-lagringsplats, gren och aktuell incheckningsinformation som en del av träningsjobbet. Informationen lagras i följande träningsjobbegenskaper för jobb som använder en skattning, maskininlärningspipeline eller skriptkörning.

Property Git-kommando för att hämta värdet beskrivning
azureml.git.repository_uri eller mlflow.source.git.repoURL git ls-remote --get-url Den URI som lagringsplatsen klonades från.
azureml.git.branch eller mlflow.source.git.branch git symbolic-ref --short HEAD Den aktiva grenen när jobbet skickades.
azureml.git.commit eller 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 eller incheckningen är smutsig, annars false.

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

Dricks

Kontrollera om kommandot är tillgängligt i git utvecklingsmiljön genom att git --version köra kommandot i ett kommandoradsgränssnitt. Om Git är installerat och i sökvägen får du ett svar som liknar git version 2.43.0. Information om hur du installerar Git i utvecklingsmiljön finns på Git-webbplatsen.

Visa Git-information

Git-informationen lagras som JSON-kod i egenskaperna för ett träningsjobb. Den loggade Git-informationen kan innehålla följande egenskaper:

"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>",

Du kan visa den här informationen med hjälp av Azure Portal, Python SDK eller Azure CLI.

Azure Portal

Välj ditt jobb på sidan Jobb på arbetsytan i Azure Machine Learning-studio. I avsnittet Egenskaper på sidan Översikt för jobbet väljer du Raw JSON under Visa alla egenskaper.

I JSON letar du efter Git-egenskaperna, till exempel:

    "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

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. Du kan till exempel köra följande kommando för att hämta incheckningshash:

job.properties["mlflow.source.git.commit"]

Azure CLI V2

Du kan köra az ml job show kommandot med --query argumentet för att visa Git-informationen. Följande fråga hämtar till exempel egenskapsvärdet mlflow.source.git.commit :

az ml job show --name my-job-id --query "{GitCommit:properties.azureml.git.commit} --resource-group my-resource-group --workspace-name my-workspace"