Share via


Configurar MLOps com o Azure DevOps

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

O Azure Machine Learning permite a integração com o pipeline do Azure DevOps para automatizar o ciclo de vida do machine learning. 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 extrair, transformar, carregar)
  • Treinar modelos de machine learning com expansão e escala vertical sob demanda
  • Implantação de modelos de machine learning como serviços Web públicos ou privados
  • Monitoramento de modelos de machine learning implantados (como para análise de desempenho)

Neste artigo, você aprenderá a usar o Azure Machine Learning para configurar um pipeline de MLOps de ponta a ponta que executa uma regressão linear para prever tarifas de táxi em NYC. O pipeline é feito por componentes, cada um atuando em funções diferentes, os quais podem ser registrados com o workspace, com controle de versão e reutilizados com várias entradas e saídas. Você usará a arquitetura recomendada do Azure para MLOps e o acelerador de solução do AzureMLOps (v2) para configurar rapidamente um projeto de MLOps no Azure Machine Learning.

Dica

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

Observação

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

Importante

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

Configurar a autenticação com o Azure e DevOps

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

Criar uma entidade de serviço

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

  1. Iniciar o Azure Cloud Shell.

    Dica

    Na primeira vez que 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 os ambientes na lista suspensa na barra de navegação superior

    Screenshot of the cloud shell environment dropdown.

  3. Copie os comandos bash a seguir para o computador e atualize as variáveis projectName, subscriptionId e environment com os valores do projeto. Se você estiver criando um ambiente de Desenvolvimento e Produção, 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 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 os comandos editados no Azure Shell e execute-os (Ctrl + Shift + v).

  5. Depois de executar esses comandos, você verá as 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 você estiver criando entidades de serviço para ambientes de Desenvolvimento e Produção. Para essa demonstração, criaremos apenas um ambiente, que é o Prod.

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

Configurar o Azure DevOps

  1. Navegue até o Azure DevOps.

  2. Selecione Criar um novo projeto (nomeie o projeto mlopsv2 para este tutorial).

    Screenshot of ADO Project.

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

  4. Selecione Criar Conexão de Serviço.

    Screenshot of ADO New Service connection button.

  5. Selecione Azure Resource Manager, Avançar, Entidade de serviço (manual), Avançar e a Assinatura no Nível do Escopo.

    • Nome da Assinatura – use o nome da assinatura em que sua entidade de serviço está armazenada.
    • ID da Assinatura – Use a entrada subscriptionId usada na Etapa 1 como a ID da Assinatura
    • ID da Entidade de Serviço – Use o appId da saída da Etapa 1 como a ID da Entidade de Serviço
    • Chave da Entidade de Serviço – Use o password da saída da Etapa 1 como a Chave da Entidade de Serviço
    • ID do Locatário – Use o tenant da 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 configuração do Azure DevOps foi concluída com êxito.

Configurar o repositório de origem com o Azure DevOps

  1. Abra o projeto que você criou no Azure DevOps

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

    Screenshot of Azure DevOps import repo first time.

  3. Insira https://github.com/Azure/mlops-v2-ado-demo no campo Clonar URL. Selecione Importar na parte inferior da página

    Screenshot of Azure DevOps import MLOps demo repo.

  4. Abra as Configurações do projeto 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 mlopsv2 Build Service. Altere a permissão Contribuir para Permitir e a permissão Criar branch para Permitir. Screenshot of Azure DevOps permissions.

  7. Abra a seção Pipelines no painel de navegação à esquerda e selecione os três pontos verticais ao lado do botão Criar Pipelines. Selecione Gerenciar Segurança

    Screenshot of Pipeline security.

  8. Selecione a conta do mlopsv2 Build Service para seu projeto na seção Usuários. Alterar a permissão Editar pipeline de build para Permitir

    Screenshot of Add security.

Observação

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

Implantação da infraestrutura por meio do Azure DevOps

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

Dica

Entenda os Padrões de Arquitetura do acelerador de solução, antes de fazer check-out do repositório de MLOps v2 e implantar a infraestrutura. Em exemplos, você usará o tipo de projeto de ML clássico.

Executar o pipeline de infraestrutura do Azure

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

    Importante

    Verifique se você selecionou a ramificação principal do repositório.

    Screenshot of Repo in ADO.

    Esse arquivo de configuração usa o namespace e os valores pós-fixados dos nomes dos artefatos para garantir a exclusividade. Atualize a seção a seguir na configuração conforme desejar.

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

    Observação

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

  2. Selecione Confirmar e envie o código para obter esses valores no pipeline.

  3. Ir para a seção Pipelines

    Screenshot of ADO Pipelines.

  4. Selecione Criar pipeline.

  5. Selecionar Git do Azure Repos.

    Screenshot of ADO Where's your code.

  6. Selecione o repositório que você clonou na seção anterior mlops-v2-ado-demo

  7. Selecione Arquivo YAML do Azure Pipelines existente

    Screenshot of Azure DevOps Pipeline page on configure step.

  8. Selecione o branch main e escolha mlops/devops-pipelines/cli-ado-deploy-infra.yml e, em seguida, selecione Continuar.

  9. Execute o pipeline. Isso levará alguns minutos para ser concluído. O pipeline deve criar os seguintes artefatos:

    • Grupo de recursos para seu workspace, incluindo conta de armazenamento, registro de contêiner, Application Insights, Keyvault e o próprio Workspace do Azure Machine Learning.
    • No workspace, um cluster de computação também foi criado.
  10. Agora, a infraestrutura do projeto de MLOps foi implantada. Screenshot of ADO Infra Pipeline screen.

    Observação

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

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

O acelerador de solução inclui um código e dados para um pipeline de machine learning de ponta a ponta que executa uma regressão linear para prever as tarifas de táxi em Nova York. O pipeline é feito por componentes, cada um atuando em funções diferentes, os quais podem ser registrados com o workspace, com controle de versão e reutilizados com várias entradas e saídas. Os exemplos de pipelines e fluxos de trabalho para os cenários de Pesquisa Visual Computacional e NLP terão etapas e etapas de implantação diferentes.

Este pipeline de treinamento contém as seguintes etapas:

Preparar os Dados

  • Este componente usa vários conjuntos de dados de táxi (amarelo e verde) e mescla/filtra os dados e prepara os conjuntos de dados de treinamento/val e avaliação.
  • Entrada: dados locais em ./data/ (vários arquivos .csv)
  • Saída: um único conjunto de dados preparado (.csv) e conjuntos de dados de train/val/test.

Treinar Modelo

  • 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 testes.
  • Entrada: modelo de ML e conjunto de dados de teste
  • Saída: desempenho do modelo e um sinalizador de implantação, seja para implantar ou não.
  • Este componente compara o desempenho do modelo com todos os modelos implantados anteriormente no novo conjunto de dados de teste e decide se deseja promover o modelo para produção. A promoção do modelo para produção ocorre registrando o modelo no workspace do AML.

Registrar Modelo

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

Implantação do pipeline de treinamento de modelo

  1. Ir para os pipelines do ADO

    Screenshot of ADO Pipelines.

  2. Selecione Novo Pipeline.

    Screenshot of ADO New Pipeline button.

  3. Selecionar Git do Azure Repos.

    Screenshot of ADO Where's your code.

  4. Selecione o repositório que você clonou na seção anterior mlopsv2

  5. Selecione Arquivo YAML do Azure Pipelines existente

    Screenshot of ADO Pipeline page on configure step.

  6. Selecione main como branch e escolha /mlops/devops-pipelines/deploy-model-training-pipeline.yml e, em seguida, selecione Continuar.

  7. Salve e execute o pipeline

Observação

Neste ponto, a infraestrutura foi configurada e o Loop de Prototipagem da Arquitetura de MLOps foi implantado. Você está pronto para passar para o nosso modelo treinado para a produção.

Implantação do modelo treinado

Este cenário inclui fluxos de trabalho predefinidos para duas abordagens de implantação de um modelo treinado, uma pontuação em lote ou uma implantação de um modelo em um ponto de extremidade para pontuação em tempo real. Você pode executar um ou ambos os fluxos de trabalho para testar o desempenho do modelo no workspace do Azure ML. Neste exemplo, usaremos a pontuação em tempo real.

Implantar ponto de extremidade do modelo de ML

  1. Ir para os pipelines do ADO

    Screenshot of ADO Pipelines.

  2. Selecione Novo Pipeline.

    Screenshot of ADO New Pipeline button for endpoint.

  3. Selecionar Git do Azure Repos.

    Screenshot of ADO Where's your code.

  4. Selecione o repositório que você clonou na seção anterior mlopsv2

  5. Selecione Arquivo YAML do Azure Pipelines existente

    Screenshot of Azure DevOps Pipeline page on configure step.

  6. Selecione main como um branch e escolha Ponto de Extremidade Online Gerenciado /mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml e, em seguida, selecione Continuar.

  7. Os nomes do ponto de extremidade online precisam ser exclusivos, portanto, altere taxi-online-$(namespace)$(postfix)$(environment) para outro nome exclusivo e selecione Executar. Não será necessário alterar o padrão se ele não falhar.

    Screenshot of Azure DevOps batch deploy script.

    Importante

    Se a execução falhar devido a um nome de ponto de extremidade online existente, recrie o pipeline conforme descrito anteriormente e altere [your endpoint-name] para [your endpoint-name (random number)]

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

    Screenshot of ADO Pipeline batch run result page.

  9. Para testar essa implantação, acesse a guia Pontos de Extremidade no workspace do AzureML, selecione o ponto de extremidade e clique na Guia Teste. Use os exemplos de dados de entrada localizados no repositório clonado em /data/taxi-request.json para testar o ponto de extremidade.

Limpar recursos

  1. Se você não quiser 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óximas etapas