Ora puoi eseguire il deployment del modello di unicorni che prevede le apparizioni di unicorni. Durante il deployment, la pipeline di machine learning (ML) dovrebbe essere eseguita, aggiornata e pubblicata senza problemi. Se solo il deployment di un modello fosse facile come premere un grande pulsante Esegui il deployment. Purtroppo, un sistema di machine learning completo richiede test per:
- Convalida dei dati di input.
- Convalida del feature engineering.
- Convalida della qualità delle nuove versioni del modello.
- Convalida dell'infrastruttura di pubblicazione.
- Testare l'integrazione tra i componenti della pipeline.
Molti ingegneri informatici preferiscono lo sviluppo guidato dai test (TDD). Nel TDD, gli ingegneri del software scrivono i test prima di scrivere il codice sorgente "reale". 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 invece prima scoprire la perdita raggiungibile durante lo sviluppo del modello e poi testare le nuove versioni del modello rispetto alla perdita raggiungibile.
Informazioni sul modello unicorno
Questa sezione fa riferimento al modello unicorno. Tieni presente quanto segue:
Utilizzi il machine learning per creare un modello di classificazione che preveda la comparsa di unicorni. Il set di dati contiene i dettagli di 10.000 apparizioni di unicorni e di altre 10.000 in cui non sono presenti unicorni. Il set di dati contiene la posizione, l'ora del giorno, l'altitudine, la temperatura, l'umidità, la copertura arborea, la presenza di un arcobaleno e diverse altre funzionalità.
Testa gli aggiornamenti del modello con un addestramento riproducibile
Magari vuoi continuare a migliorare il tuo modello unicorno. Ad esempio, supponiamo di eseguire un'ulteriore elaborazione delle funzionalità su una determinata funzionalità e di addestrare nuovamente il modello, sperando di ottenere risultati migliori (o almeno uguali). Purtroppo, a volte è difficile riprodurre l'addestramento del modello. Per migliorare la riproducibilità, segui questi consigli:
Inizializza in modo deterministico il generatore di numeri casuali. Per maggiori dettagli, consulta la sezione Randomizzazione nella generazione di dati.
Inizializza i componenti del modello in un ordine fisso per assicurarti che ricevano lo stesso numero casuale dal generatore di numeri casuali a ogni esecuzione. In genere, le librerie ML gestiscono automaticamente questo requisito.
Calcola la media di più esecuzioni del modello.
Utilizza il controllo della versione, anche per le iterazioni preliminari, in modo da poter identificare il codice e i parametri durante l'analisi del modello o della pipeline.
Anche dopo aver seguito queste linee guida, potrebbero essere ancora presenti altre fonti di non determinismo.
Testa le chiamate all'API di machine learning
Come testi gli aggiornamenti delle chiamate API? Potresti addestrare nuovamente il modello, ma questa operazione richiede molto tempo. Scrivi invece un test di unità per generare dati di input casuali esegui un singolo passaggio di discesa del gradiente. Se questo passaggio viene completato senza errori, è probabile che gli aggiornamenti dell'API non abbiano danneggiato il modello.
Scrivi 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 funzionino insieme scrivendo un test di integrazione che esegua l'intera pipeline end-to-end.
Oltre a eseguire continuamente i test di integrazione, devi eseguirli anche quando carichi nuovi modelli e nuove versioni software. La lentezza dell'esecuzione dell'intera pipeline rende più difficili i test di integrazione continua. Per eseguire più velocemente i test di integrazione, esegui l'addestramento su un sottoinsieme di dati o con un modello più semplice. I dettagli dependono sul modello e sui dati. Per ottenere una copertura continua, devi modificare i test più rapidi in modo che vengano eseguiti con ogni nuova versione del modello o del software. Nel frattempo, i test lenti verranno eseguiti continuamente in background.
Convalida la qualità del modello prima della pubblicazione
Prima di eseguire il push di una nuova versione del modello in produzione, verifica i seguenti due tipi di cali di qualità:
Degradamento improvviso. Un bug nella nuova versione potrebbe causare una qualità notevolmente inferiore. Convalida le nuove versioni controllandone la qualità rispetto alla versione precedente.
Deterioramento lento. Il test per il degrado improvviso potrebbe non rilevare un degrado lento della qualità del modello in più versioni. Assicurati invece che le previsioni del tuo modello su un set di dati di convalida soddisfino una soglia fissa. Se il set di dati di convalida si discosta dai dati in tempo reale, aggiornalo e assicurati che il modello soddisfi ancora la stessa soglia di qualità.
Convalida la compatibilità dell'infrastruttura del modello prima di eseguire il servizio
Se il modello viene aggiornato più velocemente del server, potrebbe avere dipendenze software diverse dal server, causando potenzialmente incompatibilità. Assicurati che le operazioni utilizzate dal modello siano presenti nel server eseguendo lo staging del modello in una versione in sandbox del server.