Share 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.

Este artigo ensinará como criar um fluxo de trabalho do GitHub Actions que cria e implanta um modelo de machine learning no Azure Machine Learning. Você treinará um modelo de regressão linear scikit-learn no conjunto de dados de táxi de NOVA YORK.

O GitHub Actions usa um arquivo YAML (.yml) de fluxo de trabalho no caminho /.github/workflows/ do 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

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

  • Uma conta do GitHub. Caso ainda não tenha uma, inscreva-se gratuitamente.

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, você precisará definir como autenticar com o Azure. Você pode usar uma entidade de serviço ou o OpenID Connect.

Gerar as credenciais de implantação

Crie uma entidade de serviço com o comando az ad sp create-for-rbac na CLI do Azure. Execute esse comando com o Azure Cloud Shell no portal do Azure ou selecionando o botão Experimentar.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

O parâmetro --json-auth está disponível nas versões da CLI do Azure >= 2.51.0. Versões anteriores a essa usam --sdk-auth com um aviso de substituição.

No exemplo acima, substitua os espaços reservados pela ID da assinatura, nome do grupo de recursos e nome do aplicativo. A saída é um objeto JSON com as credenciais de atribuição de função que fornecem acesso ao aplicativo do Serviço de Aplicativo semelhante ao mostrado abaixo. Copie esse objeto JSON para uso posterior.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Criar segredos

  1. No GitHub, acesse seu repositório.

  2. Acesse Configurações no menu de navegação.

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

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

  4. Selecione Novo segredo de repositório.

  5. Cole toda a saída JSON do comando da CLI do Azure no campo valor do segredo. Dê ao segredo o nome AZURE_CREDENTIALS.

  6. Selecione Adicionar segredo.

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

Será necessário atualizar as variáveis do arquivo de configuraçã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
    LOCALIZAÇÃO 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

Você usará um arquivo pipeline.yml para implantar seu pipeline do Azure Machine Learning. Trata-se de um pipeline de machine learning e não de DevOps. Você só precisará fazer essa atualização se estiver usando um nome diferente de cpu-cluster para o cluster de cálculo.

  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 cálculo. 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 o segredo da entidade de serviço.
  • 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 clonado, 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@v1
          with:
            creds: ${{secrets.AZURE_CREDENTIALS}}
        - 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 fluxo de trabalho cli-jobs-pipelines-nyc-taxi-pipeline e escolha Habilitar fluxo de trabalho. Captura de tela da ação habilitar fluxo de trabalho do GitHub Actions.

  5. Selecione Executar fluxo de trabalho e escolha a opção Executar fluxo de trabalho agora. Captura de tela da ação executar fluxo de trabalho 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 verificação verde ao lado do trabalho.

  2. Abra o Estúdio do Azure Machine Learning e navegue até o 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 seu grupo de recursos e repositório não forem mais necessários, limpe os recursos implantados excluindo o grupo de recursos e o repositório GitHub.

Próximas etapas