Compartilhar via


Usar GitHub Actions com o Azure Machine Learning

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Comece a usar o GitHub Actions para treinar um modelo no Azure Machine Learning.

Esse artigo ensina como criar um fluxo de trabalho do GitHub Actions 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 NYC Taxi.

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

Pré-requisitos

  • Um espaço de trabalho do Azure Machine Learning. Para obter etapas para criar um workspace, consulte Criar o workspace.

  • O SDK do Azure Machine Learning para Python v2. Para instalar o SDK, use o seguinte comando:

    pip install azure-ai-ml azure-identity
    

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

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

    Para obter mais informações, consulte a biblioteca de clientes do Pacote do Azure Machine Learning para Python.

Etapa 1: obter o código

Bifurque o seguinte repositório no GitHub:

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

Clone seu repositório bifurcado localmente.

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

Etapa 2: Autenticar com o Azure

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

Gerar as credenciais de implantação

Para usar a ação de login 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: Aplicativo Microsoft Entra

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

Criar segredos

Você precisa fornecer a ID do cliente, a ID do locatário e a ID da assinatura do seu aplicativo para a ação de logon. 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, acesse seu repositório.

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

    Captura de tela mostrando a adição de um segredo

  3. Selecione Novo segredo de repositório.

    Observação

    Para aumentar a segurança do fluxo de trabalho em repositórios públicos, use segredos do ambiente em vez de segredos do 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_ID e AZURE_SUBSCRIPTION_ID. Copie esses 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 do Cliente
    AZURE_SUBSCRIPTION_ID ID da assinatura
    AZURE_TENANT_ID ID do diretório (locatário)

    Observação

    Por motivos de segurança, recomendamos usar o GitHub Secrets em vez de passar valores diretamente para o fluxo de trabalho.

Etapa 3: atualizar setup.sh para se conectar ao seu workspace do Azure Machine Learning

Atualize as variáveis de arquivo de instalação da CLI para corresponder ao seu workspace.

  1. No repositório clonado, acesse azureml-examples/cli/.

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

    Variável Descrição
    GROUP nome do grupo de recursos
    LOCATION Local do seu workspace (exemplo: eastus2)
    WORKSPACE Nome do workspace do Azure Machine Learning

Etapa 4: atualizar pipeline.yml com o nome do seu cluster de cálculo

Use um pipeline.yml arquivo para implantar o 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 esta atualização se estiver usando um nome diferente de cpu-cluster para o seu cluster de computação.

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

Etapa 5: executar seu fluxo de trabalho do GitHub Actions

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

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

  • Um gatilho inicia o fluxo de trabalho na seção on. O fluxo de trabalho é executado por padrão em um agendamento cron e quando uma solicitação de pull é feita por meio de branches e caminhos correspondentes. Saiba mais sobre eventos que disparam fluxos de trabalho.
  • Na seção de trabalhos do fluxo de trabalho, você faz check-out de 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 instalação que instala e configura a CLI do Machine Learning (v2). Depois que a CLI é instalada, a ação executar trabalho executa o arquivo pipeline.yml do Azure Machine Learning para treinar um modelo com os dados de táxi de NOVA YORK.

Habilitar 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 é semelhante a esse.

    Observação

    O arquivo de fluxo de trabalho no repositório pode incluir etapas adicionais (como inicialização e validação) não mostradas aqui. O exemplo a seguir mostra as etapas principais.

    name: cli-jobs-pipelines-nyc-taxi-pipeline
    on:
      workflow_dispatch:
      schedule:
        - cron: "0 0/4 * * *"
      pull_request:
        branches:
          - main
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    permissions:
      id-token: write
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v4
        - 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 os fluxos de trabalho selecionando Eu entendo meus fluxos de trabalho, prossiga e habilite-os.

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

    Captura de tela do fluxo de trabalho do GitHub Actions habilitado.

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

    Captura de tela do fluxo de trabalho em execução do GitHub Actions.

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

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

  2. Abra o Azure Machine Learning Studio e acesse nyc-taxi-pipeline-example. Verifique se cada parte do trabalho (preparação, transformação, treinamento, previsão, pontuação) foi concluída e se há uma marca de verificação verde.

    Captura de tela da execução bem-sucedida do Estúdio do Azure Machine Learning.

Limpar os recursos

Quando você não precisar mais do grupo de recursos e do repositório, limpe os recursos implantados excluindo o grupo de recursos e o repositório GitHub.

Próximas etapas