Git-Integration für Azure Machine LearningGit integration for Azure Machine Learning

Git ist ein beliebtes Versionskontrollsystem, mit dem Sie Projekte freigeben und gemeinsam mit anderen an ihnen arbeiten können.Git is a popular version control system that allows you to share and collaborate on your projects.

Azure Machine Learning unterstützt Git-Repositorys zur Nachverfolgung der Arbeit – Sie können Repositorys direkt für Ihr freigegebenes Arbeitsbereichsdateisystem klonen, Git auf Ihrer lokalen Arbeitsstation verwenden oder Git über eine CI/CD-Pipeline verwenden.Azure Machine Learning fully supports Git repositories for tracking work - you can clone repositories directly onto your shared workspace file system, use Git on your local workstation, or use Git from a CI/CD pipeline.

Wenn beim Übermitteln eines Auftrags an Azure Machine Learning die Quelldateien in einem lokalen Git-Repository gespeichert sind, werden Informationen über das Repository als Teil des Trainingsprozesses nachverfolgt.When submitting a job to Azure Machine Learning, if source files are stored in a local git repository then information about the repo is tracked as part of the training process.

Da Azure Machine Learning Informationen aus einem lokalen Git-Repository nachverfolgt, ist es nicht an ein spezifisches zentrales Repository gebunden.Since Azure Machine Learning tracks information from a local git repo, it isn't tied to any specific central repository. Ihr Repository kann von GitHub, GitLab, Bitbucket, Azure DevOps oder einem beliebigen anderen, mit Git kompatiblen Dienst geklont sein.Your repository can be cloned from GitHub, GitLab, Bitbucket, Azure DevOps, or any other git-compatible service.

Klonen von Git-Respositorys für das ArbeitsbereichsdateisystemClone Git repositories into your workspace file system

Azure Machine Learning bietet ein gemeinsames Dateisystem für alle Benutzer im Arbeitsbereich.Azure Machine Learning provides a shared file system for all users in the workspace. Um ein Git-Repository für diese Dateifreigabe zu klonen, empfehlen wir Ihnen, eine Compute-Instanz zu erstellen und ein Terminal zu öffnen.To clone a Git repository into this file share, we recommend that you create a Compute Instance & open a terminal. Nachdem das Terminal geöffnet ist, haben Sie Zugriff auf einen vollständigen Git-Client und können über die Git-CLI-Oberfläche entsprechend Git klonen und mit Git arbeiten.Once the terminal is opened, you have access to a full Git client and can clone and work with Git via the Git CLI experience.

Es wird empfohlen, dass Sie das Repository in das Verzeichnis Ihrer Benutzer klonen, damit andere keine Konflikte direkt in Ihrem Arbeitsbranch verursachen.We recommend that you clone the repository into your users directory so that others will not make collisions directly on your working branch.

Sie können ein beliebiges Git-Repository klonen, bei dem Sie sich authentifizieren können (GitHub, Azure Repos, BitBucket, usw.)You can clone any Git repository you can authenticate to (GitHub, Azure Repos, BitBucket, etc.)

Weitere Informationen zum Klonen finden Sie im Leitfaden zum Verwenden der Git CLI.For more information about cloning, see the guide on how to use Git CLI.

Authentifizieren Ihres Git-Kontos mit SSHAuthenticate your Git Account with SSH

Generieren eines neuen SSH-SchlüsselsGenerate a new SSH key

  1. Öffnen Sie das Terminalfenster auf der Registerkarte Azure Machine Learning-Notebook.Open the terminal window in the Azure Machine Learning Notebook Tab.

  2. Fügen Sie den Text darunter ein, und setzen Sie dabei Ihre E-Mail-Adresse ein.Paste the text below, substituting in your email address.

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

Dadurch wird ein neuer SSH-Schlüssel erstellt, wobei die bereitgestellte E-Mail als Bezeichnung verwendet wird.This creates a new ssh key, using the provided email as a label.

> Generating public/private rsa key pair.
  1. Wenn Sie zur Eingabe einer Datei aufgefordert werden, in der der Schlüssel gespeichert werden soll, drücken Sie die EINGABETASTE.When you're prompted to "Enter a file in which to save the key" press Enter. Damit wird der Standardspeicherort der Datei akzeptiert.This accepts the default file location.

  2. Vergewissern Sie sich, dass der Standardspeicherort „/home/azureuser/.ssh“ lautet, und drücken Sie die EINGABETASTE.Verify that the default location is '/home/azureuser/.ssh' and press enter. Geben Sie andernfalls den Speicherort „/home/azureuser/.ssh“ an.Otherwise specify the location '/home/azureuser/.ssh'.

Tipp

Stellen Sie sicher, dass der SSH-Schlüssel in „/home/azureuser/.ssh“ gespeichert wird.Make sure the SSH key is saved in '/home/azureuser/.ssh'. Diese Datei wird auf der Compute-Instanz gespeichert und ist nur für den Besitzer der Compute-Instanz zugänglich.This file is saved on the compute instance is only accessible by the owner of the Compute Instance

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. Geben Sie an der Eingabeaufforderung eine sichere Passphrase ein.At the prompt, type a secure passphrase. Es wird empfohlen, dem SSH-Schlüssel eine Passphrase hinzuzufügen, um die Sicherheit zu erhöhen.We recommend you add a passphrase to your SSH key for added security
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

Hinzufügen des öffentlichen Schlüssels zum Git-KontoAdd the public key to Git Account

  1. Kopieren Sie in Ihrem Terminalfenster den Inhalt der Datei mit dem öffentlichen Schlüssel.In your terminal window, copy the contents of your public key file. Wenn Sie den Schlüssel umbenannt haben, ersetzen Sie „id_rsa.pub“ durch den Namen der Datei mit dem öffentlichen Schlüssel.If you renamed the key, replace id_rsa.pub with the public key file name.
cat ~/.ssh/id_rsa.pub

Tipp

Kopieren und Einfügen in das TerminalCopy and Paste in Terminal

  • Windows: Drücken Sie Ctrl-Insert zum Kopieren und Ctrl-Shift-v oder Shift-Insert zum Einfügen.Windows: Ctrl-Insert to copy and use Ctrl-Shift-v or Shift-Insert to paste.
  • Mac OS: Drücken Sie Cmd-c zum Kopieren und Cmd-v zum Einfügen.Mac OS: Cmd-c to copy and Cmd-v to paste.
  • FireFox/IE unterstützen die Berechtigungen für die Zwischenablage möglicherweise nicht ordnungsgemäß.FireFox/IE may not support clipboard permissions properly.
  1. Wählen Sie die Schlüsselausgabe aus, und kopieren Sie sie in die Zwischenablage.Select and copy the key output in the clipboard.

Klonen des Git-Repositorys mit SSHClone the Git repository with SSH

  1. Kopieren Sie die URL des SSH-Git-Klons aus dem Git-Repository.Copy the SSH Git clone URL from the Git repo.

  2. Fügen Sie die URL in den git clone-Befehl unten ein, um die URL Ihres SSH-Git-Repositorys zu verwenden.Paste the url into the git clone command below, to use your SSH Git repo URL. Das sieht ungefähr wie folgt aus:This will look something like:

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

Es wird eine Antwort wie die folgende angezeigt:You will see a response like:

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 zeigt möglicherweise den SSH-Fingerabdruck des Servers an und fordert Sie auf, ihn zu überprüfen.SSH may display the server's SSH fingerprint and ask you to verify it. Sie sollten überprüfen, ob der angezeigte Fingerabdruck mit einem der Fingerabdrücke auf der Seite mit den öffentlichen SSH-Schlüsseln übereinstimmt.You should verify that the displayed fingerprint matches one of the fingerprints in the SSH public keys page.

SSH zeigt diesen Fingerabdruck an, wenn es eine Verbindung mit einem unbekannten Host herstellt, um Sie vor Man-in-the-Middle-Angriffen zu schützen.SSH displays this fingerprint when it connects to an unknown host to protect you from man-in-the-middle attacks. Sobald Sie den Fingerabdruck des Hosts akzeptiert haben, werden Sie von SSH nicht mehr aufgefordert, es sei denn, der Fingerabdruck ändert sich.Once you accept the host's fingerprint, SSH will not prompt you again unless the fingerprint changes.

  1. Wenn Sie gefragt werden, ob Sie das Herstellen der Verbindung fortsetzen möchten, geben Sie yes ein.When you are asked if you want to continue connecting, type yes. Git wird das Repository klonen und den Remoteursprung einrichten, um für zukünftige Git-Befehle eine Verbindung mit SSH einzurichten.Git will clone the repo and set up the origin remote to connect with SSH for future Git commands.

Nachverfolgen von Code, der aus Git-Repositorys stammtTrack code that comes from Git repositories

Wenn Sie einen Trainingslauf vom Python SDK oder der Machine Learning-CLI übermitteln, werden die zum Trainieren des Modells erforderlichen Dateien in Ihren Arbeitsbereich hochgeladen.When you submit a training run from the Python SDK or Machine Learning CLI, the files needed to train the model are uploaded to your workspace. Wenn der git-Befehl in Ihrer Entwicklungsumgebung verfügbar ist, wird er vom Uploadvorgang verwendet, um zu überprüfen, ob die Dateien in einem Git-Repository gespeichert sind.If the git command is available on your development environment, the upload process uses it to check if the files are stored in a git repository. Ist dies der Fall, werden die Informationen aus Ihrem Git-Repository ebenfalls als Bestandteil des Trainingslaufs hochgeladen.If so, then information from your git repository is also uploaded as part of the training run. Diese Informationen sind in den folgenden Eigenschaften für den Trainingslauf gespeichert:This information is stored in the following properties for the training run:

EigenschaftProperty Git-Befehl zum Abrufen des WertsGit command used to get the value BESCHREIBUNGDescription
azureml.git.repository_uri git ls-remote --get-url Der URI, von dem Ihr Repository geklont wurde.The URI that your repository was cloned from.
mlflow.source.git.repoURL git ls-remote --get-url Der URI, von dem Ihr Repository geklont wurde.The URI that your repository was cloned from.
azureml.git.branch git symbolic-ref --short HEAD Der aktive Branch bei der Übermittlung des Laufs.The active branch when the run was submitted.
mlflow.source.git.branch git symbolic-ref --short HEAD Der aktive Branch bei der Übermittlung des Laufs.The active branch when the run was submitted.
azureml.git.commit git rev-parse HEAD Der Commithash des Codes, der für den Lauf übermittelt wurde.The commit hash of the code that was submitted for the run.
mlflow.source.git.commit git rev-parse HEAD Der Commithash des Codes, der für den Lauf übermittelt wurde.The commit hash of the code that was submitted for the run.
azureml.git.dirty git status --porcelain . True, wenn der Branch/Commit geändert wurde („dirty“), andernfalls false.True, if the branch/commit is dirty; otherwise, false.

Diese Informationen werden für Läufe gesendet, die einen Estimator, eine Machine Learning-Pipeline oder eine Skriptausführung verwenden.This information is sent for runs that use an estimator, machine learning pipeline, or script run.

Wenn Ihre Trainingsdateien nicht in einem Git-Repository in Ihrer Entwicklungsumgebung gespeichert sind oder der git-Befehl nicht verfügbar ist, werden keine Git-bezogenen Informationen nachverfolgt.If your training files are not located in a git repository on your development environment, or the git command is not available, then no git-related information is tracked.

Tipp

Um zu überprüfen, ob der Git-Befehl in Ihrer Entwicklungsumgebung verfügbar ist, öffnen Sie eine Shellsitzung, eine Eingabeaufforderung, eine PowerShell oder eine andere Befehlszeilenschnittstelle, und geben Sie den folgenden Befehl ein:To check if the git command is available on your development environment, open a shell session, command prompt, PowerShell or other command line interface and type the following command:

git --version

Sofern installiert und im Pfad enthalten, erhalten Sie eine Antwort wie git version 2.4.1.If installed, and in the path, you receive a response similar to git version 2.4.1. Weitere Informationen zur Installation von Git in der Entwicklungsumgebung finden Sie auf der Git-Website.For more information on installing git on your development environment, see the Git website.

Anzeigen der protokollierten InformationenView the logged information

Die Git-Informationen sind in den Eigenschaften für einen Trainingslauf gespeichert.The git information is stored in the properties for a training run. Sie können diese Informationen mithilfe von Azure-Portal, Python SDK und CLI anzeigen.You can view this information using the Azure portal, Python SDK, and CLI.

Azure-PortalAzure portal

  1. Wählen Sie im Studioportal Ihren Arbeitsbereich aus.From the studio portal, select your workspace.
  2. Wählen Sie Experimente und dann eins Ihrer Experimente aus.Select Experiments, and then select one of your experiments.
  3. Wählen Sie einen der Läufe in der Spalte Ausführungsanzahl aus.Select one of the runs from the RUN NUMBER column.
  4. Wählen Sie Ausgaben und Protokolle aus, und erweitern Sie dann die Einträge logs und azureml.Select Outputs + logs, and then expand the logs and azureml entries. Wählen Sie den Link aus, der mit ###_azure beginnt.Select the link that begins with ###_azure.

Die protokollierten Informationen enthalten Text, der so ähnlich aussieht wie der folgende JSON-Code:The logged information contains text similar to the following 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"
}

Python SDKPython SDK

Nach dem Übermitteln eines Trainingslaufs wird ein Run-Objekt zurückgegeben.After submitting a training run, a Run object is returned. Das properties-Attribut dieses Objekts enthält die protokollierten Git-Informationen.The properties attribute of this object contains the logged git information. Beispielsweise ruft der folgende Code den Commithash ab:For example, the following code retrieves the commit hash:

run.properties['azureml.git.commit']

Befehlszeilenschnittstelle (CLI)CLI

Der CLI-Befehl az ml run kann verwendet werden, um die Eigenschaften eines Laufs abzurufen.The az ml run CLI command can be used to retrieve the properties from a run. Beispielsweise gibt der folgende Befehl die Eigenschaften für den letzten Lauf im Experiment mit dem Namen train-on-amlcompute zurück:For example, the following command returns the properties for the last run in the experiment named train-on-amlcompute:

az ml run list -e train-on-amlcompute --last 1 -w myworkspace -g myresourcegroup --query '[].properties'

Weitere Informationen finden Sie in der Referenzdokumentation zu az ml run.For more information, see the az ml run reference documentation.

Nächste SchritteNext steps