Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Git è un sistema di controllo della versione molto diffuso che consente di condividere e collaborare sui progetti. Questo articolo illustra in che modo Azure Machine Learning può integrarsi con un repository Git locale per tenere traccia delle informazioni su repository, ramo e commit corrente come parte del processo di training.
Azure Machine Learning supporta completamente i repository Git per la verifica del lavoro. È possibile clonare i repository direttamente nel file system dell'area di lavoro condivisa, usare Git nella workstation locale oppure usare Git da una pipeline di integrazione continua e distribuzione continua (CI/CD).
Quando si invia un processo di training di Azure Machine Learning con file di origine da un repository Git locale, le informazioni sul repository vengono rilevate come parte del processo di training. Poiché le informazioni provengono dal repository Git locale, non sono associate a un repository centrale specifico. Il repository può essere clonato da qualsiasi servizio compatibile con Git, ad esempio GitHub, GitLab, Bitbucket o Azure DevOps.
Suggerimento
Usare Visual Studio Code per interagire con Git tramite un'interfaccia utente grafica. Per connettersi a un'istanza di ambiente di calcolo remota di Azure Machine Learning usando Visual Studio Code, vedere Avviare Visual Studio Code integrato con Azure Machine Learning (anteprima).
Per altre informazioni sulle funzionalità di controllo della versione di Visual Studio Code, vedere Usare il controllo della versione in Visual Studio Code e Usare GitHub in Visual Studio Code.
Clonare un repository Git nel file system dell'area di lavoro
Azure Machine Learning offre un file system condiviso per tutti gli utenti in un'area di lavoro. Il modo migliore per clonare un repository Git in questa condivisione file consiste nel creare un'istanza di calcolo e aprire un terminale. Nel terminale è possibile accedere a un client Git completo e clonare e usare Git usando l'interfaccia della riga di comando di Git. Per altre informazioni, vedere Interfaccia della riga di comando di Git.
È possibile clonare qualsiasi repository Git a cui è possibile eseguire l'autenticazione, ad esempio un repository GitHub, Azure Repos o Bitbucket. È consigliabile clonare il repository nella propria directory utente, in modo che non vi siano conflitti diretti con altri utenti nel ramo di lavoro.
Esistono alcune differenze tra la clonazione nel file system locale dell'istanza di calcolo o la clonazione nel file system condiviso, montata come directory ~/cloudfiles/code/. In generale, la clonazione nel file system locale offre prestazioni migliori rispetto alla clonazione nel file system montato. Tuttavia, se si elimina e si ricrea l'istanza di calcolo, il file system locale viene perso, mentre il file system condiviso montato viene mantenuto.
Clonare un repository Git con SSH
È possibile clonare un repository usando il protocollo Secure Shell (SSH). Per usare SSH, occorre autenticare l'account Git in SSH usando una chiave SSH.
Se si preferisce clonare tramite HTTPS, aprire un terminale nell'istanza di calcolo e usare l'interfaccia della riga di comando di Git con un token di accesso personale. Per altre informazioni sull'apertura di un terminale, vedere Accedere a un terminale dell'istanza di calcolo nell'area di lavoro.
Per clonare un repository tramite SSH, completare questa procedura:
- Generare una chiave SSH.
- Aggiungere la chiave pubblica all'account Git.
- Clonare il repository.
Le sezioni di seguito descrivono i singoli passaggi.
Generare e salvare una nuova chiave SSH
Per generare una nuova chiave SSH, è possibile passare alla pagina Notebook di studio di Azure Machine Learning, aprire un terminale ed eseguire il comando seguente sostituendo l'indirizzo di posta elettronica.
ssh-keygen -t ed25519 -C "your_email@example.com"
Il comando restituisce il seguente output:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_ed25519):
Assicurarsi che la posizione nell'output precedente sia /home/azureuser/.ssh, oppure modificarlo in modo che corrisponda a tale posizione e quindi premere INVIO.
Per una maggiore sicurezza, è consigliabile aggiungere una passphrase alla chiave SSH. Ai prompt seguenti immettere una passphrase sicura.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Quando si preme INVIO, il comando ssh-keygen genera una nuova chiave SSH con l'indirizzo di posta elettronica fornito come etichetta. Il file di chiave viene salvato nell'istanza di ambiente di calcolo ed è accessibile solo al proprietario della stessa.
Aggiungere la chiave pubblica al proprio account Git
È necessario aggiungere la chiave SSH pubblica all'account Git. Per ottenere la chiave, eseguire il comando seguente nella finestra del terminale. Se il file di chiave ha un nome diverso, sostituire id_ed25519.pub con il nome file della chiave pubblica.
cat ~/.ssh/id_ed25519.pub
Il comando visualizza il contenuto del file di chiave pubblica. Copiare l'output.
Suggerimento
Per copiare e incollare nella finestra del terminale, usare questi tasti di scelta rapida, a seconda del sistema operativo:
- Windows: Ctrl+C o Ctrl+Ins per copiare, Ctrl+V o Ctrl+Maiusc+V per incollare.
- macOS: cmd+C per copiare e cmd+V da incollare.
Alcuni browser potrebbero non supportare correttamente le autorizzazioni per gli appunti.
Aggiungere la chiave SSH all'account Git usando le istruzioni seguenti, a seconda del servizio Git:
Clonare il repository Git con SSH
Per clonare un repository Git, copia dal repository l'URL SSH per il clone Git. Nel terminale eseguire git clone seguito dall'URL git clone SSH. Ad esempio:
git clone git@example.com:GitUser/azureml-example.git
SSH potrebbe visualizzare l'impronta digitale SSH del server e chiedere di verificarla, come nell'esempio seguente.
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 visualizza questa impronta digitale quando si connette a un host sconosciuto per proteggere l'utente dagli attacchi man-in-the-middle. È necessario verificare che l'impronta digitale corrisponda a una delle impronte digitali nella pagina delle chiavi pubbliche SSH. Dopo aver accettato l'impronta digitale dell'host, SSH non effettuerà altre richieste a meno che l'impronta digitale non cambi.
SSH visualizza una risposta simile all'esempio seguente:
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':
Dopo aver immesso la passphrase, Git clona il repository e configura il remote origin per la connessione tramite SSH per i successivi comandi Git.
Tenere traccia del codice proveniente da repository Git
Quando si invia un processo di training dall'SDK Python o dall'interfaccia della riga di comando di Machine Learning, i file necessari per eseguire il training del modello vengono caricati nell'area di lavoro. Se il comando git è disponibile nell'ambiente di sviluppo, il processo di caricamento verifica se i file di origine siano archiviati in un repository Git.
In tal caso, il processo carica le informazioni relative al repository Git, al branch e al commit corrente nell'ambito del job di addestramento. Le informazioni sono archiviate nelle seguenti proprietà del processo di training per i processi che usano un estimator, una pipeline di machine learning o l'esecuzione di script.
| Proprietà | Comando Git usato per ottenere il valore | Descrizione |
|---|---|---|
azureml.git.repository_uri oppure mlflow.source.git.repoURL |
git ls-remote --get-url |
URI da cui è stato clonato il repository. |
azureml.git.branch oppure mlflow.source.git.branch |
git symbolic-ref --short HEAD |
Ramo attivo al momento dell'invio del processo. |
azureml.git.commit oppure mlflow.source.git.commit |
git rev-parse HEAD |
L'hash del commit del codice inviato per l'attività. |
azureml.git.dirty |
git status --porcelain . |
True se il ramo o il commit è sporco, altrimenti false. |
Se il comando git non è disponibile nell'ambiente di sviluppo, o se i file di training non si trovano in un repository Git, non vengono rilevate informazioni correlate a Git.
Note
Se nel processo in esecuzione mancano proprietà Git, assicurati che il comando git --version venga eseguito correttamente nel tuo ambiente e che i file di addestramento si trovino all'interno della directory del repository clonato.
Suggerimento
Per verificare se il comando git è disponibile nell'ambiente di sviluppo, eseguire il comando git --version in un'interfaccia della riga di comando. Se Git è installato ed è nel percorso, si riceve una risposta simile a git version 2.49.0. Per altre informazioni sull'installazione di Git nell'ambiente di sviluppo, consultare il sito Web Git.
Visualizzare le informazioni Git
Le informazioni Git vengono archiviate come codice JSON nelle proprietà per un processo di training. Le informazioni Git registrate possono includere le proprietà seguenti:
"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>",
È possibile visualizzare queste informazioni usando il portale di Azure, Python SDK o l'interfaccia della riga di comando di Azure.
Portale di Azure
Nell'area di lavoro in studio di Azure Machine Learning, selezionare il processo dalla pagina Processi. Nella sezione Proprietà della pagina Informazioni generali del processo, selezionare JSON non elaborato in Visualizza tutte le proprietà.
In JSON cercare le proprietà Git, ad esempio:
"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
Dopo aver inviato un'esecuzione di addestramento, viene restituito un oggetto Job. L'attributo properties di questo oggetto contiene le informazioni Git registrate. Ad esempio, per recuperare l'hash di commit è possibile eseguire il comando seguente:
job.properties["mlflow.source.git.commit"]
Interfaccia della riga di comando di Azure versione 2
Per visualizzare le informazioni Git è possibile eseguire il comando az ml job show con l'argomento --query. Ad esempio, la query seguente recupera il valore della proprietà mlflow.source.git.commit:
az ml job show --name my-job-id --resource-group my-resource-group --workspace-name my-workspace --query "{GitCommit:properties.\"azureml.git.commit\"}"