Integração do Git para o Azure Machine Learning

O Git é um sistema de controle de versão popular que permite que você compartilhe e colabore em seus projetos. Este artigo explica como o Azure Machine Learning pode se integrar a um repositório Git local para rastrear informações de repositório, ramificação e confirmação atual como parte de um trabalho de treinamento.

O Azure Machine Learning suporta totalmente repositórios Git para controlar o trabalho. Você pode clonar repositórios diretamente em seu sistema de arquivos de espaço de trabalho compartilhado, usar o Git em sua estação de trabalho local ou usar o Git a partir de um pipeline de integração contínua e implantação contínua (CI/CD).

Quando você envia um trabalho de treinamento do Azure Machine Learning que tem arquivos de origem de um repositório Git local, as informações sobre o repositório são rastreadas como parte do trabalho de treinamento. Como as informações vêm do repositório Git local, elas não estão vinculadas a nenhum repositório central específico. Seu repositório pode ser clonado de qualquer serviço compatível com Git, como GitHub, GitLab, Bitbucket ou Azure DevOps.

Gorjeta

Você pode usar o Visual Studio Code para interagir com o Git por meio de uma interface gráfica do usuário. Para se conectar a uma instância de computação remota do Azure Machine Learning usando o Visual Studio Code, consulte Iniciar o Visual Studio Code integrado ao Azure Machine Learning (visualização).

Para obter mais informações sobre os recursos de controle de versão do Visual Studio Code, consulte Usar o controle de versão no Visual Studio Code e Trabalhar com o GitHub no Visual Studio Code.

Repositórios Git em um sistema de arquivos de espaço de trabalho

O Azure Machine Learning fornece um sistema de arquivos compartilhado para todos os usuários em um espaço de trabalho. A melhor maneira de clonar um repositório Git nesse compartilhamento de arquivos é criar uma instância de computação e abrir um terminal. No terminal, você tem acesso a um cliente Git completo e pode clonar e trabalhar com o Git usando a CLI do Git. Para obter mais informações, consulte Git CLI.

Você pode clonar qualquer repositório Git no qual possa autenticar, como um repositório GitHub, Azure Repos ou BitBucket. É melhor clonar o repositório em seu diretório de usuário, para que outros usuários não colidam diretamente em sua ramificação de trabalho.

Existem algumas diferenças entre clonar para o sistema de arquivos local da instância de computação ou clonar para o sistema de arquivos compartilhado, montado como o diretório ~/cloudfiles/code/ . Em geral, a clonagem para o sistema de arquivos local oferece melhor desempenho do que a clonagem para o sistema de arquivos montado. No entanto, se você excluir e recriar a instância de computação, o sistema de arquivos local será perdido, enquanto o sistema de arquivos compartilhado montado será mantido.

Clone um repositório Git com SSH

Você pode clonar um repositório usando o protocolo Secure Shell (SSH). Para usar SSH, você precisa autenticar sua conta Git com SSH usando uma chave SSH.

Gerar e salvar uma nova chave SSH

Para gerar uma nova chave SSH, você pode ir para a página do Bloco de Anotações do estúdio do Azure Machine Learning, abrir um terminal e executar o seguinte comando, substituindo seu endereço de email.

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

O comando retorna a seguinte saída:

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

Verifique se o local na saída anterior é /home/azureuser/.ssh, ou altere-o para esse local e pressione Enter.

É melhor adicionar uma senha à sua chave SSH para maior segurança. Nos prompts a seguir, insira uma senha segura.

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

Quando você pressiona Enter, o ssh-keygen comando gera uma nova chave SSH com o endereço de e-mail fornecido como um rótulo. O arquivo de chave é salvo na instância de computação e é acessível somente ao proprietário da instância de computação.

Adicione a chave pública à sua conta Git

Você precisa adicionar sua chave SSH pública à sua conta do Git. Para obter a chave, execute o seguinte comando na janela do terminal. Se o arquivo de chave tiver um nome diferente, substitua id_ed25519.pub pelo nome do arquivo de chave pública.

cat ~/.ssh/id_ed25519.pub

O comando exibe o conteúdo do arquivo de chave pública. Copie o resultado.

Gorjeta

Para copiar e colar na janela do terminal, use estes atalhos de teclado, dependendo do seu sistema operacional:

  • Windows: Ctrl+C ou Ctrl+Insert para copiar, Ctrl+V ou Ctrl+Shift+V para colar.
  • MacOS: Cmd+C para copiar e Cmd+V para colar.

Alguns navegadores podem não suportar as permissões da área de transferência corretamente.

Adicione a chave SSH à sua conta Git usando as seguintes instruções, dependendo do seu serviço Git:

Clone o repositório Git com SSH

Para clonar um repositório Git, copie a URL de clone do SSH Git do repositório. No seu terminal, execute git clone seguido pelo URL de clone do SSH Git. Por exemplo:

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

O SSH pode exibir a impressão digital SSH do servidor e pedir que você a verifique, como no exemplo a seguir.

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])?

O SSH exibe essa impressão digital quando se conecta a um host desconhecido para protegê-lo de ataques man-in-the-middle. Você deve verificar se a impressão digital corresponde a uma das impressões digitais na página de chaves públicas SSH. Depois de aceitar a impressão digital do anfitrião, o SSH não o solicita novamente, a menos que a impressão digital mude.

SSH exibe uma resposta como o exemplo a seguir:

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

Depois de inserir sua senha, o Git clona o repositório e configura o controle remoto de origem para se conectar ao SSH para futuros comandos do Git.

Código de rastreamento que vem de repositórios Git

Quando você envia um trabalho de treinamento do SDK do Python ou da CLI do Machine Learning, os arquivos necessários para treinar o modelo são carregados no seu espaço de trabalho. Se o git comando estiver disponível em seu ambiente de desenvolvimento, o processo de upload verificará se os arquivos de origem estão armazenados em um repositório Git.

Em caso afirmativo, o processo carrega o repositório Git, a ramificação e as informações de confirmação atuais como parte do trabalho de treinamento. As informações são armazenadas nas seguintes propriedades de trabalho de treinamento para trabalhos que usam um estimador, pipeline de aprendizado de máquina ou execução de script.

Property Comando Git para obter o valor Description
azureml.git.repository_uri ou mlflow.source.git.repoURL git ls-remote --get-url O URI do qual o repositório THE foi clonado.
azureml.git.branch ou mlflow.source.git.branch git symbolic-ref --short HEAD A ramificação ativa quando o trabalho foi enviado.
azureml.git.commit ou mlflow.source.git.commit git rev-parse HEAD O hash de confirmação do código que foi enviado para o trabalho.
azureml.git.dirty git status --porcelain . True se o ramo ou compromisso estiver sujo, caso contrário false.

Se o git comando não estiver disponível em seu ambiente de desenvolvimento ou se seus arquivos de treinamento não estiverem localizados em um repositório Git, nenhuma informação relacionada ao Git será rastreada.

Gorjeta

Para verificar se o git comando está disponível em seu ambiente de desenvolvimento, execute-o git --version em uma interface de linha de comando. Se o Git estiver instalado e no seu caminho, você receberá uma resposta semelhante ao git version 2.43.0. Para obter informações sobre como instalar o Git em seu ambiente de desenvolvimento, consulte o site do Git.

Ver informações do Git

As informações do Git são armazenadas como código JSON nas propriedades de um trabalho de treinamento. As informações registradas do Git podem incluir as seguintes propriedades:

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

Você pode exibir essas informações usando o portal do Azure, o SDK do Python ou a CLI do Azure.

Portal do Azure

Em seu espaço de trabalho no estúdio do Azure Machine Learning, selecione seu trabalho na página Trabalhos . Na seção Propriedades da página Visão geral do trabalho, selecione JSON bruto em Ver todas as propriedades.

No JSON, procure as propriedades do Git, por exemplo:

    "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

Depois de enviar uma execução de treinamento, um objeto Job é retornado. O properties atributo deste objeto contém as informações do Git registradas. Por exemplo, você pode executar o seguinte comando para recuperar o hash de confirmação:

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

CLI do Azure V2

Você pode executar o az ml job show comando com o --query argumento para exibir as informações do Git. Por exemplo, a consulta a seguir recupera o valor da mlflow.source.git.commit propriedade:

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