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"