5. Integrazione continua - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

5. Integrazione continua

Il sistema ML esegue dei test per verificare che il sistema funzioni dall'inizio alla fine, verificando eventuali punti di errore. I test vengono eseguiti automaticamente al momento del commit e i test più lunghi vengono eseguiti secondo una pianificazione fissa. I test controllano le aree di ingegneria del software tradizionali, ad esempio a livello di unità e sistema. Inoltre, i test acquisiscono i dettagli del machine learning controllando i dati, le funzionalità e il modello.

5.1 Controlli del codice locale

Prima di inserire il codice in un repository di codice centralizzato, gli sviluppatori eseguono localmente controlli come i test unitari di base e l'analisi statica. L'esecuzione di questi controlli prima del commit aumenta la qualità complessiva del codice e rileva i problemi prima che entrino nel controllo della versione.

5.2 Analisi statica del codice

L'archivio centrale del codice dispone di strumenti statici di analisi del codice che vengono eseguiti rapidamente su commit. Questo strumento dovrebbe migliorare lo stile e la formattazione del codice. Dovrebbe inoltre verificare le vulnerabilità di sicurezza comuni nel codice sorgente e nell'infrastruttura, i bug comuni e altri punti deboli del codice.

5.3 Test di qualità dei dati

I test di qualità dei dati dovrebbero, come minimo, verificare che i dati non abbiano violato uno schema fisso. Un approccio più completo consiste nel calcolare le statistiche dei dati al momento dell'acquisizione, stabilire vincoli sui dati ed eseguire test sulla base di tali vincoli.

È possibile impostare test di qualità dei dati indipendentemente o come parte della pipeline. Le statistiche e i vincoli vengono riutilizzati per il monitoraggio.

5.4 Test delle funzionalità

Come parte di una pipeline completa, viene generata l'importanza delle funzionalità. I feature test affermano che l'importanza delle feature, o il modo in cui il modello attribuisce i valori delle feature, non cambia. I feature test possono contribuire al monitoraggio perché possono avvisare e tenere traccia delle violazioni negli input di un modello.

5.5 Test unitari

I test unitari per tutto il codice, modello, applicazione e infrastruttura, vengono eseguiti prima del commit e al momento del commit. Ogni unit test verifica un pezzo di codice importante per confermare che funzioni come previsto. Nel caso del codice ML, è possibile eseguire test di correttezza algoritmica.

5.6 Test di integrazione

Un test di integrazione verifica che la pipeline funzioni correttamente dall'inizio alla fine, compresa la predisposizione dell'infrastruttura associata alla pipeline. Questo test verifica che il sistema funzioni e stia registrando i dati come previsto. Se la distribuzione è separata, dovrebbe essere eseguito anche un end-to-end test per assicurarsi che la distribuzione funzioni.

5.7 Test del fumo

Il sistema dispone di test di fumo che vengono eseguiti in modalità mini e rapida regressione di ogni funzionalità. Gli smoke test fanno parte dell'integrazione continua e possono essere eseguiti in un ambiente containerizzato per simulare le funzionalità del cloud.

5.8 Test di carico

Sono in corso test di carico su richiesta. Oltre a registrare il comportamento del sistema ML in presenza di carichi elevati e bassi, i test di carico forniscono statistiche sulla velocità effettiva o sulla latenza a livello di sistema. I dati raccolti tramite i test di carico forniscono informazioni sulle dimensioni delle risorse e sulle politiche di scalabilità.

5.9 Test funzionali dei modelli

Gli output e gli input del modello vengono eseguiti tramite test funzionali automatizzati. Per verificare un comportamento all'interno di una capacità, sia gli output che gli input del modello vengono testati su dati reali o falsi con esempi di base.

5.10 Test di inferenza dei modelli con casi estremi

Come parte dei test minimi di funzionalità, i test dei modelli dovrebbero verificare l'eventuale presenza di comportamenti estremi in base a determinati input prima della promozione del modello. Ciò crea un guardrail aggiuntivo che aiuta a prevenire comportamenti imprevisti.