Integrace Gitu pro Azure Machine Learning

Git je oblíbený systém správy verzí, který umožňuje sdílet a spolupracovat na svých projektech. Tento článek vysvětluje, jak může Azure Machine Learning integrovat s místním úložištěm Git ke sledování informací o úložišti, větvi a aktuálním potvrzení v rámci trénovací úlohy.

Azure Machine Learning plně podporuje úložiště Git pro sledování práce. Úložiště můžete naklonovat přímo do systému souborů sdíleného pracovního prostoru, použít Git na místní pracovní stanici nebo použít Git z kanálu kontinuální integrace a průběžného nasazování (CI/CD).

Když odešlete trénovací úlohu Služby Azure Machine Learning, která obsahuje zdrojové soubory z místního úložiště Git, informace o úložišti se sledují jako součást úlohy trénování. Vzhledem k tomu, že informace pocházejí z místního úložiště Git, nejsou svázané s žádným konkrétním centrálním úložištěm. Vaše úložiště je možné naklonovat z libovolné služby kompatibilní s Gitem, jako je GitHub, GitLab, Bitbucket nebo Azure DevOps.

Tip

Visual Studio Code můžete použít k interakci s Gitem prostřednictvím grafického uživatelského rozhraní. Pokud se chcete připojit ke vzdálené výpočetní instanci Služby Azure Machine Learning pomocí editoru Visual Studio Code, přečtěte si téma Spuštění editoru Visual Studio Code integrované se službou Azure Machine Learning (Preview)

Další informace o funkcích správy verzí editoru Visual Studio Code najdete v tématu Použití správy verzí v editoru Visual Studio Code a práce s GitHubem v editoru Visual Studio Code.

Úložiště Git v systému souborů pracovního prostoru

Azure Machine Learning poskytuje sdílený systém souborů pro všechny uživatele v pracovním prostoru. Nejlepším způsobem, jak do této sdílené složky naklonovat úložiště Git, je vytvořit výpočetní instanci a otevřít terminál. V terminálu máte přístup k úplnému klientovi Gitu a můžete klonovat a pracovat s Gitem pomocí Rozhraní příkazového řádku Gitu. Další informace najdete v tématu Git CLI.

Můžete naklonovat libovolné úložiště Git, do kterého se můžete ověřit, například do úložiště GitHub, Azure Repos nebo BitBucket. Nejlepší je naklonovat úložiště do uživatelského adresáře, aby ostatní uživatelé nekolidili přímo ve vaší pracovní větvi.

Existuje několik rozdílů mezi klonováním do místního systému souborů výpočetní instance nebo klonováním do sdíleného systému souborů, který je připojený jako adresář ~/cloudfiles/code/ . Klonování do místního systému souborů obecně poskytuje lepší výkon než klonování do připojeného systému souborů. Pokud však výpočetní instanci odstraníte a znovu vytvoříte, místní systém souborů se ztratí, zatímco připojený sdílený systém souborů zůstane zachován.

Klonování úložiště Git pomocí SSH

Úložiště můžete naklonovat pomocí protokolu Secure Shell (SSH). Pokud chcete použít SSH, musíte pomocí klíče SSH ověřit svůj účet Git pomocí SSH.

Vygenerování a uložení nového klíče SSH

Pokud chcete vygenerovat nový klíč SSH, můžete přejít na stránku studio Azure Machine Learning Poznámkový blok, otevřít terminál a spustit následující příkaz a nahradit e-mailovou adresu.

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

Příkaz vrátí následující výstup:

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

Zkontrolujte, jestli je /home/azureuser/.sshumístění v předchozím výstupu , nebo ho změňte na toto umístění a stiskněte Enter.

Pro přidání zabezpečení je nejlepší přidat přístupové heslo ke klíči SSH. Na následujících výzev zadejte zabezpečené heslo.

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

Když stisknete Klávesu Enter, ssh-keygen příkaz vygeneruje novou klávesu SSH se zadanou e-mailovou adresou jako popiskem. Soubor klíče se uloží do výpočetní instance a je přístupný pouze vlastníkovi výpočetní instance.

Přidání veřejného klíče do účtu Git

Veřejný klíč SSH musíte přidat do svého účtu Git. Klíč získáte spuštěním následujícího příkazu v okně terminálu. Pokud má soubor klíče jiný název, nahraďte id_ed25519.pub ho názvem vašeho souboru veřejného klíče.

cat ~/.ssh/id_ed25519.pub

Příkaz zobrazí obsah souboru veřejného klíče. Výstup si zkopírujte.

Tip

Pokud chcete zkopírovat a vložit okno terminálu, použijte tyto klávesové zkratky v závislosti na operačním systému:

  • Windows: Ctrl+C nebo Ctrl+Insert pro kopírování, Ctrl+V nebo Ctrl+Shift+V, které chcete vložit.
  • MacOS: Cmd+C pro kopírování a Cmd+V k vložení.

Některé prohlížeče nemusí správně podporovat oprávnění schránky.

Pomocí následujících pokynů přidejte klíč SSH ke svému účtu Git v závislosti na vaší službě Git:

Klonování úložiště Git pomocí SSH

Pokud chcete naklonovat úložiště Git, zkopírujte adresu URL klonu SSH z úložiště. V terminálu spusťte git clone následující adresu URL klonu SSH Gitu. Příklad:

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

SSH může zobrazit otisk SSH serveru a požádat vás, abyste ho ověřili, jako v následujícím příkladu.

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 zobrazí tento otisk prstu, když se připojí k neznámému hostiteli, aby vás chránil před útoky typu man-in-the-middle. Měli byste ověřit, že otisk prstu odpovídá jednomu z otisků prstů na stránce veřejných klíčů SSH. Jakmile přijmete otisk prstu hostitele, SSH znovu nezobrazí výzvu, pokud se otisk prstu nezmění.

SSH zobrazí odpověď jako v následujícím příkladu:

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

Jakmile zadáte heslo, Git naklonuje úložiště a nastaví vzdálené umístění původu pro připojení pomocí SSH pro budoucí příkazy Gitu.

Sledování kódu pocházejícího z úložišť Git

Když odešlete trénovací úlohu ze sady Python SDK nebo rozhraní příkazového řádku machine learningu, soubory potřebné k trénování modelu se nahrají do vašeho pracovního prostoru. git Pokud je příkaz dostupný ve vašem vývojovém prostředí, proces nahrání zkontroluje, jestli jsou zdrojové soubory uložené v úložišti Git.

Pokud ano, proces v rámci trénovací úlohy nahraje úložiště Git, větev a aktuální informace o potvrzení. Informace jsou uloženy v následujících vlastnostech trénovací úlohy pro úlohy, které používají nástroj pro odhad, kanál strojového učení nebo spuštění skriptu.

Vlastnost Příkaz Gitu pro získání hodnoty Popis
azureml.git.repository_uri nebo mlflow.source.git.repoURL git ls-remote --get-url Identifikátor URI, ze kterého bylo úložiště naklonováno.
azureml.git.branch nebo mlflow.source.git.branch git symbolic-ref --short HEAD Aktivní větev při odeslání úlohy.
azureml.git.commit nebo mlflow.source.git.commit git rev-parse HEAD Hodnota hash potvrzení kódu odeslaného pro úlohu.
azureml.git.dirty git status --porcelain . True pokud je větev nebo potvrzení zašpiněná, jinak false.

Pokud příkaz git není ve vašem vývojovém prostředí dostupný nebo vaše trénovací soubory nejsou umístěné v úložišti Git, nebudou se sledovat žádné informace související s Gitem.

Tip

Pokud chcete zkontrolovat, jestli git je příkaz dostupný ve vašem vývojovém prostředí, spusťte git --version příkaz v rozhraní příkazového řádku. Pokud je Git nainstalovaný a ve vaší cestě, obdržíte odpověď podobnou git version 2.43.0. Informace o instalaci Gitu ve vašem vývojovém prostředí najdete na webu Git.

Zobrazení informací o Gitu

Informace Gitu se ve vlastnostech trénovací úlohy ukládají jako kód JSON. Protokolované informace o Gitu můžou obsahovat následující vlastnosti:

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

Tyto informace můžete zobrazit pomocí webu Azure Portal, sady Python SDK nebo Azure CLI.

portál Azure

V pracovním prostoru v studio Azure Machine Learning vyberte úlohu na stránce Úlohy. V části Vlastnosti na stránce Přehled úlohy vyberte Nezpracovaný JSON v části Zobrazit všechny vlastnosti.

Ve formátu JSON vyhledejte vlastnosti Gitu, například:

    "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

Po odeslání trénovacího spuštění se vrátí objekt úlohy . Atribut properties tohoto objektu obsahuje protokolované informace Gitu. Můžete například spustit následující příkaz, který načte hodnotu hash potvrzení:

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

Rozhraní příkazového řádku Azure CLI V2

Spuštěním az ml job show příkazu s argumentem --query můžete zobrazit informace o Gitu. Například následující dotaz načte mlflow.source.git.commit hodnotu vlastnosti:

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