Integração com Git para Azure Machine Learning

O Git é um sistema popular de controle de versões que permite que você compartilhe e colabore em seus projetos.

O Azure Machine Learning dá suporte total a repositórios Git para o acompanhamento do trabalho – você pode clonar repositórios diretamente no sistema de arquivos do seu espaço de trabalho compartilhado, usar o Git em sua Workstation local ou usar o Git de um pipeline de CI/CD.

Ao enviar um trabalho para 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 Azure Machine Learning 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 o Git.

Dica

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, confira Iniciar o Visual Studio Code integrado ao Azure Machine Learning (versão prévia)

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

Clonar repositórios Git em seu sistema de arquivos de workspace

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 4 abra um terminal. Depois que o terminal for aberto, você terá acesso a um cliente Git completo e poderá clonar e trabalhar com o Git por meio da experiência da CLI do Git.

Recomendamos que você clone o repositório no diretório de usuário para que não haja colisões diretamente em sua ramificação de trabalho.

Dica

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 diretório ~/cloudfiles/code). Em geral, a clonagem para o sistema de arquivos local terá um desempenho melhor 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.

É possível clonar qualquer repositório Git que você possa autenticar (GitHub, Azure Repos, BitBucket, etc.)

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

Autentique sua conta do Git com o SSH

Gere uma nova chave SSH

  1. Abra a janela do terminal na guia Azure Machine Learning Notebook.

  2. Cole o texto abaixo, colocando o 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 for solicitado que você "insira um arquivo no qual salvar as chaves" aperte Enter. Isso aceita o local padrão do arquivo.

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

Dica

Verifique se a chave SSH foi 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

> Enter a file in which to save the key (/home/azureuser/.ssh/id_rsa): [Press enter]
  1. No prompt, digite uma frase secreta segura. Recomendamos que você adicione uma frase segura à 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 do Git

  1. Na janela do terminal, copie o conteúdo do arquivo da sua 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

Dica

Copie e colar no terminal

  • Windows: use Ctrl-Insert para copiar e Ctrl-Shift-v ou Shift-Insert para colar.
  • Mac OS: Cmd-c para copiar e Cmd-v para colar.
  • Talvez o FireFox/IE não dê suporte apropriado a permissões de área de transferência.
  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 preferencial:

Clone o repositório Git com SSH

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

  2. Cole a URL no comando git clone a seguir para usar a URL do repositório Git do SSH. Será semelhante a:

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

Você verá uma resposta semelhante a esta:

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.

O SSH pode exibir a impressão digital SSH do servidor e solicitar que você a verifique. 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 contra ataques man-in-the-middle. Depois de aceitar a impressão digital do host, o SSH não a solicitará novamente, a não ser que a impressão digital seja alterada.

  1. Se perguntado se deseja continuar se conectando, digite yes. O Git clonará o repositório e configurará a origem remota para se conectar com o SSH para futuros comandos Git.

Acompanhe o código proveniente 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 espaço de trabalho. Se o comando git estiver disponível no ambiente de desenvolvimento, o processo de carregamento o usará para verificar se os arquivos estão armazenados em um repositório Git. Nesse caso, 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:

Propriedade Comando Git usado para obter o valor Descrição
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 no momento do envio do trabalho.
mlflow.source.git.branch git symbolic-ref --short HEAD A ramificação ativa no momento do envio do trabalho.
azureml.git.commit git rev-parse HEAD O hash de confirmação do código enviado para o trabalho.
mlflow.source.git.commit git rev-parse HEAD O hash de confirmação do código enviado para o trabalho.
azureml.git.dirty git status --porcelain . True, se a ramificação/commit estiver sujo; se não, false.

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

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

Dica

Para verificar se o comando Git está disponível no ambiente de desenvolvimento, abra uma sessão do Shell, um prompt de comando, o PowerShell ou outra interface de linha de comando e digite o seguinte comando:

git --version

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

Veja as informações registradas

As informações do Git são armazenadas nas propriedades de um trabalho de treinamento. Você pode ver 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 um de seus experimentos.
  3. Selecione um dos trabalhos na coluna Nome de exibição.
  4. Selecione Saídas + logse expanda os logs e as entradas azureml. Selecione o link que começa com ###_azure.

As informações registradas em log contêm texto semelhante ao JSON a seguir:

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

Exibir propriedades

Depois de enviar uma execução de treinamento, um objeto Trabalho é retornado. O atributo properties desse objeto contém as informações do Git registradas em log. Por exemplo, o código a seguir recupera o hash de Commit:

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

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

Próximas etapas