Partilhar via


Configurar MLOps com o Azure DevOps

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

O Azure Machine Learning permite que você se integre ao pipeline do Azure DevOps para automatizar o ciclo de vida do aprendizado de máquina. Algumas das operações que você pode automatizar são:

  • Implantação da infraestrutura do Azure Machine Learning
  • Preparação de dados (operações de extração, transformação, carga)
  • Treinamento de modelos de aprendizado de máquina com scale-out e scale-up sob demanda
  • Implementação de modelos de aprendizagem automática como serviços Web públicos ou privados
  • Monitoramento de modelos de aprendizado de máquina implantados (como para análise de desempenho)

Neste artigo, você aprenderá a usar o Aprendizado de Máquina do Azure para configurar um pipeline de MLOps de ponta a ponta que executa uma regressão linear para prever tarifas de táxi em Nova York. O pipeline é composto por componentes, cada um servindo funções diferentes, que podem ser registrados no espaço de trabalho, versionados e reutilizados com várias entradas e saídas. você usará a arquitetura recomendada do Azure para MLOps e o acelerador de solução AzureMLOps (v2) para configurar rapidamente um projeto MLOps no Azure Machine Learning.

Gorjeta

Recomendamos que você entenda algumas das arquiteturas recomendadas do Azure para MLOps antes de implementar qualquer solução. Você precisará escolher a melhor arquitetura para seu projeto de aprendizado de máquina.

Pré-requisitos

Nota

É necessária a versão 2.27 ou mais recente do Git. Para obter mais informações sobre como instalar o comando Git, consulte https://git-scm.com/downloads e selecione seu sistema operacional

Importante

Os comandos da CLI neste artigo foram testados usando Bash. Se você usar um shell diferente, poderá encontrar erros.

Configurar a autenticação com o Azure e o DevOps

Antes de configurar um projeto MLOps com o Azure Machine Learning, você precisa configurar a autenticação para o Azure DevOps.

Criar um principal de serviço

Para o uso da demonstração, é necessária a criação de um ou dois princípios de serviço, dependendo de quantos ambientes você deseja trabalhar (Dev ou Prod ou ambos). Esses princípios podem ser criados usando um dos seguintes métodos:

  1. Inicie o Azure Cloud Shell.

    Gorjeta

    Na primeira vez que você iniciar o Cloud Shell, você será solicitado a criar uma conta de armazenamento para o Cloud Shell.

  2. Se solicitado, escolha Bash como o ambiente usado no Cloud Shell. Você também pode alterar ambientes na lista suspensa na barra de navegação superior

    Captura de tela do menu suspenso do ambiente de shell de nuvem.

  3. Copie os seguintes comandos bash para o seu computador e atualize as variáveis projectName, subscriptionId e environment com os valores para o seu projeto. Se você estiver criando um ambiente Dev e Prod, precisará executar esse script uma vez para cada ambiente, criando uma entidade de serviço para cada um. Esse comando também concederá a função de Colaborador à entidade de serviço na assinatura fornecida. Isso é necessário para que o Azure DevOps use corretamente os recursos nessa assinatura.

    projectName="<your project name>"
    roleName="Contributor"
    subscriptionId="<subscription Id>"
    environment="<Dev|Prod>" #First letter should be capitalized
    servicePrincipalName="Azure-ARM-${environment}-${projectName}"
    # Verify the ID of the active subscription
    echo "Using subscription ID $subscriptionID"
    echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes     /subscriptions/$subscriptionId"
    az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionId
    echo "Please ensure that the information created here is properly save for future use."
    
  4. Copie seus comandos editados para o Shell do Azure e execute-os (Ctrl + Shift + v).

  5. Depois de executar esses comandos, você receberá informações relacionadas à entidade de serviço. Salve essas informações em um local seguro, elas serão usadas posteriormente na demonstração para configurar o Azure DevOps.

    {
       "appId": "<application id>",
       "displayName": "Azure-ARM-dev-Sample_Project_Name",
       "password": "<password>",
       "tenant": "<tenant id>"
    }
    
  6. Repita a Etapa 3 se estiver criando entidades de serviço para ambientes Dev e Prod. Para esta demonstração, criaremos apenas um ambiente, que é o Prod.

  7. Feche o Cloud Shell assim que as entidades de serviço forem criadas.

Configurar o Azure DevOps

  1. Navegue até Azure DevOps.

  2. Selecione criar um novo projeto (Nomeie o projeto mlopsv2 para este tutorial).

    Screenshot do ADO Project.

  3. No projeto, em Configurações do Projeto (no canto inferior esquerdo da página do projeto), selecione Conexões de Serviço.

  4. Selecione Criar conexão de serviço.

    Captura de tela do botão de conexão ADO New Service.

  5. Selecione Azure Resource Manager, selecione Next, selecione Service principal (manual), selecione Next e selecione a Scope Level Subscription.

    • Nome da Subscrição - Utilize o nome da subscrição onde a entidade de serviço está armazenada.
    • ID da Subscrição - Utilize a introdução utilizada subscriptionId no Passo 1 como ID de Subscrição
    • ID da entidade de serviço - Use a appId saída da etapa 1 como a ID da entidade de serviço
    • Chave da entidade de serviço - Use a password saída da Etapa 1 como a chave da entidade de serviço
    • ID do Locatário - Use a tenant saída da Etapa 1 como a ID do Locatário
  6. Nomeie a conexão de serviço Azure-ARM-Prod.

  7. Selecione Conceder permissão de acesso a todos os pipelines e, em seguida, selecione Verificar e Salvar.

A instalação do Azure DevOps foi concluída com êxito.

Configurar o repositório de origem com o Azure DevOps

  1. Abra o projeto criado no Azure DevOps

  2. Abra a seção Repos e selecione Importar repositório

    Captura de tela do repositório de importação do Azure DevOps pela primeira vez.

  3. Entre https://github.com/Azure/mlops-v2-ado-demo no campo URL do clone. Selecione importar na parte inferior da página

    Captura de tela do repositório de demonstração de importação MLOps do Azure DevOps.

  4. Abra as configurações do Project na parte inferior do painel de navegação esquerdo

  5. Na seção Repos, selecione Repositórios. Selecione o repositório que você criou na etapa anterior Selecione a guia Segurança

  6. Na seção Permissões de usuário, selecione o usuário do Serviço de Compilação mlopsv2. Altere a permissão Contribuir para Permitir e a permissão Criar ramificação para Permitir. Captura de tela das permissões do Azure DevOps.

  7. Abra a seção Pipelines no painel de navegação esquerdo e selecione os 3 pontos verticais ao lado do botão Create Pipelines . Selecione Gerenciar Segurança

    Captura de tela da segurança do Pipeline.

  8. Selecione a conta do Serviço de Compilação mlopsv2 para seu projeto na seção Usuários. Altere a permissão Editar pipeline de compilação para Permitir

    Captura de ecrã de Adicionar segurança.

Nota

Isso conclui a seção de pré-requisitos e a implantação do acelerador de solução pode acontecer de acordo.

Implantando a infraestrutura por meio do Azure DevOps

Esta etapa implanta o pipeline de treinamento no espaço de trabalho do Azure Machine Learning criado nas etapas anteriores.

Gorjeta

Certifique-se de entender os padrões de arquitetura do acelerador de solução antes de fazer checkout do repositório MLOps v2 e implantar a infraestrutura. Em exemplos, você usará o tipo de projeto ML clássico.

Executar pipeline de infraestrutura do Azure

  1. Vá para o repositório mlops-v2-ado-demoe selecione o arquivo config-infra-prod.yml .

    Importante

    Certifique-se de ter selecionado a ramificação principal do repositório.

    Screenshot do Repo no ADO.

    Esse arquivo de configuração usa o namespace e o postfix valoriza os nomes dos artefatos para garantir exclusividade. Atualize a seção a seguir na configuração ao seu gosto.

     namespace: [5 max random new letters]
     postfix: [4 max random new digits]
     location: eastus
    

    Nota

    Se você estiver executando uma carga de trabalho do Deep Learning, como CV ou NLP, verifique se a computação da GPU está disponível na zona de implantação.

  2. Selecione Confirmar e enviar código para colocar esses valores no pipeline.

  3. Ir para a seção Pipelines

    Captura de tela de ADO Pipelines.

  4. Selecione Criar Pipeline.

  5. Selecione Azure Repos Git.

    Captura de tela do ADO Onde está seu código.

  6. Selecione o repositório clonado na seção anterior mlops-v2-ado-demo

  7. Selecione o arquivo YAML do Azure Pipelines existente

    Captura de tela da página do Pipeline de DevOps do Azure na etapa de configuração.

  8. Selecione a main ramificação e escolha mlops/devops-pipelines/cli-ado-deploy-infra.ymle, em seguida, selecione Continuar.

  9. Executar o pipeline; levará alguns minutos para terminar. O pipeline deve criar os seguintes artefatos:

    • Grupo de Recursos para seu Espaço de Trabalho, incluindo Conta de Armazenamento, Registro de Contêiner, Application Insights, Keyvault e o próprio Espaço de Trabalho do Azure Machine Learning.
    • No espaço de trabalho, também há um cluster de computação criado.
  10. Agora a infraestrutura para seu projeto MLOps está implantada. Screenshot do ecrã ADO Infra Pipeline.

    Nota

    Os avisos Não é possível mover e reutilizar o repositório existente para o local necessário podem ser ignorados.

Exemplo de cenário de treinamento e implantação

O acelerador de solução inclui código e dados para um pipeline de aprendizado de máquina de ponta a ponta de amostra que executa uma regressão linear para prever as tarifas de táxi em Nova York. O pipeline é composto por componentes, cada um servindo funções diferentes, que podem ser registrados no espaço de trabalho, versionados e reutilizados com várias entradas e saídas. Pipelines e fluxos de trabalho de exemplo para os cenários de Visão Computacional e PNL terão etapas e etapas de implantação diferentes.

Este pipeline de treinamento contém as seguintes etapas:

Preparar dados

  • Este componente usa vários conjuntos de dados de táxi (amarelo e verde) e mescla/filtra os dados, além de preparar os conjuntos de dados de trem/val e avaliação.
  • Entrada: Dados locais em ./data/ (vários arquivos .csv)
  • Saída: Conjunto de dados único preparado (.csv) e conjuntos de dados de comboio/val/teste.

Modelo de comboio

  • Este componente treina um Regressor Linear com o conjunto de treinamento.
  • Entrada: Conjunto de dados de treinamento
  • Saída: Modelo treinado (formato pickle)

Avaliar modelo

  • Este componente usa o modelo treinado para prever as tarifas de táxi no conjunto de teste.
  • Entrada: modelo de ML e conjunto de dados de teste
  • Saída: Desempenho do modelo e um sinalizador de implantação para implantação ou não.
  • Este componente compara o desempenho do modelo com todos os modelos implantados anteriores no novo conjunto de dados de teste e decide se o modelo deve ser promovido ou não para a produção. A promoção do modelo para a produção acontece registrando o modelo no espaço de trabalho AML.

Modelo de registo

  • Este componente pontua o modelo com base na precisão das previsões no conjunto de testes.
  • Entrada: Modelo treinado e o sinalizador deploy.
  • Saída: Modelo registrado no Azure Machine Learning.

Implantando o pipeline de treinamento do modelo

  1. Ir para pipelines ADO

    Captura de tela de ADO Pipelines.

  2. Selecione Novo Pipeline.

    Captura de tela do botão ADO New Pipeline.

  3. Selecione Azure Repos Git.

    Captura de tela do ADO Onde está seu código.

  4. Selecione o repositório clonado na seção anterior mlopsv2

  5. Selecione o arquivo YAML do Azure Pipelines existente

    Captura de tela da página ADO Pipeline na etapa de configuração.

  6. Selecione main como uma ramificação e escolha /mlops/devops-pipelines/deploy-model-training-pipeline.ymle, em seguida, selecione Continuar.

  7. Salvar e executar o pipeline

Nota

Neste ponto, a infraestrutura é configurada e o loop de prototipagem da arquitetura MLOps é implantado. Você está pronto para mudar para o nosso modelo treinado para a produção.

Implantando o modelo treinado

Esse cenário inclui fluxos de trabalho pré-criados para duas abordagens para implantar um modelo treinado, pontuação em lote ou implantação de um modelo em um ponto de extremidade para pontuação em tempo real. Você pode executar um ou ambos esses fluxos de trabalho para testar o desempenho do modelo em seu espaço de trabalho do Azure ML. Neste exemplo, usaremos a pontuação em tempo real.

Implantar ponto de extremidade do modelo de ML

  1. Ir para pipelines ADO

    Captura de tela de ADO Pipelines.

  2. Selecione Novo Pipeline.

    Captura de tela do botão ADO New Pipeline para endpoint.

  3. Selecione Azure Repos Git.

    Captura de tela do ADO Onde está seu código.

  4. Selecione o repositório clonado na seção anterior mlopsv2

  5. Selecione o arquivo YAML do Azure Pipelines existente

    Captura de tela da página do Pipeline de DevOps do Azure na etapa de configuração.

  6. Selecione main como uma ramificação e escolha Managed Online Endpoint /mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml e, em seguida, selecione Continuar.

  7. Os nomes de pontos finais online precisam ser exclusivos, portanto, mude taxi-online-$(namespace)$(postfix)$(environment) para outro nome exclusivo e selecione Executar. Não há necessidade de alterar o padrão se ele não falhar.

    Captura de tela do script de implantação em lote do Azure DevOps.

    Importante

    Se a execução falhar devido a um nome de ponto de extremidade online existente, recrie o pipeline conforme descrito anteriormente e altere [seu nome do ponto de extremidade] para [seu nome do ponto de extremidade (número aleatório)]

  8. Quando a execução for concluída, você verá uma saída semelhante à imagem a seguir:

    Captura de tela da página de resultados da execução em lote do ADO Pipeline.

  9. Para testar essa implantação, vá para a guia Pontos de extremidade em seu espaço de trabalho AzureML, selecione o ponto de extremidade e clique na guia Teste . Você pode usar os dados de entrada de exemplo localizados no repositório clonado em /data/taxi-request.json para testar o ponto de extremidade.

Clean up resources (Limpar recursos)

  1. Se você não vai continuar a usar seu pipeline, exclua seu projeto do Azure DevOps.
  2. No portal do Azure, exclua seu grupo de recursos e a instância do Azure Machine Learning.

Próximos passos