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. Treinas um modelo de regressão linear com o scikit-learn no conjunto de dados de táxi de Nova Iorque.

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

Pré-requisitos

  • Uma área de trabalho do Azure Machine Learning. Para conhecer as etapas de criação de um espaço de trabalho, consulte Criar o espaço de trabalho.

  • 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 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 Biblioteca de cliente do Pacote do Azure Machine Learning para Python.

Passo 1: Obter o código

Fork o seguinte repo no GitHub:

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

Clone o seu repositório derivado localmente.

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

Etapa 2: Autenticar com o Azure

Primeiro, defina como autenticar com Azure. A opção recomendada e mais segura é iniciar sessão usando o OpenID Connect com uma aplicação Microsoft Entra ou uma identidade gerida atribuída pelo utilizador. Se necessário, também pode usar iniciar sessão usando um princípio e segredo do serviço. Esta abordagem é menos segura e não é recomendada.

Gerar credenciais de implantação

Para usar a ação de Login do Azure com OIDC, você precisa configurar uma credencial de identidade federada numa aplicação Microsoft Entra ou uma identidade gerida atribuída pelo utilizador.

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, ID do diretório (locatário) e a ID de subscrição 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 Segurança > Segredos e variáveis > Ações.

    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

Atualiza as variáveis do ficheiro de configuração da CLI para corresponderem ao teu 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 Descrição
    GROUP Nome do grupo de recursos
    LOCATION Localização do espaço de trabalho (exemplo: eastus2)
    WORKSPACE Nome do espaço de trabalho do Azure Machine Learning

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

Utilize um pipeline.yml arquivo para implementar o seu pipeline do Azure Machine Learning. O pipeline é um pipeline de aprendizado de máquina e não um pipeline de DevOps. Só precisas de fazer esta atualização se estiveres a usar um nome diferente do cpu-cluster nome do teu cluster de computação.

  1. No repositório bifurcado, vá para 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 seu cluster de 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 inicia o fluxo de trabalho na seção on. 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 secção de empregos do fluxo de trabalho, verifica o código e inicia sessão no Azure com a ação de login 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 teu repositório bifurcado, abre .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml e verifica se o teu fluxo de trabalho é semelhante a este.

    Nota

    O ficheiro de workflow no repositório pode incluir passos adicionais (como arranque e validação) que não são apresentados aqui. O exemplo seguinte mostra os passos 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 Ver execuções.

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

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

    Captura de tela do fluxo de trabalho de ativação das Ações do GitHub.

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

    Captura de tela do executar o fluxo de trabalho das 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á um visto verde ao lado da tarefa.

  2. Abra o Azure Machine Learning Studio e vá a nyc-taxi-pipeline-example. 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.

Limpar recursos

Quando já não precisares do teu grupo de recursos e repositório, limpa os recursos que implementaste eliminando o grupo de recursos e o teu repositório no GitHub.

Próximos passos