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

  • 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. 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 para fazer login com 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

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 clonado, acesse azureml-examples/cli/.

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

    Variável Descrição
    GRUPO nome do grupo de recursos
    LOCALIZAÇÃO Local do seu workspace (exemplo: eastus2)
    ÁREA DE TRABALHO Nome do workspace do Azure Machine Learning

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

Use um arquivo pipeline.yml 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 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 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 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@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 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 seleçã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