Fluxos de trabalho de integração contínua e entrega contínua para LUIS DevOps

Importante

O LUIS será aposentado em 1º de outubro de 2025 e a partir de 1º de abril de 2023 você não poderá criar novos recursos do LUIS. Recomendamos migrar seus aplicativos LUIS para o entendimento de linguagem conversacional para se beneficiar do suporte contínuo ao produto e dos recursos multilíngues.

Os engenheiros de software que estão desenvolvendo um aplicativo Language Understanding (LUIS) podem aplicar práticas de DevOps em relação ao controle do código-fonte, compilações automatizadas, testes e gerenciamento de versões. Este artigo descreve conceitos para implementar compilações automatizadas para LUIS.

Crie fluxos de trabalho de automação para o LUIS

CI workflows

Em seu sistema de gerenciamento de código-fonte (SCM), configure pipelines de compilação automatizados para serem executados nos seguintes eventos:

  1. Fluxo de trabalho de RP acionado quando uma solicitação pull (PR) é gerada. Esse fluxo de trabalho valida o conteúdo do PR antes que as atualizações sejam mescladas na ramificação principal.
  2. Fluxo de trabalho de CI/CD acionado quando as atualizações são enviadas por push para a ramificação principal, por exemplo, ao mesclar as alterações de um PR. Esse fluxo de trabalho garante a qualidade de todas as atualizações para a ramificação principal.

O fluxo de trabalho de CI/CD combina dois processos de desenvolvimento complementares:

  • A Integração Contínua (CI) é a prática de engenharia que frequentemente confirma código em um repositório compartilhado e executa uma compilação automatizada nele. Emparelhada com uma abordagem de teste automatizado, a integração contínua nos permite verificar que, para cada atualização, a fonte LUDown ainda é válida e pode ser importada para um aplicativo LUIS, mas também se passa por um grupo de testes que verificam se o aplicativo treinado pode reconhecer as intenções e entidades necessárias para sua solução.

  • A Entrega Contínua (CD) leva o conceito de Integração Contínua mais longe para implantar automaticamente o aplicativo em um ambiente onde você pode fazer testes mais aprofundados. O CD nos permite aprender cedo sobre quaisquer problemas imprevistos que surjam de nossas alterações o mais rápido possível, e também aprender sobre lacunas em nossa cobertura de teste.

O objetivo da integração contínua e entrega contínua é garantir que "o principal é sempre expedivel,". Para um aplicativo LUIS, isso significa que poderíamos, se necessário, pegar qualquer versão do aplicativo LUIS do ramo principal e enviá-lo em produção.

Ferramentas para fluxos de trabalho de automação de edifícios para LUIS

Gorjeta

Você pode encontrar uma solução completa para implementar DevOps no repositório de modelos LUIS DevOps.

Existem diferentes tecnologias de automação de compilação disponíveis para criar fluxos de trabalho de automação de compilação. Todos eles exigem que você possa executar etapas de script usando uma interface de linha de comando (CLI) ou chamadas REST para que eles possam ser executados em um servidor de compilação.

Use as seguintes ferramentas para fluxos de trabalho de automação de edifícios para LUIS:

O fluxo de trabalho de RP

Como mencionado, você configura esse fluxo de trabalho para ser executado quando um desenvolvedor gera uma RP para propor alterações a serem mescladas de uma ramificação de recurso para a ramificação principal. Seu objetivo é verificar a qualidade das mudanças no PR antes de serem fundidas ao ramo principal.

Este fluxo de trabalho deve:

  • Crie um aplicativo LUIS temporário importando a .lu fonte no PR.
  • Treine e publique a versão da aplicação LUIS.
  • Execute todos os testes de unidade contra ele.
  • Passe no fluxo de trabalho se todos os testes passarem, caso contrário, falhará.
  • Limpe e exclua o aplicativo temporário.

Se for suportado pelo SCM, configure as regras de proteção de ramificação para que esse fluxo de trabalho seja concluído com êxito antes que a RP possa ser concluída.

O fluxo de trabalho de CI/CD da filial principal

Configure esse fluxo de trabalho para ser executado depois que as atualizações na RP tiverem sido mescladas na ramificação principal. Seu objetivo é manter a barra de qualidade para o seu ramo principal alta, testando as atualizações. Se as atualizações atenderem à barra de qualidade, esse fluxo de trabalho implantará a nova versão do aplicativo LUIS em um ambiente onde você poderá fazer testes mais aprofundados.

Este fluxo de trabalho deve:

  • Crie uma nova versão em seu aplicativo LUIS principal (o aplicativo que você mantém para a ramificação principal) usando o código-fonte atualizado.

  • Treine e publique a versão da aplicação LUIS.

    Nota

    Conforme explicado em Executando testes em um fluxo de trabalho de compilação automatizado, você deve publicar a versão do aplicativo LUIS em teste para que ferramentas como NLU. O DevOps pode acessá-lo. O LUIS suporta apenas dois slots de publicação nomeados, preparação e produção para um aplicativo LUIS, mas você também pode publicar uma versão diretamente e consultar por versão. Use a publicação direta de versão em seus fluxos de trabalho de automação para evitar ser limitado ao uso dos slots de publicação nomeados.

  • Execute todos os testes de unidade.

  • Opcionalmente, execute testes em lote para medir a qualidade e a precisão da versão do aplicativo LUIS e compará-la com alguma linha de base.

  • Se os testes forem concluídos com sucesso:

    • Marque a fonte no repositório.
    • Execute o trabalho de Entrega Contínua (CD) para implantar a versão do aplicativo LUIS em ambientes para testes adicionais.

Entrega contínua (CD)

O trabalho de CD em um fluxo de trabalho de CI/CD é executado condicionalmente no sucesso da compilação e dos testes de unidade automatizados. Seu trabalho é implantar automaticamente o aplicativo LUIS em um ambiente onde você pode fazer mais testes.

Não há uma solução recomendada sobre a melhor forma de implantar seu aplicativo LUIS e você deve implementar o processo apropriado para seu projeto. O repositório de modelos LUIS DevOps implementa uma solução simples para isso, que é publicar a nova versão do aplicativo LUIS no slot de publicação de produção . Isso é bom para uma configuração simples. No entanto, se você precisar oferecer suporte a vários ambientes de produção diferentes ao mesmo tempo, como desenvolvimento, preparo e UAT, o limite de dois slots de publicação nomeados por aplicativo será insuficiente.

Outras opções para implantar uma versão do aplicativo incluem:

  • Deixe a versão do aplicativo publicada no ponto de extremidade da versão direta e implemente um processo para configurar ambientes de produção downstream com o ponto de extremidade da versão direta, conforme necessário.
  • Mantenha aplicativos LUIS diferentes para cada ambiente de produção e escreva etapas de automação para importar o para uma nova versão no aplicativo LUIS para o .lu ambiente de produção de destino, para treiná-lo e publicá-lo.
  • Exporte a versão testada do aplicativo LUIS para um contêiner docker LUIS e implante o contêiner LUIS em instâncias de contêiner do Azure.

Gestão de versões

Geralmente, recomendamos que você faça a entrega contínua apenas para seus ambientes que não são de produção, como desenvolvimento e preparação. A maioria das equipes requer um processo manual de revisão e aprovação para implantação em um ambiente de produção. Para uma implantação de produção, convém garantir que ela aconteça quando pessoas-chave da equipe de desenvolvimento estiverem disponíveis para suporte ou durante períodos de baixo tráfego.

Aplicar DevOps ao desenvolvimento de aplicativos LUIS usando ações do GitHub

Vá para o repositório de modelos LUIS DevOps para obter uma solução completa que implementa DevOps e práticas recomendadas de engenharia de software para LUIS. Você pode usar esse repositório de modelos para criar seu próprio repositório com suporte interno para fluxos de trabalho e práticas de CI/CD que permitem o controle do código-fonte, compilações automatizadas, testes e gerenciamento de versões com o LUIS para seu próprio projeto.

O repositório de modelos LUIS DevOps explica como:

  • Clone the template repo - Copie o modelo para seu próprio repositório GitHub.
  • Configurar recursos do LUIS - Crie os recursos de criação e previsão do LUIS no Azure que serão usados pelos fluxos de trabalho de integração contínua.
  • Configurar os fluxos de trabalho de CI/CD - Configure parâmetros para os fluxos de trabalho de CI/CD e armazene-os no GitHub Secrets.
  • Percorre o "loop interno do desenvolvedor" - O desenvolvedor faz atualizações em um aplicativo LUIS de exemplo enquanto trabalha em uma ramificação de desenvolvimento, testa as atualizações e, em seguida, gera uma solicitação pull para propor alterações e buscar aprovação de revisão.
  • Execute fluxos de trabalho de CI/CD - Execute fluxos de trabalho de integração contínua para criar e testar um aplicativo LUIS usando as Ações do GitHub.
  • Execute testes automatizados - Execute testes em lote automatizados para um aplicativo LUIS para avaliar a qualidade do aplicativo.
  • Implantar o aplicativo LUIS - Execute um trabalho de entrega contínua (CD) para publicar o aplicativo LUIS.
  • Use o repositório com seu próprio projeto - Explica como usar o repositório com seu próprio aplicativo LUIS.

Próximos passos