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.
- Uma conta GitHub. Se não tiver uma, inscreva-se gratuitamente.
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
- Crie um aplicativo Microsoft Entra com uma entidade de serviço pelo portal do Azure, CLI do Azure ou Azure PowerShell.
- Copie os valores para ID do cliente, ID da assinatura e ID do diretório (locatário) para usar posteriormente no fluxo de trabalho das Ações do GitHub.
- Atribua uma função apropriada à sua entidade de serviço pelo portal do Azure, CLI do Azure ou Azure PowerShell.
- Configure uma credencial de identidade federada em um aplicativo Microsoft Entra para confiar tokens emitidos pelo GitHub Actions em seu repositório GitHub.
Opção 2: Identidade gerenciada atribuída pelo usuário
- Crie uma identidade gerenciada atribuída pelo usuário.
- Copie os valores para ID do cliente, ID da assinatura e ID do diretório (locatário) para usar posteriormente no fluxo de trabalho das Ações do GitHub.
- Atribua uma função apropriada à sua identidade gerenciada atribuída pelo usuário.
- Configure uma credencial de identidade federada em uma identidade gerenciada atribuída pelo usuário para confiar tokens emitidos pelas Ações do GitHub em seu repositório do GitHub.
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.
No GitHub, vá para o seu repositório.
Selecione Segredos de Segurança > e Ações de variáveis>.
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.
Crie segredos para
AZURE_CLIENT_ID
,AZURE_TENANT_ID
eAZURE_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.
No repositório bifurcado, vá para
azureml-examples/cli/
.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.
- No repositório bifurcado, vá para
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
. - Sempre que vir
compute: azureml:cpu-cluster
o , atualize o valor de com o nome do cluster decpu-cluster
computação. Por exemplo, se o cluster for nomeadomy-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
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
Selecione Exibir execuções.
Habilite fluxos de trabalho selecionando Eu entendo meus fluxos de trabalho, vá em frente e habilite-os.
Selecione o fluxo de trabalho cli-jobs-pipelines-nyc-taxi-pipeline e escolha Ativar fluxo de trabalho.
Selecione Executar fluxo de trabalho e escolha a opção Executar fluxo de trabalho agora.
Etapa 6: Verificar a execução do fluxo de trabalho
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.
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.
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.