Integrazione di Git per Azure Machine Learning

Git è un sistema di controllo della versione molto diffuso che consente di condividere e collaborare sui progetti.

Azure Machine Learning supporta in modo completo i repository Git per tenere traccia del lavoro: è possibile clonare i repository direttamente nel file system dell'area di lavoro condivisa, usare Git nella workstation locale o usare Git da una pipeline CI/CD.

Quando si invia un processo ad Azure Machine Learning, se i file di origine vengono archiviati in un repository Git locale, le informazioni sul repository vengono tracciate come parte del processo di training.

Poiché Azure Machine Learning tiene traccia delle informazioni da un repository Git locale, non è associato a un repository centrale specifico. Il repository può essere clonato da GitHub, GitLab, Bitbucket, Azure DevOps o qualsiasi altro servizio compatibile con Git.

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 con 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 Utilizzo del controllo della versione in VS Code e Lavorare con GitHub in VS Code.

Clonare i repository GIT nel file system dell'area di lavoro

Azure Machine Learning offre un file system condiviso per tutti gli utenti dell'area di lavoro. Per clonare un repository Git in questa condivisione file, consigliamo di creare un'istanza di ambiente di calcolo e aprire un terminale. Dopo aver aperto il terminale, è possibile accedere a un client Git completo, clonare e lavorare con Git tramite l'esperienza della CLI di Git.

È consigliabile clonare il repository nella directory utente in modo che altri utenti non creino conflitti direttamente nel ramo di lavoro.

Suggerimento

Esiste una differenza di prestazioni tra la clonazione nel file system locale dell'istanza di ambiente di calcolo o la clonazione nel file system montato (montato come directory ~/cloudfiles/code). In generale, la clonazione nel file system locale offrirà prestazioni migliori rispetto al file system montato. Tuttavia, il file system locale viene perso se si elimina e si ricrea l'istanza di ambiente di calcolo. Il file system montato viene conservato se si elimina e si ricrea l’istanza di ambiente di calcolo.

È possibile clonare qualsiasi repository Git in cui è possibile eseguire l'autenticazione (GitHub, Azure Repos, BitBucket e così via)

Per altre informazioni sulla clonazione, consultare la guida su come usare l'interfaccia della riga di comando di Git.

Autenticare l'account Git con SSH

Generare una nuova chiave SSH

  1. Aprire la finestra del terminale nella scheda Notebook di Azure Machine Learning.

  2. Incollare il testo seguente, sostituendo l'indirizzo e-mail.

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

In questo modo viene creata una nuova chiave SSH, usando l’indirizzo e-mail fornito come etichetta.

> Generating public/private rsa key pair.
  1. Quando viene richiesto di immettere un file in cui salvare la chiave, premere INVIO. In questo modo si accetta il percorso predefinito del file.

  2. Verificare che il percorso predefinito sia "/home/azureuser/.ssh" e premere INVIO. In caso contrario, specificare il percorso '/home/azureuser/.ssh'.

Suggerimento

Assicurarsi che la chiave SSH sia salvata in '/home/azureuser/.ssh'. Questo file viene salvato nell'istanza di ambiente di calcolo ed è accessibile solo dal proprietario dell'istanza di ambiente di calcolo

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. Al prompt, digitare una passphrase sicura. Per una maggiore sicurezza è consigliabile aggiungere una passphrase alla chiave SSH
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

Aggiungere la chiave pubblica all'account Git

  1. Nella finestra del terminale, copiare il contenuto del file di chiave pubblica. Se la chiave è stata rinominata, sostituire id_rsa.pub con il nome del file di chiave pubblica.
cat ~/.ssh/id_rsa.pub

Suggerimento

Copiare e incollare nel terminale

  • Windows: Ctrl-Insert per copiare e usare Ctrl-Shift-v o Shift-Insert per incollare.
  • Mac OS: Cmd-c per copiare e Cmd-v per incollare.
  • FireFox o Internet Explorer potrebbero non supportare correttamente le autorizzazioni per gli appunti.
  1. Selezionare e copiare l'output della chiave SSH negli Appunti.
  2. Seguire quindi i passaggi per aggiungere la chiave SSH al tipo di account preferito:

Clonare il repository Git con SSH

  1. Copiare l'URL del clone GIT SSH dal repository Git.

  2. Incollare l'URL nel comando git clone seguente per usare l'URL del repository Git SSH. Sarà simile a quanto segue:

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

Verrà visualizzata una risposta simile alla seguente:

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 potrebbe visualizzare l'impronta digitale SSH del server e chiederne la verifica. È necessario controllare che l'impronta digitale visualizzata corrisponda a una delle impronte digitali nella pagina delle chiavi pubbliche SSH.

SSH visualizza questa impronta digitale quando si connette a un host sconosciuto per proteggere l'utente dagli attacchi man-in-the-middle. Dopo aver accettato l'impronta digitale dell'host, SSH non effettuerà altre richieste a meno che l'impronta digitale non cambi.

  1. Quando viene chiesto se si vuole continuare la connessione, digitare yes. Git clonerà il repository e configurerà l'origine remota per connettersi a SSH per i comandi Git futuri.

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 lo usa per verificare se i file sono archiviati in un repository Git. In tal caso, le informazioni dal repository Git vengono caricate anche come parte del processo di training. Queste informazioni vengono archiviate nelle seguenti proprietà per il processo di training:

Proprietà Comando Git usato per ottenere il valore Descrizione
azureml.git.repository_uri git ls-remote --get-url URI da cui è stato clonato il repository.
mlflow.source.git.repoURL git ls-remote --get-url URI da cui è stato clonato il repository.
azureml.git.branch git symbolic-ref --short HEAD Ramo attivo al momento dell'invio del processo.
mlflow.source.git.branch git symbolic-ref --short HEAD Ramo attivo al momento dell'invio del processo.
azureml.git.commit git rev-parse HEAD Hash del commit del codice inviato per il processo.
mlflow.source.git.commit git rev-parse HEAD Hash del commit del codice inviato per il processo.
azureml.git.dirty git status --porcelain . True, se il ramo/commit è dirty; in caso contrario, false.

Queste informazioni vengono inviate per i processi che usano una stima, una pipeline di Machine Learning o un'esecuzione di script.

Se i file di training non si trovano in un repository Git nell'ambiente di sviluppo o il comando git non è disponibile, non viene tracciata nessuna informazione correlata a Git.

Suggerimento

Per verificare se il comando Git è disponibile nell'ambiente di sviluppo, aprire una sessione di shell, un prompt dei comandi, PowerShell o un'altra interfaccia della riga di comando e digitare il comando seguente:

git --version

Se è installato e si trova nel percorso, viene restituita una risposta simile a git version 2.4.1. Per altre informazioni sull'installazione di Git nell'ambiente di sviluppo, consultare il sito Web Git.

Visualizzare le informazioni registrate

Le informazioni Git vengono archiviate nelle proprietà per un processo di training. È possibile visualizzare queste informazioni usando il portale di Azure o l’SDK Python.

Azure portal

  1. Nel portale di Studio, selezionare l'area di lavoro.
  2. Selezionare Processi, quindi selezionare uno degli esperimenti.
  3. Selezionare uno dei processi nella colonna Nome visualizzato.
  4. Selezionare Output e log, quindi espandere le voci logs e azureml. Selezionare il collegamento che inizia con ###_azure.

Le informazioni registrate contengono del testo simile al seguente 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"
}

Visualizza proprietà

Dopo l'invio di un'esecuzione di training, viene restituito un oggetto Processo. L'attributo properties di questo oggetto contiene le informazioni Git registrate. Ad esempio, il codice seguente recupera l'hash del commit:

SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)

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

Passaggi successivi