Partilhar via


Usar ações do GitHub com o Azure Machine Learning

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Comece pelo GitHub Actions para preparar um modelo no Azure Machine Learning.

Este artigo ensina como criar um fluxo de trabalho de Ações do GitHub que cria e implanta um modelo de aprendizado de máquina no Azure Machine Learning. Você treina um modelo de regressão linear scikit-learn no conjunto de dados do NYC Taxi.

As Ações do GitHub usam um arquivo YAML (.yml) de fluxo de trabalho no caminho do /.github/workflows/ repositório. Esta definição contém as várias etapas e parâmetros que compõem o fluxo de trabalho.

Pré-requisitos

Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:

  • Uma área de trabalho do Azure Machine Learning. Se você não tiver um, use as etapas no artigo Guia de início rápido: criar recursos do espaço de trabalho para criar um.

  • Para instalar o Python SDK v2, use o seguinte comando:

    pip install azure-ai-ml azure-identity
    

    Para atualizar uma instalação existente do SDK para a versão mais recente, use o seguinte comando:

    pip install --upgrade azure-ai-ml azure-identity
    

    Para obter mais informações, consulte Instalar o Python SDK v2 para Azure Machine Learning.

Passo 1: Obter o código

Fork o seguinte repo no GitHub:

https://github.com/azure/azureml-examples

Clone seu repo bifurcado localmente.

git clone https://github.com/YOUR-USERNAME/azureml-examples

Etapa 2: Autenticar com o Azure

Você precisará primeiro definir como autenticar com o Azure. A opção recomendada e mais segura é entrar com o OpenID Connect usando um aplicativo Microsoft Entra ou uma identidade gerenciada atribuída pelo usuário. Se necessário, você também pode usar o login com uma entidade de serviço e um segredo. Esta abordagem é menos segura e não é recomendada.

Gerar credenciais de implantação

Para usar a ação Logon do Azure com o OIDC, você precisa configurar uma credencial de identidade federada em um aplicativo Microsoft Entra ou uma identidade gerenciada atribuída pelo usuário.

Opção 1: Aplicação Microsoft Entra

Opção 2: Identidade gerenciada atribuída pelo usuário

Criar segredos

Você precisa fornecer a ID do cliente, a ID do diretório (locatário) e a ID da assinatura do aplicativo para a ação de login. Esses valores podem ser fornecidos diretamente no fluxo de trabalho ou podem ser armazenados em segredos do GitHub e referenciados em seu fluxo de trabalho. Salvar os valores como segredos do GitHub é a opção mais segura.

  1. No GitHub, vá para o seu repositório.

  2. Selecione Segredos de Segurança > e Ações de variáveis>.

    Captura de ecrã a mostrar a adição de um segredo

  3. Selecione Novo segredo do repositório.

    Nota

    Para melhorar a segurança do fluxo de trabalho em repositórios públicos, use segredos de ambiente em vez de segredos de repositório. Se o ambiente exigir aprovação, um trabalho não poderá acessar segredos de ambiente até que um dos revisores necessários o aprove.

  4. Crie segredos para AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_SUBSCRIPTION_ID. Copie estes valores do seu aplicativo Microsoft Entra ou da identidade gerenciada atribuída pelo usuário para seus segredos do GitHub:

    Segredo do GitHub Aplicativo Microsoft Entra ou identidade gerenciada atribuída pelo usuário
    AZURE_CLIENT_ID ID de Cliente
    AZURE_SUBSCRIPTION_ID ID de Subscrição
    AZURE_TENANT_ID ID do Diretório (inquilino)

    Nota

    Por motivos de segurança, recomendamos o uso de Segredos do GitHub em vez de passar valores diretamente para o fluxo de trabalho.

Etapa 3: Atualizar setup.sh para se conectar ao seu espaço de trabalho do Azure Machine Learning

Você precisa atualizar as variáveis do arquivo de configuração da CLI para corresponder ao seu espaço de trabalho.

  1. No repositório bifurcado, vá para azureml-examples/cli/.

  2. Edite setup.sh e atualize essas variáveis no arquivo.

    Variável Description
    GRUPO Nome do grupo de recursos
    LOCALIZAÇÃO Localização do espaço de trabalho (exemplo: eastus2)
    ÁREA DE TRABALHO Nome do espaço de trabalho do Azure Machine Learning

Etapa 4: Atualizar pipeline.yml com o nome do cluster de computação

Você usa um pipeline.yml arquivo para implantar seu pipeline do Azure Machine Learning. O pipeline é um pipeline de aprendizado de máquina e não um pipeline de DevOps. Você só precisará fazer essa atualização se estiver usando um nome diferente do nome do cpu-cluster cluster do computador.

  1. No repositório bifurcado, vá para azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Sempre que vir compute: azureml:cpu-clustero , atualize o valor de com o nome do cluster de cpu-cluster computação. Por exemplo, se o cluster for nomeado my-cluster, o novo valor será azureml:my-cluster. Há cinco atualizações.

Etapa 5: Executar o fluxo de trabalho de Ações do GitHub

Seu fluxo de trabalho é autenticado com o Azure, configura a CLI do Azure Machine Learning e usa a CLI para treinar um modelo no Azure Machine Learning.

Seu arquivo de fluxo de trabalho é composto por uma seção de gatilho e trabalhos:

  • Um gatilho on inicia o fluxo de trabalho na seção. O fluxo de trabalho é executado por padrão em uma agenda cron e quando uma solicitação pull é feita a partir de ramificações e caminhos correspondentes. Saiba mais sobre eventos que acionam fluxos de trabalho.
  • Na seção de trabalhos do fluxo de trabalho, você faz checkout do código e faz logon no Azure com a ação de logon do Azure usando o OpenID Connect.
  • A seção de trabalhos também inclui uma ação de configuração que instala e configura a CLI do Machine Learning (v2). Depois que a CLI for instalada, a ação de tarefa de execução executará seu arquivo do Azure Machine Learning pipeline.yml para treinar um modelo com dados de táxi de Nova York.

Habilite seu fluxo de trabalho

  1. No repositório bifurcado, abra .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml e verifique se o fluxo de trabalho tem esta aparência.

    name: cli-jobs-pipelines-nyc-taxi-pipeline
    on:
      workflow_dispatch:
      schedule:
        - cron: "0 0/4 * * *"
      pull_request:
        branches:
          - main
          - sdk-preview
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v2
        - name: azure login
          uses: azure/login@v2
          with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - name: setup
          run: bash setup.sh
          working-directory: cli
          continue-on-error: true
        - name: run job
          run: bash -x ../../../run-job.sh pipeline.yml
          working-directory: cli/jobs/pipelines/nyc-taxi
    
  2. Selecione Exibir execuções.

  3. Habilite fluxos de trabalho selecionando Eu entendo meus fluxos de trabalho, vá em frente e habilite-os.

  4. Selecione o fluxo de trabalho cli-jobs-pipelines-nyc-taxi-pipeline e escolha Ativar fluxo de trabalho.

    Captura de tela do fluxo de trabalho ativar Ações do GitHub.

  5. Selecione Executar fluxo de trabalho e escolha a opção Executar fluxo de trabalho agora.

    Captura de tela do fluxo de trabalho executar Ações do GitHub.

Etapa 6: Verificar a execução do fluxo de trabalho

  1. Abra a execução do fluxo de trabalho concluído e verifique se o trabalho de compilação foi executado com êxito. Você verá uma marca de seleção verde ao lado do trabalho.

  2. Abra o estúdio de Aprendizado de Máquina do Azure e navegue até o exemplo nyc-taxi-pipeline. Verifique se cada parte do seu trabalho (preparar, transformar, treinar, prever, pontuar) foi concluída e se você vê uma marca de seleção verde.

    Captura de tela da execução bem-sucedida do Machine Learning Studio.

Clean up resources (Limpar recursos)

Quando o grupo de recursos e o repositório não forem mais necessários, limpe os recursos implantados excluindo o grupo de recursos e o repositório GitHub.

Próximos passos