Como testar a implantação de modelos de machine learning

Você está pronto para implantar! Se somente a implantação de um modelo fosse tão fácil quanto pressionar um grande botão vermelho. Durante a implantação, é recomendável executar, atualizar e exibir o pipeline sem problemas. Essas necessidades levam aos requisitos e soluções discutidos nesta página.

Atualizações de modelos de teste com treinamento reproduzível

Sem dúvida, você quer continuar melhorando o preditor de aparência do unicórnio. Digamos que você refatore o código de engenharia de atributos para o atributo "hora do dia". Como testar se o código está correto? Você decide treinar seu modelo novamente e ver se recebe o mesmo resultado. Ah, não, você acha que o treinamento do seu modelo não é reproduzível. Para continuar a prever as aparências dos unicórnios, você precisa investigar melhor. Para descobrir se você pode reproduzir o problema, siga estas etapas:

  • Semente de maneira determinística o gerador de números aleatórios (RNG). Para mais detalhes, consulte Aleatoria na geração de dados do curso Preparação de dados e Engenharia de atributos em ML.

  • Inicialize os componentes do modelo em ordem fixa para garantir que eles recebam o mesmo número aleatório do RNG em cada execução. As bibliotecas de ML geralmente processam esse requisito automaticamente.

  • Média de várias execuções do modelo.

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

Mesmo após seguir essas etapas, é possível ter outras fontes de não determinismo.

Como testar atualizações do modelo com especificações e chamadas de API

Depois de atualizar seu modelo para o Unicorn Predictor 2.0, você precisa testar o novo modelo para verificar a precisão algorítmica, além de todas as alterações para chamadas de API. Vamos falar sobre isso.

Como testar chamadas de API

Como testar atualizações de chamadas de API? Claro, você pode treinar novamente seu modelo, mas isso é demorado. Em vez disso, escreva um teste de unidade para gerar dados de entrada aleatórios e executar uma única etapa do gradiente descendente. Você quer que a etapa seja concluída sem erros de execução.

Como testar a correção algorítmica

Um modelo não precisa apenas prever corretamente, mas também fazer isso porque é algorítmico correto, não sorte. Por exemplo, se 99% dos e-mails não forem spam, a classificação de todos os e-mails como não spam será de 99% de precisão por acaso. Portanto, é necessário verificar se o modelo está correto usando algoritmos. Siga estas etapas:

  • Treine seu modelo por algumas iterações e verifique se a perda diminui.
  • Treinar seu algoritmo sem regularização. Se o modelo for complexo o suficiente, ele vai memorizar os dados de treinamento e a perda de treinamento será próxima de 0.
  • Teste subcomputações específicas do algoritmo. Por exemplo, é possível testar se uma parte da sua RNN é executada uma vez por elemento dos dados de entrada.

Criar testes de integração para componentes de pipeline

Em um pipeline de ML, mudanças em um componente podem causar erros em outros componentes. Verifique se os componentes funcionam juntos programando um teste que executa todo o pipeline de ponta a ponta. Esse tipo de teste é chamado de teste de integração.

Além de executar testes de integração continuamente, é necessário executar testes de integração ao enviar novos modelos e novas versões de software. A lentidão de executar todo o pipeline dificulta o teste de integração contínua. Para executar testes de integração mais rapidamente, treine em um subconjunto dos dados ou com um modelo mais simples. Os detalhes dependem do seu modelo e dos dados. Para ter uma cobertura contínua, ajuste os testes mais rápidos para que eles sejam executados com todas as novas versões de modelo ou software. Enquanto isso, os testes lentos seriam executados continuamente em segundo plano.

Valide a qualidade do modelo antes da exibição

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

  • Degradação repentina: um bug na nova versão pode causar uma qualidade significativamente menor. Verifique as qualidades das novas versões em comparação com a anterior.

  • Degradação lenta: o teste de degradação repentina pode não detectar uma degradação lenta na qualidade do modelo em várias versões. Em vez disso, verifique se as previsões do seu modelo em um conjunto de dados de validação atendem a um limite fixo. Se o conjunto de dados de validação apresentar um desvio dos dados ativos, atualize o conjunto de dados de validação e verifique se o modelo ainda atende ao mesmo limite de qualidade.

Validar a compatibilidade do modelo com infraestrutura antes da exibição

Se o modelo for atualizado mais rápido do que o servidor, ele terá dependências de software diferentes do servidor, o que pode causar incompatibilidades. Certifique-se de que as operações usadas pelo modelo estejam presentes no servidor organizando o modelo em uma versão no sandbox do servidor.