Sistemi di ML di produzione: test del deployment

Ora puoi eseguire il deployment del modello unicorno che prevede le apparizioni degli unicorni. Durante il deployment, la pipeline di machine learning (ML) dovrebbe eseguire, aggiornare vengono pubblicati senza problemi. Sarebbe semplice se il deployment di un modello fosse semplice come premere un grande pulsante Esegui il deployment. Purtroppo, un sistema completo di machine learning richiede test per:

  • Convalida dei dati di input in corso.
  • Convalida del feature engineering.
  • Convalida della qualità delle nuove versioni del modello.
  • Convalida dell'infrastruttura di distribuzione.
  • Test dell'integrazione tra i componenti della pipeline.

Molti ingegneri informatici preferiscono lo sviluppo basato sui test (TDD). In TDD, il software gli ingegneri scrivono i test prima di scrivere il "vero" codice sorgente. Tuttavia, il TDD può essere complicato nel machine learning. Ad esempio, prima di addestrare il modello, non puoi scrivere un test per convalidare la perdita. Devi prima scoprire la perdita ottenibile durante il modello per lo sviluppo e quindi testare le nuove versioni del modello rispetto alla perdita ottenibile.

Informazioni sul modello unicorno

Questa sezione fa riferimento al modello Unicorno. Tieni presente quanto segue:

Stai utilizzando il machine learning per creare un modello di classificazione che prevede apparizioni di unicorni. Il tuo set di dati descrive in dettaglio 10.000 apparizioni di unicorni e 10.000 non apparizioni di unicorni. Il set di dati contiene la posizione, ora del giorno, altitudine, temperatura, umidità, copertura arborea, presenza di un arcobaleno e molte altre funzionalità.

Testa gli aggiornamenti del modello con l'addestramento riproducibile

Magari vuoi continuare a migliorare il tuo modello unicorno. Ad esempio, supponiamo che si esegue il feature engineering aggiuntivo su una determinata caratteristica e poi il modello, sperando di ottenere risultati migliori (o almeno gli stessi). Purtroppo, a volte è difficile riprodurre l'addestramento del modello. Per migliorare la riproducibilità, segui questi consigli:

  • Esegui in modo determinante il seed del generatore di numeri casuali. Per maggiori dettagli, vedi Visualizzazione casuale nei dati

  • Inizializza i componenti del modello in ordine fisso per assicurarti che ricevano lo stesso numero casuale del generatore di numeri casuali a ogni esecuzione. Le librerie ML gestiscono in genere questo requisito automaticamente.

  • Calcola la media di diverse esecuzioni del modello.

  • Usate il controllo della versione, anche per le iterazioni preliminari, in modo da individuare il codice e i parametri durante l'analisi del modello o della pipeline.

Anche dopo aver seguito queste linee guida, altre fonti di non determinismo potrebbero esistono ancora.

Chiamate di test all'API Machine Learning

Come testare gli aggiornamenti delle chiamate API? Puoi riaddestrare il modello, ma richiede molto tempo. Scrivi invece un test delle unità per generare dati di input casuali ed eseguire un singolo passo di discesa del gradiente. Se questo passaggio viene completato senza errori, gli eventuali aggiornamenti all'API probabilmente non hanno rovinato il modello.

Scrivere i test di integrazione per i componenti della pipeline

In una pipeline ML, le modifiche in un componente possono causare errori in altri componenti. Verifica che i componenti interagiscano scrivendo un test di integrazione che esegue l'intera pipeline end-to-end.

Oltre a eseguire test di integrazione continuamente, è necessario eseguire test di integrazione quando esegui il push di nuovi modelli e nuove versioni software. La lentezza dell'esecuzione l'intera pipeline rende più difficili i test di integrazione continua. Per eseguire l'integrazione eseguire l'addestramento più rapidamente, eseguire l'addestramento sulla base di un sottoinsieme di dati o con un modello più semplice. I dettagli dipendono dal modello e dai dati. Per ottenere una copertura continua, devi regolare in modo che vengano eseguiti con ogni nuova versione del modello o del software. mentre i test lenti vengono eseguiti continuamente in background.

Convalida la qualità del modello prima della pubblicazione

Prima di inviare una nuova versione del modello in produzione, testa i seguenti due tipi di riduzione della qualità:

  • Degrado improvviso. Un bug nella nuova versione potrebbe causare significativamente di qualità inferiore. Convalida le nuove versioni controllandone la qualità rispetto alla versione precedente.

  • Degradazione lenta. Il test relativo a un deterioramento improvviso potrebbe non rilevare un della qualità del modello in più versioni. Assicurati invece che le previsioni del modello su un set di dati di convalida soddisfano una soglia fissa. Se le tue il set di dati di convalida devia dai dati in tempo reale, quindi aggiorna il set di dati e assicurati che il modello soddisfi la stessa soglia di qualità.

Verifica la compatibilità del modello e dell'infrastruttura prima della pubblicazione

Se il modello viene aggiornato più velocemente del server, il modello potrebbe avere di dipendenze software diverse dal server, causando incompatibilità. Assicurati che le operazioni utilizzate dal modello siano presenti del server eseguendo lo staging del modello in una versione sandbox del server.