5. Integração contínua - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

5. Integração contínua

O sistema de ML executa testes para validar se o sistema funciona de ponta a ponta, verificando possíveis pontos de falha. Os testes são executados automaticamente na confirmação, e os testes mais longos são executados em um cronograma fixo. Os testes verificam as áreas tradicionais de engenharia de software, como no nível da unidade e do sistema. Além disso, os testes capturam os detalhes do ML verificando os dados, os recursos e o modelo.

5.1 Verificações de código local

Antes de enviar o código em um repositório de código centralizado, os desenvolvedores executam verificações locais, como testes básicos de unidade e análise estática. Executar essas verificações antes da confirmação aumenta a qualidade geral do código e detecta problemas antes que eles entrem no controle de versão.

5.2 Análise de código estático

O repositório central de código tem ferramentas de análise de código estático que são executadas rapidamente no commit. Essas ferramentas devem melhorar o estilo e a formatação do código. Ele também deve verificar vulnerabilidades de segurança comuns no código-fonte e de infraestrutura, bugs comuns e outras fraquezas no código.

5.3 Testes de qualidade de dados

Os testes de qualidade de dados devem, no mínimo, verificar se os dados não violaram um esquema fixo. Uma abordagem mais abrangente é computar estatísticas de dados no momento da ingestão, definir restrições sobre os dados e executar testes com base neles.

É possível configurar testes de qualidade de dados de forma independente ou como parte do pipeline. As estatísticas e restrições são reutilizadas para monitoramento.

5.4 Testes de recursos

Como parte de um pipeline completo, a importância do recurso é gerada. Os testes de recursos afirmam que a importância dos recursos, ou a forma do modelo de atribuir valores de recursos, não muda. Os testes de recursos podem alimentar o monitoramento porque podem alertar e rastrear violações nas entradas de um modelo.

5.5 Testes unitários

Os testes de unidade para todo o código — modelo, aplicativo e infraestrutura — são executados antes da confirmação e após a confirmação. Cada teste de unidade verifica uma parte importante do código para confirmar se ele funciona conforme o esperado. No caso do código ML, os testes podem ser executados para verificar a correção algorítmica.

5.6 Testes de integração

Um teste de integração verifica se o pipeline é executado de ponta a ponta com êxito, incluindo a instalação da infraestrutura associada ao pipeline. Esse teste valida se o sistema está funcionando e registrando conforme o esperado. Se a implantação for separada, também deve haver um teste completo para garantir que a implantação funcione.

5.7 Testes de fumaça

O sistema tem testes de fumaça que são executados em uma regressão pequena e rápida de cada peça de funcionalidade. Os testes de fumaça fazem parte da integração contínua e podem ser executados em um ambiente em contêiner para imitar a funcionalidade da nuvem.

5.8 Teste de carga

O teste de carga sob demanda está em vigor. Além de capturar como o sistema de ML se comporta sob cargas altas e baixas, os testes de carga fornecem estatísticas sobre a taxa de transferência ou latência em todo o sistema. Os dados coletados por meio de testes de carga fornecem informações sobre o tamanho dos recursos e as políticas de escalabilidade.

5.9 Testes funcionais do modelo

As saídas e entradas do modelo são executadas por meio de testes funcionais automatizados. Para verificar um comportamento dentro de um recurso, tanto as saídas quanto as entradas do modelo são testadas em dados reais ou falsos com exemplos básicos.

5.10 Testes de inferência de modelos com casos extremos

Como parte do teste mínimo de funcionalidade, os testes do modelo devem verificar o comportamento extremo, considerando determinadas entradas, antes da promoção do modelo. Isso coloca uma grade de proteção adicional para ajudar a evitar comportamentos inesperados.