Sistemas de ML de produção: teste de implantação

Está tudo pronto para implantar o modelo que prevê a aparição de unicórnios! Durante a implantação, o pipeline de machine learning (ML) deve executar, atualizar e veicular sem problemas. Se a implantação de um modelo fosse tão fácil quanto pressionar um grande botão Deploy. Infelizmente, um sistema completo de machine learning exige testes para:

  • Validação de dados de entrada.
  • Validação da engenharia de atributos.
  • Validação da qualidade de novas versões de modelo.
  • Validação da infraestrutura de serviço.
  • Testar a integração entre componentes de pipeline.

Muitos engenheiros de software preferem o desenvolvimento orientado a testes (TDD, na sigla em inglês). No TDD, o software os engenheiros criam testes antes de criar a versão "real" o código-fonte. No entanto, o TDD pode ser complicado em machine learning. Por exemplo, antes de treinar o modelo, não é possível criar um teste para validar a perda. Em vez disso, é preciso primeiro descobrir a perda alcançável durante o o desenvolvimento e, em seguida, testar novas versões do modelo em relação à perda alcançável.

Sobre o modelo unicórnio

Esta seção se refere ao modelo unicórnio. Veja o que é necessário saber:

Você está usando machine learning para criar um modelo de classificação que prevê aparições de unicórnios. Seu conjunto de dados detalha 10.000 aparições de unicórnios e 10.000 aparições de unicórnios. O conjunto de dados contém o local, hora do dia, elevação, temperatura, umidade, cobertura de árvores, presença de arco-íris e vários outros recursos.

Testar atualizações de modelos com treinamento reproduzível

Talvez você queira continuar melhorando seu modelo unicórnio. Por exemplo, suponha você faz alguma engenharia de atributos adicional em um determinado atributo e depois retreinar o modelo, na esperança de melhores (ou pelo menos os mesmos) resultados. Infelizmente, às vezes é difícil reproduzir o treinamento de modelo. Para melhorar a reprodutibilidade, siga estas recomendações:

  • Propagar deterministamente o gerador de números aleatórios. Para mais detalhes, consulte Ordem aleatória nos dados geração.

  • Inicialize os componentes do modelo em uma ordem fixa para garantir que eles recebam o o mesmo número aleatório do gerador de números aleatórios em todas as execuções. As bibliotecas de ML normalmente lidam com esse requisito de modo automático.

  • Pegue a média de várias execuções do modelo.

  • Use o controle de versões, mesmo para iterações preliminares, para que seja possível identificar códigos e parâmetros ao investigar seu modelo ou pipeline.

Mesmo depois de seguir essas diretrizes, outras fontes de não determinismo podem ainda existem.

Chamadas de teste para a API de machine learning

Como testar atualizações em chamadas de API? É possível treinar o modelo de novo, que exige muito tempo. Em vez disso, programe um teste de unidade para gerar dados de entrada aleatórios. e executar uma única etapa do gradiente descendente. Se esta etapa for concluída sem erros, as atualizações na API provavelmente não prejudicaram o modelo.

Criar testes de integração para componentes de pipeline

Em um pipeline de ML, as alterações em um componente podem causar erros em outros componentes de solução. Verifique se os componentes funcionam juntos escrevendo uma Teste de integração que executa todo o pipeline de ponta a ponta.

Além de executar testes de integração continuamente, você deve executar testes de integração ao lançar novos modelos e versões de software. A lentidão da execução pipeline inteiro, dificultando o teste de integração contínua. Executar a integração testes mais rápidos, treine com um subconjunto dos dados ou com um modelo mais simples. Detalhes dependem do modelo e dos dados. Para ter cobertura contínua, ajuste a configuração testes mais rápidos para que sejam executados com cada nova versão de modelo ou software. Enquanto isso, os testes lentos são executados continuamente em segundo plano.

Validar a qualidade do modelo antes da disponibilização

Antes de enviar uma nova versão do modelo para produção, teste estes dois tipos de degradação de qualidade:

  • Degradação repentina. Um bug na nova versão pode causar significativamente qualidade inferior. Valide novas versões verificando a qualidade delas em relação à versão anterior.

  • Degradação lenta. Seu teste de degradação repentina pode não detectar uma lentidão degradação na qualidade do modelo em várias versões. Em vez disso, garanta previsões do modelo em um conjunto de dados de validação atingem um limite fixo. Se as o conjunto de dados de validação se desvia dos dados reais e, em seguida, atualize sua validação e garantir que o modelo ainda atenda ao mesmo limite de qualidade.

Validar a compatibilidade da infraestrutura de modelo antes da disponibilização

Se o modelo for atualizado mais rápido do que o servidor, ele poderá dependências de software diferentes do seu servidor, o que pode causar incompatibilidades. Garantir que as operações usadas pelo modelo estejam presentes o servidor testando o modelo em uma versão do servidor em sandbox.