Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast

Questo post è una collaborazione congiunta con Andries Engelbrecht e James Sun di Snowflake, Inc.

La rivoluzione del cloud computing ha consentito alle aziende di acquisire e conservare i dati aziendali e organizzativi senza vincoli di pianificazione della capacità o di conservazione dei dati. Ora, con vaste e diverse riserve di dati longitudinali, le aziende sono sempre più in grado di trovare modi nuovi e di grande impatto per utilizzare le proprie risorse digitali per prendere decisioni migliori e informate quando prendono decisioni di pianificazione a breve e lungo termine. La previsione delle serie temporali è una scienza unica ed essenziale che consente alle aziende di prendere decisioni di pianificazione chirurgica per aiutare a bilanciare i livelli di servizio clienti con obiettivi spesso contrastanti di redditività ottimale.

In AWS, a volte lavoriamo con clienti che hanno selezionato il nostro partner tecnologico Fiocco di neve per offrire un'esperienza di piattaforma dati cloud. Avere una piattaforma in grado di ricordare anni e anni di dati storici è potente, ma come puoi utilizzare questi dati per guardare avanti e utilizzare le prove di ieri per pianificare il domani? Immagina non solo di avere a disposizione ciò che è successo in Snowflake, la tua versione unica della verità, ma anche un insieme adiacente di dati non isolati che offrono una previsione probabilistica per giorni, settimane o mesi nel futuro.

In una catena di fornitura collaborativa, la condivisione delle informazioni tra i partner può migliorare le prestazioni, aumentare la competitività e ridurre lo spreco di risorse. Condividere le tue previsioni future può essere facilitato Condivisione dei dati di fiocco di neve, che ti consente di collaborare senza problemi con i tuoi partner commerciali in modo sicuro e di identificare approfondimenti aziendali. Se molti partner condividono le loro previsioni, può aiutare a controllare l'effetto bullwhip nella catena di approvvigionamento connessa. Puoi usare efficacemente Mercato dei fiocchi di neve per monetizzare le tue analisi predittive dai set di dati prodotti in Previsioni Amazon.

In questo post, discutiamo come implementare una soluzione automatizzata di previsione delle serie temporali utilizzando Snowflake e Forecast.

Servizi AWS essenziali che abilitano questa soluzione

Forecast fornisce diversi algoritmi di serie temporali all'avanguardia e gestisce l'allocazione di una capacità di elaborazione distribuita sufficiente per soddisfare le esigenze di quasi tutti i carichi di lavoro. Con Forecast, non ottieni un modello; ottieni la forza di molti modelli che sono ulteriormente ottimizzati in un modello ponderato in modo univoco per ciascuna serie temporale del set. In breve, il servizio offre tutta la scienza, la gestione dei dati e la gestione delle risorse in una semplice chiamata API.

Funzioni AWS Step fornisce un meccanismo di orchestrazione dei processi che gestisce il flusso di lavoro complessivo. Il servizio incapsula le chiamate API con Amazzone Atena, AWS Lambdae Forecast per creare una soluzione automatizzata che raccolga i dati da Snowflake, utilizzi Forecast per convertire i dati storici in previsioni future e quindi crei i dati all'interno di Snowflake.

Le query federate Athena possono connettersi a diverse origini dati aziendali, tra cui Amazon DynamoDB, Amazon RedShift, Servizio Amazon OpenSearch, MySQL, PostgreSQL, Redis e altri popolari archivi di dati di terze parti, come Snowflake. I connettori dati vengono eseguiti come funzioni Lambda: puoi utilizzare questo codice sorgente per avviare il file Connettore Amazon Athena Lambda Snowflake e connettersi con Collegamento privato AWS o tramite un gateway NAT.

Panoramica della soluzione

Una delle cose che facciamo spesso in AWS è lavorare per aiutare i clienti a realizzare i loro obiettivi, rimuovendo anche il peso del lavoro pesante indifferenziato. Con questo in mente, proponiamo quanto segue soluzione per assistere i clienti AWS e Snowflake, eseguire i seguenti passaggi:

  1. Esporta i dati da Snowflake. Puoi utilizzare metadati flessibili per scaricare i dati storici necessari guidati da un flusso di lavoro pronto all'uso.
  2. Importa i dati in Previsione. Indipendentemente dal caso d'uso, dal settore o dalla scala, l'importazione di input di dati preparati è facile e automatizzata.
  3. Addestra un modello di serie temporali all'avanguardia. Puoi automatizzare la previsione delle serie temporali senza gestire la scienza dei dati sottostante o il provisioning dell'hardware.
  4. Genera inferenza rispetto al modello addestrato. Gli output prodotti dalle previsioni sono facili da consumare per qualsiasi scopo. Sono disponibili come semplici file CSV o Parquet Servizio di archiviazione semplice Amazon (Amazon S3).
  5. Usa la cronologia e le previsioni future fianco a fianco direttamente in Snowflake.

Il diagramma seguente illustra come implementare un flusso di lavoro automatizzato che consente ai clienti Snowflake di beneficiare di previsioni di serie temporali estremamente accurate supportate da Forecast, un servizio gestito da AWS. Trascendendo il caso d'uso e l'industria, il design qui offerto estrae prima i dati storici da Snowflake. Successivamente, il flusso di lavoro invia i dati preparati per il calcolo delle serie temporali. Infine, le previsioni del periodo futuro sono disponibili in modo nativo in Snowflake, creando un'esperienza utente senza interruzioni per i clienti congiunti di AWS e Snowflake.

Sebbene questa architettura evidenzi solo i dettagli tecnici chiave, la soluzione è semplice da mettere insieme, a volte entro 1-2 giorni lavorativi. Ti forniamo un codice di esempio funzionante per aiutarti a rimuovere il peso indifferenziato della creazione della soluzione da solo e senza un vantaggio. Dopo aver scoperto come implementare questo modello per un carico di lavoro, puoi ripetere il processo di previsione per tutti i dati contenuti in Snowflake. Nelle sezioni che seguono, delineeremo i passaggi chiave che consentono di creare una pipeline automatizzata.

Estrai i dati storici da Snowflake

In questo primo passaggio, utilizzi SQL per definire quali dati desideri prevedere e consenti a una query federata di Athena di connettersi a Snowflake, eseguire il tuo SQL personalizzato e mantenere il record risultante impostato su Amazon S3. La previsione richiede che i dati di addestramento storici siano disponibili su Amazon S3 prima dell'importazione; pertanto, Amazon S3 funge da buffer di archiviazione intermedio tra Snowflake e Forecast. Presentiamo Athena in questo progetto per abilitare Snowflake e altre origini dati eterogenee. Se preferisci, un altro approccio consiste nell'utilizzare il comando Snowflake COPY e l'integrazione dello storage per scrivere i risultati delle query su Amazon S3.

Indipendentemente dal meccanismo di trasporto utilizzato, descriviamo ora il tipo di dati necessari per la previsione e il modo in cui i dati vengono definiti, preparati ed estratti. Nella sezione che segue, descriviamo come importare i dati in Forecast.

La schermata seguente mostra come potrebbe apparire un insieme di dati nel suo schema Snowflake nativo.

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Sebbene questa schermata mostri come appaiono i dati nel loro stato naturale, Forecast richiede che i dati siano modellati in tre diversi set di dati:

  • Serie temporali target – Questo è un set di dati obbligatorio contenente la variabile target e viene utilizzato per addestrare e prevedere un valore futuro. Da solo, questo set di dati funge da modello di serie temporali univariate.
  • Serie temporali correlate – Questo è un set di dati facoltativo che contiene variabili temporali che dovrebbero avere una relazione con la variabile di destinazione. Gli esempi includono prezzi variabili, sforzi promozionali, traffico di eventi iperlocali, dati sulle prospettive economiche: tutto ciò che ritieni possa aiutare a spiegare la varianza nelle serie temporali target e produrre una previsione migliore. Il relativo set di dati delle serie temporali trasforma il tuo modello univariato in un multivariato per migliorare la precisione.
  • Metadati dell'articolo – Si tratta di un set di dati opzionale contenente dati categoriali sull'elemento previsto. I metadati degli articoli spesso aiutano a migliorare le prestazioni dei prodotti appena lanciati, che chiamiamo a partenza a freddo.

Con l'ambito di ciascuno dei set di dati di Previsione definito, è possibile scrivere query in Snowflake che estraggono i campi di dati corretti dalle tabelle di origine necessarie con i filtri appropriati per ottenere il sottoinsieme di dati desiderato. Di seguito sono riportate tre query SQL di esempio utilizzate per generare ogni set di dati necessario a Forecast per uno specifico scenario di pianificazione della domanda alimentare.

Iniziamo con la query della serie temporale target:

select LOCATION_ID, ITEM_ID, 
DATE_DEMAND as TIMESTAMP, QTY_DEMAND as TARGET_VALUE 
from DEMO.FOOD_DEMAND

La query relativa alle serie temporali facoltative estrae covariate come prezzo e promozionale:

select LOCATION_ID,ITEM_ID, DATE_DEMAND as TIMESTAMP,
CHECKOUT_PRICE, BASE_PRICE,
EMAILER_FOR_PROMOTION, HOMEPAGE_FEATURED
from DEMO.FOOD_DEMAND

La query sui metadati dell'elemento recupera valori categoriali distinti che aiutano a dare una dimensione e definire ulteriormente l'elemento previsto:

select DISTINCT ITEM_ID, FOOD_CATEGORY, FOOD_CUISINE
from DEMO.FOOD_DEMAND

Con le query di origine definite, possiamo connetterci a Snowflake tramite una query federata Athena per inviare le query e mantenere i set di dati risultanti per l'uso delle previsioni. Per ulteriori informazioni, fare riferimento a Esegui query su Snowflake utilizzando Athena Federated Query e unisciti ai dati nel tuo data lake Amazon S3.

I Repo Athena Snowflake Connector GitHub aiuta a installare il connettore Snowflake. Il Previsione MLOps repository GitHub aiuta a orchestrare tutti i macro passaggi definiti in questo post e li rende ripetibili senza scrivere codice.

Importa i dati in Previsione

Dopo aver completato il passaggio precedente, un set di dati di serie temporali target è in Amazon S3 ed è pronto per l'importazione in Forecast. Inoltre, le serie temporali correlate facoltative e i set di dati di metadati degli elementi possono anche essere preparati e pronti per l'importazione. Con il previsto Previsione soluzione MLOps, tutto ciò che devi fare qui è avviare la macchina a stati Step Functions responsabile dell'importazione dei dati: non è necessario alcun codice. Forecast avvia un cluster per ciascuno dei set di dati forniti e rende i dati pronti per il servizio da utilizzare per la creazione di modelli ML e l'inferenza del modello.

Crea un modello ML di serie temporali con statistiche di precisione

Dopo l'importazione dei dati, vengono creati modelli di serie temporali altamente accurati semplicemente chiamando un'API. Questo passaggio è incapsulato all'interno di una macchina a stati Step Functions che avvia l'API Forecast per avviare l'addestramento del modello. Dopo che il modello predittore è stato addestrato, la macchina a stati esporta le statistiche e le previsioni del modello durante la finestra del backtest su Amazon S3. Le esportazioni di backtest possono essere interrogate da Snowflake come fase esterna, come mostrato nella schermata seguente. Se preferisci, puoi archiviare i dati in una fase interna. Il punto è utilizzare le metriche di backtest per valutare la diffusione delle prestazioni delle serie temporali nel set di dati fornito.

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Crea previsioni future

Con il modello addestrato dal passaggio precedente, una macchina a stati Step Functions appositamente creata chiama l'API Forecast per creare previsioni con data futura. Forecast fornisce un cluster per eseguire l'inferenza ed estrae le serie temporali di destinazione importate, le serie temporali correlate e i set di dati di metadati degli elementi tramite un modello di predittore denominato creato nel passaggio precedente. Dopo che le previsioni sono state generate, la macchina a stati le scrive su Amazon S3, dove, ancora una volta, possono essere interrogate sul posto come fase esterna di Snowflake o spostate in Snowflake come fase interna.

Utilizza i dati di previsione con data futura direttamente in Snowflake

AWS non ha creato una soluzione completamente automatizzata per questo passaggio; tuttavia, con la soluzione in questo post, i dati erano già stati prodotti da Forecast nei due passaggi precedenti. È possibile trattare gli output come eventi attuabili o creare dashboard di business intelligence sui dati. Puoi anche utilizzare i dati per creare piani di produzione e ordini di acquisto futuri, stimare le entrate future, creare piani per le risorse del personale e altro ancora. Ogni caso d'uso è diverso, ma lo scopo di questo passaggio è fornire le previsioni ai sistemi di consumo corretti nella tua organizzazione o oltre.

Il seguente frammento di codice mostra come eseguire query sui dati Amazon S3 direttamente da Snowflake:

CREATE or REPLACE FILE FORMAT mycsvformat
type = 'CSV'
field_delimiter = ','
empty_field_as_null = TRUE
ESCAPE_UNENCLOSED_FIELD = None
skip_header = 1;

CREATE or REPLACE STORAGE INTEGRATION amazon_forecast_integration
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = S3
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::nnnnnnnnnn:role/snowflake-forecast-poc-role'
ENABLED = true
STORAGE_ALLOWED_LOCATIONS = (
's3://bucket/folder/forecast',
's3://bucket/folder/backtest-export/accuracy-metrics-values',
's3://bucket/folder/backtest-export/forecasted-values';

CREATE or REPLACE STAGE backtest_accuracy_metrics
storage_integration = amazon_forecast_integration
url = 's3://bucket/folder/backtest-export/accuracy-metrics-values'
file_format = mycsvformat;

CREATE or REPLACE EXTERNAL TABLE FOOD_DEMAND_BACKTEST_ACCURACY_METRICS (
ITEM_ID varchar AS (value:c1::varchar),
LOCATION_ID varchar AS (value:c2::varchar),
backtest_window varchar AS (value:c3::varchar),
backtestwindow_start_time varchar AS (value:c4::varchar),
backtestwindow_end_time varchar AS (value:c5::varchar),
wQL_10 varchar AS (value:c6::varchar),
wQL_30 varchar AS (value:c7::varchar),
wQL_50 varchar AS (value:c8::varchar),
wQL_70 varchar AS (value:c9::varchar),
wQL_90 varchar AS (value:c10::varchar),
AVG_wQL varchar AS (value:c11::varchar),
RMSE varchar AS (value:c12::varchar),
WAPE varchar AS (value:c13::varchar),
MAPE varchar AS (value:c14::varchar),
MASE varchar AS (value:c15::varchar)
)
with location = @backtest_accuracy_metrics
FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = ',' SKIP_HEADER = 1);

Per ulteriori informazioni sulla configurazione delle autorizzazioni, fare riferimento a Opzione 1: configurazione di un'integrazione di archiviazione Snowflake per accedere ad Amazon S3. Inoltre, puoi utilizzare il Catalogo dei servizi AWS per configurare l'integrazione dello storage Amazon S3; maggiori informazioni sono disponibili sul Repository GitHub.

Avviare un flusso di lavoro basato su pianificazione o evento

Dopo aver installato una soluzione per il tuo carico di lavoro specifico, il passaggio finale consiste nell'automatizzare il processo in base a una pianificazione adeguata alle tue esigenze specifiche, ad esempio giornaliera o settimanale. La cosa principale è decidere come avviare il processo. Un metodo consiste nell'utilizzare Snowflake per richiamare la macchina a stati Step Functions e quindi orchestrare i passaggi in serie. Un altro approccio consiste nel concatenare insieme le macchine a stati e avviare la corsa complessiva attraverso un Amazon EventBridge regola, che puoi configurare per l'esecuzione da un evento o da un'attività pianificata, ad esempio alle 9:00 GMT-8 ogni domenica sera.

Conclusione

Con la maggior parte dell'esperienza; il cloud più affidabile, scalabile e sicuro; e il set più completo di servizi e soluzioni, AWS è il posto migliore per sbloccare il valore dai tuoi dati e trasformarlo in informazioni dettagliate. In questo post, ti abbiamo mostrato come creare un flusso di lavoro automatizzato di previsione delle serie temporali. Una migliore previsione può portare a risultati più elevati per il servizio clienti, meno sprechi, meno scorte inattive e più contanti in bilancio.

Se sei pronto per automatizzare e migliorare le previsioni, siamo qui per aiutarti nel tuo viaggio. Contatta il team dell'account AWS o Snowflake per iniziare oggi stesso e chiedi un seminario di previsione per vedere che tipo di valore puoi sbloccare dai tuoi dati.


Informazioni sugli autori

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.BoscoAlbuquerque è Sr. Partner Solutions Architect presso AWS e ha oltre 20 anni di esperienza nella collaborazione con prodotti di database e analisi di fornitori di database aziendali e fornitori di cloud. Ha aiutato aziende tecnologiche a progettare e implementare soluzioni e prodotti di analisi dei dati.

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Franco Dallezotte è Sr. Solutions Architect presso AWS ed è appassionato di lavorare con fornitori di software indipendenti per progettare e creare applicazioni scalabili su AWS. Ha esperienza nella creazione di software, nell'implementazione di pipeline di build e nella distribuzione di queste soluzioni nel cloud.

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Andries Engelbrecht è un Principal Partner Solutions Architect di Snowflake e lavora con partner strategici. È attivamente impegnato con partner strategici come AWS che supportano integrazioni di prodotti e servizi, nonché lo sviluppo di soluzioni congiunte con i partner. Andries ha oltre 20 anni di esperienza nel campo dei dati e dell'analisi.

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Carlo Laughlin è un Principal AI/ML Specialist Solutions Architect e lavora nel team Time Series ML di AWS. Aiuta a definire la roadmap del servizio Amazon Forecast e collabora quotidianamente con diversi clienti AWS per aiutare a trasformare le loro attività utilizzando tecnologie AWS all'avanguardia e leadership di pensiero. Charles ha conseguito un Master in Supply Chain Management e ha trascorso gli ultimi dieci anni lavorando nel settore dei beni di consumo confezionati.

Automatizza la previsione delle serie temporali in Snowflake utilizzando Amazon Forecast PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Giacomo Sole è Senior Partner Solutions Architect presso Snowflake. James ha oltre 20 anni di esperienza nell'archiviazione e nell'analisi dei dati. Prima di Snowflake, ha ricoperto diverse posizioni tecniche senior presso AWS e MapR. James ha conseguito un dottorato di ricerca presso la Stanford University.

Timestamp:

Di più da Apprendimento automatico di AWS