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.

O Azure Machine Learning suporta totalmente repositórios Git para controlar o trabalho - pode clonar repositórios diretamente no seu sistema de ficheiros de espaço de trabalho partilhado, utilizar o Git na sua estação de trabalho local ou utilizar o Git a partir de um pipeline de CI/CD.

Ao enviar um trabalho para o Azure Machine Learning, se os arquivos de origem forem armazenados em um repositório git local, as informações sobre o repositório serão rastreadas como parte do processo de treinamento.

Como o Aprendizado de Máquina do Azure rastreia informações de um repositório git local, ele não está vinculado a nenhum repositório central específico. Seu repositório pode ser clonado do GitHub, GitLab, Bitbucket, Azure DevOps ou qualquer outro serviço compatível com git.

Gorjeta

Use 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 Usando o controle de versão no VS Code e Trabalhando com o GitHub no VS Code.

Clonar repositórios Git no sistema de ficheiros da área de trabalho

O Azure Machine Learning fornece um sistema de arquivos compartilhado para todos os usuários no espaço de trabalho. Para clonar um repositório Git nesse compartilhamento de arquivos, recomendamos que você crie uma instância de computação e abra um terminal. Uma vez que o terminal é aberto, você tem acesso a um cliente Git completo e pode clonar e trabalhar com o Git através da experiência Git CLI.

Recomendamos que você clone o repositório em seu diretório de usuário para que outras pessoas não façam colisões diretamente em sua ramificação de trabalho.

Gorjeta

Há uma diferença de desempenho entre a clonagem para o sistema de arquivos local da instância de computação ou a clonagem para o sistema de arquivos montado (montado como o ~/cloudfiles/code diretório). Em geral, a clonagem para o sistema de arquivos local terá melhor desempenho do que para o sistema de arquivos montado. No entanto, o sistema de arquivos local será perdido se você excluir e recriar a instância de computação. O sistema de arquivos montado será mantido se você excluir e recriar a instância de computação.

Você pode clonar qualquer repositório Git no qual possa autenticar (GitHub, Azure Repos, BitBucket, etc.)

Para obter mais informações sobre clonagem, consulte o guia sobre como usar a CLI do Git.

Autentique sua conta Git com SSH

Gerar uma nova chave SSH

  1. Abra a janela do terminal na guia Bloco de Anotações do Azure Machine Learning.

  2. Cole o texto abaixo, substituindo no seu endereço de e-mail.

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

Isso cria uma nova chave ssh, usando o e-mail fornecido como um rótulo.

> Generating public/private rsa key pair.
  1. Quando lhe for pedido para "Introduzir um ficheiro no qual guardar a chave", prima Enter. Isso aceita o local do arquivo padrão.

  2. Verifique se o local padrão é '/home/azureuser/.ssh' e pressione enter. Caso contrário, especifique o local '/home/azureuser/.ssh'.

Gorjeta

Verifique se a chave SSH está salva em '/home/azureuser/.ssh'. Esse arquivo é salvo na instância de computação e só pode ser acessado pelo proprietário da instância de computação

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. No prompt, digite uma senha segura. Recomendamos que você adicione uma senha à sua chave SSH para maior segurança
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

Adicionar a chave pública à Conta Git

  1. Na janela do terminal, copie o conteúdo do arquivo de chave pública. Se você renomeou a chave, substitua id_rsa.pub pelo nome do arquivo de chave pública.
cat ~/.ssh/id_rsa.pub

Gorjeta

Copiar e colar no Terminal

  • Windows: Ctrl-Insert para copiar e usar Ctrl-Shift-v ou Shift-Insert para colar.
  • Mac OS: Cmd-c para copiar e Cmd-v colar.
  • FireFox/IE pode não suportar permissões de área de transferência corretamente.
  1. Selecione e copie a saída da chave SSH para a área de transferência.
  2. Em seguida, siga as etapas para adicionar a chave SSH ao seu tipo de conta preferido:

Clone o repositório Git com SSH

  1. Copie a URL de clone do SSH Git do repositório Git.

  2. Cole o url no git clone comando abaixo, para usar seu SSH Git repo URL. Isso será algo como:

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

Você verá uma resposta como:

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 pode exibir a impressão digital SSH do servidor e pedir-lhe para verificá-lo. Você deve verificar se a impressão digital exibida corresponde a uma das impressões digitais na página de chaves públicas SSH.

O SSH exibe essa impressão digital quando se conecta a um host desconhecido para protegê-lo de ataques man-in-the-middle. Depois de aceitar a impressão digital do anfitrião, o SSH não o solicitará novamente, a menos que a impressão digital mude.

  1. Quando lhe for perguntado se pretende continuar a ligar-se, escreva yes. O Git clonará o repositório e configurará 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 comando estiver disponível em seu ambiente de desenvolvimento, o processo de upload o git usará para verificar se os arquivos estão armazenados em um repositório git. Em caso afirmativo, as informações do repositório git também são carregadas como parte do trabalho de treinamento. Essas informações são armazenadas nas seguintes propriedades para o trabalho de treinamento:

Property Comando Git usado para obter o valor Description
azureml.git.repository_uri git ls-remote --get-url O URI do qual o repositório foi clonado.
mlflow.source.git.repoURL git ls-remote --get-url O URI do qual o repositório foi clonado.
azureml.git.branch git symbolic-ref --short HEAD A ramificação ativa quando o trabalho foi enviado.
mlflow.source.git.branch git symbolic-ref --short HEAD A ramificação ativa quando o trabalho foi enviado.
azureml.git.commit git rev-parse HEAD O hash de confirmação do código que foi enviado para o trabalho.
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/compromisso estiver sujo; caso contrário, false.

Essas informações são enviadas para trabalhos que usam um estimador, pipeline de aprendizado de máquina ou execução de script.

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

Gorjeta

Para verificar se o comando git está disponível em seu ambiente de desenvolvimento, abra uma sessão shell, prompt de comando, PowerShell ou outra interface de linha de comando e digite o seguinte comando:

git --version

Se instalado e no caminho, você receberá uma resposta semelhante a git version 2.4.1. Para obter mais informações sobre como instalar o git em seu ambiente de desenvolvimento, consulte o site do Git.

Ver as informações registadas

As informações do git são armazenadas nas propriedades para um trabalho de treinamento. Você pode exibir essas informações usando o portal do Azure ou o SDK do Python.

Portal do Azure

  1. No portal do estúdio, selecione seu espaço de trabalho.
  2. Selecione Trabalhos e, em seguida, selecione uma das suas experiências.
  3. Selecione um dos trabalhos na coluna Nome para exibição .
  4. Selecione Saídas + logs e expanda os logs e entradas azureml. Selecione o link que começa com ###_azure.

As informações registradas contêm texto semelhante ao seguinte 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"
}

Ver propriedades

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, o seguinte código permite obter o hash de consolidação:

APLICA-SE A: Python SDK azure-ai-ml v2 (atual)

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

Próximos passos