Está tudo pronto para implantar o modelo de unicórnio que prevê as aparições de unicórnios. Ao implantar, o pipeline de machine learning (ML) precisa ser executado, atualizado e disponibilizado 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.
- Validar a engenharia de atributos.
- Validar a qualidade das novas versões do modelo.
- Validar a infraestrutura de disponibilizaçã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, os engenheiros de software escrevem testes antes de escrever o código-fonte "real". No entanto, o TDD pode ser complicado no machine learning. Por exemplo, antes de treinar o modelo, não é possível escrever um teste para validar a perda. Em vez disso, primeiro descubra a perda alcançável durante o desenvolvimento do modelo e depois teste novas versões do modelo com base na perda alcançável.
Sobre o modelo de unicórnio
Esta seção se refere ao modelo unicórnio. Veja o que é necessário saber:
Você está usando o aprendizado de máquina para criar um modelo de classificação que prevê a aparência de unicórnios. Seu conjunto de dados detalha 10.000 aparições de unicórnios e 10.000 não aparições de unicórnios. O conjunto de dados contém o local, o horário, a elevação, a temperatura, a umidade, a cobertura de árvores, a presença de um arco-íris e vários outros recursos.
Testar atualizações de modelo com treinamento reproduzível
Talvez você queira continuar melhorando seu modelo de unicórnio. Por exemplo, suponha que você faça uma engenharia de atributos adicional em um determinado atributo e, em seguida, retraine o modelo, esperando ter resultados melhores (ou pelo menos iguais). Às vezes, é difícil reproduzir o treinamento do modelo. Para melhorar a reprodutibilidade, siga estas recomendações:
Gerar uma semente determinística para o gerador de números aleatórios. Para mais detalhes, consulte Randomização na geração de dados.
Inicialize os componentes do modelo em uma ordem fixa para garantir que os componentes recebam o mesmo número aleatório do gerador de números aleatórios em cada execução. As bibliotecas de ML geralmente processam esse requisito automaticamente.
Calcule a média de várias execuções do modelo.
Use o controle de versão, mesmo para iterações preliminares, para identificar o código e os parâmetros ao investigar seu modelo ou pipeline.
Mesmo depois de seguir essas diretrizes, outras fontes de não determinismo ainda podem existir.
Testar chamadas para a API Machine Learning
Como testar atualizações de chamadas de API? Você pode treinar seu modelo novamente, mas isso leva muito tempo. Em vez disso, crie um teste de unidade para gerar dados de entrada aleatórios e execute uma única etapa de gradiente descendente. Se essa etapa for concluída sem erros, as atualizações da API provavelmente não terão arruinado seu modelo.
Criar testes de integração para componentes de pipeline
Em um pipeline de ML, as mudanças em um componente podem causar erros em outros. Verifique se os componentes funcionam juntos escrevendo um teste de integração que executa todo o pipeline de ponta a ponta.
Além de executar testes de integração continuamente, você precisa executar testes de integração ao enviar novos modelos e novas versões de software. A lentidão da execução de todo o pipeline dificulta os testes de integração contínua. Para executar testes de integração mais rapidamente, treine com um subconjunto dos dados ou com um modelo mais simples. Os detalhes dependem do modelo e dos dados. Para ter cobertura contínua, ajuste seus testes mais rápidos para que sejam executados com cada nova versão do modelo ou software. Enquanto isso, seus testes lentos seriam executados continuamente em segundo plano.
Validar a qualidade do modelo antes da veiculação
Antes de enviar uma nova versão do modelo para produção, teste os dois tipos de degradação de qualidade a seguir:
Degradação repentina. Um bug na nova versão pode causar uma qualidade significativamente menor. Valide as novas versões verificando a qualidade em comparação com a versão 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 modelo em um conjunto de dados de validação atendem a um limite fixo. Se o conjunto de dados de validação se desviar dos dados em tempo real, atualize-o e verifique se o modelo ainda atende ao mesmo limite de qualidade.
Validar a compatibilidade entre o modelo e a infraestrutura antes da veiculação
Se o modelo for atualizado mais rápido que o servidor, ele poderá ter dependências de software diferentes do servidor, o que pode causar incompatibilidades. Para garantir que as operações usadas pelo modelo estejam presentes no servidor, coloque o modelo em uma versão em sandbox do servidor.