Robusta previsione delle serie temporali con MLOps su Amazon SageMaker

Predizione robusta delle serie temporali con MLOps su Amazon SageMaker

Nel mondo delle decisioni basate sui dati, la previsione delle serie temporali è fondamentale per consentire alle aziende di utilizzare i modelli di dati storici per anticipare gli esiti futuri. Che tu stia lavorando nella gestione del rischio degli asset, nel trading, nella previsione del tempo, nella previsione della domanda di energia, nel monitoraggio dei segni vitali o nell’analisi del traffico, la capacità di prevedere in modo accurato è cruciale per il successo.

In queste applicazioni, i dati delle serie temporali possono avere distribuzioni a coda pesante, in cui le code rappresentano valori estremi. Una previsione accurata in queste regioni è importante per determinare quanto è probabile un evento estremo e se sollevare un allarme. Tuttavia, questi valori anomali influenzano significativamente la stima della distribuzione di base, rendendo sfidante una previsione robusta. Le istituzioni finanziarie si affidano a modelli robusti per prevedere valori anomali come le crisi di mercato. Nei settori dell’energia, del meteo e della salute, previsioni accurate di eventi rari ma ad alto impatto come le catastrofi naturali e le pandemie consentono una pianificazione e una distribuzione delle risorse efficaci. Trascurare il comportamento della coda può portare a perdite, opportunità mancate e compromissione della sicurezza. Dare priorità all’accuratezza delle code aiuta a ottenere previsioni affidabili e praticabili. In questo post, addestriamo un modello robusto di previsione delle serie temporali in grado di catturare tali eventi estremi utilizzando Amazon SageMaker.

Per addestrare efficacemente questo modello, creiamo un’infrastruttura di MLOps per semplificare il processo di sviluppo del modello automatizzando la preparazione dei dati, l’ingegneria delle caratteristiche, la messa a punto degli iperparametri e la selezione del modello. Questa automazione riduce gli errori umani, migliora la riproducibilità e accelera il ciclo di sviluppo del modello. Con un flusso di allenamento, le aziende possono incorporare efficientemente nuovi dati e adattare i loro modelli alle condizioni in evoluzione, garantendo che le previsioni rimangano affidabili e aggiornate.

Dopo aver addestrato il modello di previsione delle serie temporali, implementarlo in un punto finale consente di ottenere capacità di previsione in tempo reale. Ciò consente di prendere decisioni informate e reattive basate sui dati più recenti. Inoltre, l’implementazione del modello in un punto finale consente la scalabilità, poiché più utenti e applicazioni possono accedere e utilizzare il modello contemporaneamente. Seguendo questi passaggi, le aziende possono sfruttare il potere della previsione robusta delle serie temporali per prendere decisioni informate e rimanere al passo in un ambiente in rapida evoluzione.

Panoramica della soluzione

Questa soluzione illustra l’addestramento di un modello di previsione delle serie temporali, appositamente progettato per gestire i valori anomali e la variabilità dei dati utilizzando una Temporal Convolutional Network (TCN) con una distribuzione Spliced Binned Pareto (SBP). Per ulteriori informazioni su una versione multimodale di questa soluzione, fare riferimento a La scienza dietro la nuova metrica di passaggio di NFL Next Gen Stats. Per illustrare ulteriormente l’efficacia della distribuzione SBP, la confrontiamo con lo stesso modello TCN ma utilizzando una distribuzione gaussiana.

Questo processo trae significativi vantaggi dalle funzionalità MLOps di SageMaker, che semplificano il flusso di lavoro della scienza dei dati sfruttando la potente infrastruttura cloud di AWS. Nella nostra soluzione, utilizziamo Amazon SageMaker Automatic Model Tuning per la ricerca degli iperparametri, Amazon SageMaker Experiments per la gestione degli esperimenti, Amazon SageMaker Model Registry per gestire le versioni del modello e Amazon SageMaker Pipelines per orchestrare il processo. Successivamente implementiamo il nostro modello in un punto finale di SageMaker per ottenere previsioni in tempo reale.

Il diagramma seguente illustra l’architettura del flusso di allenamento.

Il seguente diagramma illustra il processo di inferenza.

Puoi trovare il codice completo nel repository di GitHub. Per implementare la soluzione, esegui le celle in SBP_main.ipynb.

Clicca qui per aprire la console AWS e seguire le istruzioni.

Pipeline SageMaker

SageMaker Pipelines offre un semplice SDK Python per creare flussi di lavoro integrati di machine learning (ML). Questi flussi, rappresentati come grafi aciclici diretti (DAG), sono composti da passaggi con vari tipi e dipendenze. Con SageMaker Pipelines, puoi ottimizzare il processo di addestramento e valutazione dei modelli, migliorando l’efficienza e la riproducibilità dei tuoi flussi di lavoro ML.

Il flusso di addestramento inizia con la generazione di un set di dati sintetico che viene diviso in set di addestramento, di validazione e di test. Il set di addestramento viene utilizzato per addestrare due modelli TCN, uno utilizzando la distribuzione Spliced Binned-Pareto e l’altro utilizzando la distribuzione gaussiana. Entrambi i modelli vengono sottoposti a ottimizzazione degli iperparametri utilizzando il set di validazione per ottimizzare ciascun modello. Successivamente, viene condotta un’analisi sul set di test per determinare il modello con l’errore quadratico medio (RMSE) più basso. Il modello con la miglior metrica di accuratezza viene caricato nel registro dei modelli.

Il seguente diagramma illustra i passaggi della pipeline.

Discutiamo ora nel dettaglio i singoli passaggi.

Generazione dei dati

Il primo passo nella nostra pipeline genera un set di dati sintetico, caratterizzato da una forma d’onda sinusoidale e da un rumore asimmetrico heavy-tailed. I dati sono creati utilizzando diversi parametri, come gradi di libertà, un moltiplicatore di rumore e un parametro di scala. Questi elementi influenzano la forma della distribuzione dei dati, modulano la variabilità casuale nei dati e regolano la dispersione della distribuzione dei dati.

Questa operazione di elaborazione dei dati viene eseguita utilizzando un PyTorchProcessor, che esegue codice PyTorch (generate_data.py) all’interno di un container gestito da SageMaker. I dati e altri artefatti pertinenti per il debug sono situati nel bucket predefinito di Amazon Simple Storage Service (Amazon S3) associato all’account SageMaker. I log di ciascun passaggio della pipeline possono essere trovati in Amazon CloudWatch.

La seguente figura è un esempio dei dati generati dalla pipeline.

Puoi sostituire l’input con una vasta varietà di dati di serie temporali, come distribuzioni simmetriche, asimmetriche, a coda leggera, a coda pesante o multimodali. La robustezza del modello consente di applicarlo a una vasta gamma di problemi di serie temporali, a condizione che siano disponibili osservazioni sufficienti.

Addestramento del modello

Dopo la generazione dei dati, addestriamo due TCN: uno utilizzando la distribuzione SBP e l’altro utilizzando la distribuzione gaussiana. La distribuzione SBP utilizza una distribuzione discreta di intervalli come base predittiva, in cui l’asse reale viene diviso in intervalli discreti e il modello predice la probabilità di un’osservazione che cada in ciascun intervallo. Questa metodologia consente di catturare asimmetrie e modalità multiple perché la probabilità di ciascun intervallo è indipendente. Un esempio della distribuzione basata su intervalli è mostrato nella figura seguente.

La distribuzione basata su intervalli a sinistra è robusta agli eventi estremi perché il log-probabilità non dipende dalla distanza tra la media predetta e il punto osservato, a differenza delle distribuzioni parametriche come la Gaussiana o la distribuzione di Student. Pertanto, l’evento estremo rappresentato dal punto rosso non influenzerà la media appresa della distribuzione. Tuttavia, l’evento estremo avrà probabilità zero. Per catturare gli eventi estremi, formiamo una distribuzione SBP definendo la coda inferiore al 5° percentile e la coda superiore al 95° percentile, sostituendo entrambe le code con Distribuzioni Generalizzate di Pareto (GPD) pesate, che possono quantificare la probabilità dell’evento. Il TCN restituirà i parametri per la base della distribuzione basata su intervalli e per le code GPD.

Per ottenere il miglior output, utilizziamo il tuning automatico del modello per trovare la migliore versione di un modello tramite il tuning degli iperparametri. Questa fase è integrata nelle Pipelines di SageMaker e consente l’esecuzione parallela di più lavori di addestramento, utilizzando vari metodi e intervalli di iperparametri predefiniti. Il risultato è la selezione del miglior modello in base alla metrica del modello specificata, ossia il RMSE. Nella nostra pipeline, tariamo specificamente il tasso di apprendimento e il numero di epoche di addestramento per ottimizzare le prestazioni del nostro modello. Con la capacità di tuning degli iperparametri in SageMaker, aumentiamo la probabilità che il nostro modello raggiunga la massima precisione e generalizzazione per il compito assegnato.

A causa della natura sintetica dei nostri dati, manteniamo i Parametri di Lunghezza di Contesto e Tempo di Guida come parametri statici. La Lunghezza di Contesto si riferisce al numero di passaggi temporali storici inseriti nel modello, mentre il Tempo di Guida rappresenta il numero di passaggi temporali nel nostro orizzonte previsionale. Nel codice di esempio, tareremo solo il Tasso di Apprendimento e il numero di epoche per risparmiare tempo e costi.

I parametri specifici di SBP vengono mantenuti costanti sulla base di test approfonditi condotti dagli autori del paper originale su diversi dataset:

  • Numero di Intervalli (100) – Questo parametro determina il numero di intervalli utilizzati per modellare la base della distribuzione. Viene mantenuto a 100, in quanto si è dimostrato il più efficace in molti settori.
  • Coda Percentile (0.05) – Questo indica la dimensione delle distribuzioni generalizzate di Pareto nella coda. Come il parametro precedente, è stato testato approfonditamente e si è rivelato il più efficiente.

Esperimenti

Il processo di tuning degli iperparametri è integrato con SageMaker Experiments, che aiuta a organizzare, analizzare e confrontare gli esperimenti di machine learning iterativi, fornendo informazioni e facilitando il monitoraggio dei modelli che si comportano meglio. Il machine learning è un processo iterativo che coinvolge numerosi esperimenti che includono variazioni nei dati, scelte degli algoritmi e tuning degli iperparametri. Questi esperimenti servono per migliorare gradualmente la precisione del modello. Tuttavia, il grande numero di addestramenti e iterazioni dei modelli può rendere difficile identificare i modelli con le migliori prestazioni e confrontarli in modo significativo con gli esperimenti precedenti. SageMaker Experiments affronta questo problema tracciando automaticamente i nostri lavori di tuning degli iperparametri e consentendo di ottenere ulteriori dettagli e informazioni sul processo di tuning, come mostrato nella seguente schermata.

Valutazione del modello

I modelli vengono sottoposti ad addestramento e tuning degli iperparametri e successivamente vengono valutati tramite lo script evaluate.py. Questa fase utilizza l’insieme di test, diverso dalla fase di tuning degli iperparametri, per valutare l’accuratezza del modello nel mondo reale. L’RMSE viene utilizzato per valutare l’accuratezza delle previsioni.

Per il confronto di distribuzione, utilizziamo un tracciato probabilità-probabilità (P-P), che valuta l’aderenza tra la distribuzione effettiva e quella prevista. La vicinanza dei punti alla diagonale indica una perfetta aderenza. I nostri confronti tra la distribuzione prevista da SBP e quella gaussiana rispetto alla distribuzione effettiva mostrano che le previsioni di SBP sono più vicine ai dati effettivi.

Come possiamo osservare, SBP ha un RMSE più basso nella base, nella coda inferiore e nella coda superiore. La distribuzione SBP ha migliorato l’accuratezza della distribuzione gaussiana del 61% nella base, del 56% nella coda inferiore e del 30% nella coda superiore. Nel complesso, la distribuzione SBP ha risultati significativamente migliori.

Selezione del modello

Utilizziamo un passaggio condizionale in SageMaker Pipelines per analizzare i report di valutazione del modello, optando per il modello con il minor RMSE per migliorare l’accuratezza della distribuzione. Il modello selezionato viene convertito in un oggetto modello di SageMaker, pronto per il rilascio. Ciò comporta la creazione di un pacchetto modello con parametri cruciali e l’incapsulamento in un ModelStep.

Registro dei modelli

Il modello selezionato viene quindi caricato su SageMaker Model Registry, che svolge un ruolo critico nella gestione dei modelli pronti per la produzione. Conserva i modelli, organizza le versioni del modello, acquisisce metadati essenziali e artefatti come immagini del contenitore e governa lo stato di approvazione di ciascun modello. Utilizzando il registro, possiamo distribuire in modo efficiente i modelli in ambienti di SageMaker accessibili e stabilire una base per la continuous integration e continuous deployment (CI/CD) pipelines.

Inferenza

Al termine del nostro flusso di lavoro di addestramento, il nostro modello viene quindi distribuito utilizzando i servizi di hosting di SageMaker, che consentono la creazione di un punto di ingresso per l’inferenza per le previsioni in tempo reale. Questo punto di ingresso consente un’integrazione senza soluzione di continuità con applicazioni e sistemi, fornendo un accesso on-demand alle capacità predittive del modello tramite un’interfaccia HTTPS sicura. Le previsioni in tempo reale possono essere utilizzate in scenari come la previsione dei prezzi delle azioni e della domanda di energia. Il nostro punto di ingresso fornisce una previsione in un solo passaggio per i dati della serie temporale forniti, presentati come percentile e mediana, come mostrato nella figura e nella tabella seguenti.

1° percentile 5° percentile Mediana 95° percentile 99° percentile
1,12 3,16 4,70 7,40 9,41

Pulizia

Dopo aver eseguito questa soluzione, assicurarsi di eliminare tutte le risorse AWS non necessarie per evitare costi imprevisti. È possibile pulire queste risorse utilizzando il SageMaker Python SDK, che può essere trovato alla fine del notebook. Eliminando queste risorse, si evitano ulteriori addebiti per le risorse non più utilizzate.

Conclusione

Avere una previsione accurata può influenzare notevolmente la pianificazione futura di un’azienda e fornire soluzioni a una varietà di problemi in diversi settori. La nostra esplorazione delle previsioni robuste di serie temporali con MLOps su SageMaker ha dimostrato un metodo per ottenere una previsione accurata e l’efficienza di un flusso di lavoro di addestramento razionalizzato.

Il nostro modello, alimentato da una Rete di Convoluzione Temporale con distribuzione spettrale parieto divisa, ha mostrato accuratezza e adattabilità agli eccezionali migliorando l’RMSE del 61% sulla base, del 56% sulla coda inferiore e del 30% sulla coda superiore rispetto alla stessa Rete di Convoluzione Temporale con distribuzione Gaussiana. Questi numeri ne fanno una soluzione affidabile per le esigenze di previsione del mondo reale.

Il processo dimostra il valore dell’automatizzazione delle funzionalità MLOps. Ciò può ridurre lo sforzo umano manuale, consentire la riproducibilità e accelerare il rilascio del modello. Le funzionalità di SageMaker come SageMaker Pipelines, messa a punto automatica del modello, SageMaker Experiments, SageMaker Model Registry e endpoints rendono ciò possibile.

La nostra soluzione utilizza una miniatura di una Rete di Convoluzione Temporale, ottimizzando solo alcuni iperparametri con un numero limitato di strati, che sono sufficienti per evidenziare in modo efficace le prestazioni del modello. Per casi d’uso più complessi, considerare l’utilizzo di PyTorch o di altre librerie basate su PyTorch per costruire una Rete di Convoluzione Temporale più personalizzata che si allinei alle esigenze specifiche. Inoltre, sarebbe utile esplorare altre funzionalità di SageMaker per migliorare ulteriormente la funzionalità della pipeline. Per automatizzare completamente il processo di distribuzione, è possibile utilizzare il AWS Cloud Development Kit (AWS CDK) o AWS CloudFormation.

Per ulteriori informazioni sulla previsione delle serie temporali su AWS, fare riferimento ai seguenti link:

Sentitevi liberi di lasciare un commento con pensieri o domande!