Generativ dataintelligens

Automatiser din tidsserieprognose i Snowflake ved hjælp af Amazon Forecast

Dato:

Dette indlæg er et fælles samarbejde med Andries Engelbrecht og James Sun fra Snowflake, Inc.

Cloud computing-revolutionen har gjort det muligt for virksomheder at indfange og beholde virksomheds- og organisationsdata uden kapacitetsplanlægning eller datalagringsbegrænsninger. Nu, med forskellige og enorme reserver af longitudinelle data, er virksomheder i stigende grad i stand til at finde nye og virkningsfulde måder at bruge deres digitale aktiver til at træffe bedre og informerede beslutninger, når de træffer kortsigtede og langsigtede planlægningsbeslutninger. Tidsserieprognoser er en unik og væsentlig videnskab, der giver virksomheder mulighed for at træffe kirurgiske planlægningsbeslutninger for at hjælpe med at balancere kundeserviceniveauer mod ofte konkurrerende mål om optimal rentabilitet.

Hos AWS arbejder vi nogle gange med kunder, der har valgt vores teknologipartner Snowflake at levere en cloud-dataplatformoplevelse. At have en platform, der kan huske år og år med historiske data er kraftfuldt – men hvordan kan du bruge disse data til at se fremad og bruge gårsdagens beviser til at planlægge for i morgen? Forestil dig, at du ikke kun har det, der er sket, tilgængeligt i Snowflake – din enkelte version af sandheden – men også et tilstødende sæt af ikke-silo-baserede data, der tilbyder en sandsynlighedsprognose for dage, uger eller måneder ud i fremtiden.

I en kollaborativ forsyningskæde kan deling af information mellem partnere forbedre ydeevnen, øge konkurrenceevnen og reducere spildte ressourcer. Deling af dine fremtidige prognoser kan lettes med Snefnug-datadeling, som gør dig i stand til problemfrit at samarbejde med dine forretningspartnere sikkert og identificere forretningsindsigt. Hvis mange partnere deler deres prognoser, kan det hjælpe med at kontrollere bullwhip-effekten i den forbundne forsyningskæde. Du kan effektivt bruge Snowflake Marketplace at tjene penge på dine forudsigelige analyser fra datasæt produceret i Amazon prognose.

I dette indlæg diskuterer vi, hvordan man implementerer en automatiseret tidsserieforudsigelsesløsning ved hjælp af Snowflake og Forecast.

Væsentlige AWS-tjenester, der muliggør denne løsning

Forecast leverer adskillige state-of-the-art tidsseriealgoritmer og styrer allokeringen af ​​nok distribueret computerkapacitet til at imødekomme behovene for næsten enhver arbejdsbyrde. Med Forecast får du ikke én model; får du styrken af ​​mange modeller, der er yderligere optimeret til en unikt vægtet model for hver tidsserie i sættet. Kort sagt leverer tjenesten al videnskab, datahåndtering og ressourcestyring i et simpelt API-kald.

AWS-trinfunktioner giver en procesorkestreringsmekanisme, der styrer den overordnede arbejdsgang. Tjenesten indkapsler API-kald med Amazonas Athena, AWS Lambda, og Forecast til at skabe en automatiseret løsning, der høster data fra Snowflake, bruger Forecast til at konvertere historiske data til fremtidige forudsigelser og derefter opretter dataene inde i Snowflake.

Athena-forbundne forespørgsler kan oprette forbindelse til flere virksomhedsdatakilder, herunder Amazon DynamoDB, Amazon rødforskydning, Amazon OpenSearch Service, MySQL, PostgreSQL, Redis og andre populære tredjepartsdatabutikker, såsom Snowflake. Dataforbindelser kører som Lambda-funktioner - du kan bruge denne kildekode til at hjælpe med at starte Amazon Athena Lambda Snowflake Connector og forbinde med AWS PrivateLink eller gennem en NAT Gateway.

Løsningsoversigt

En af de ting, vi ofte gør hos AWS, er at arbejde med at hjælpe kunder med at realisere deres mål, samtidig med at vi fjerner byrden af ​​de udifferentierede tunge løft. Med dette i tankerne foreslår vi følgende løsninger for at hjælpe AWS- og Snowflake-kunder med at udføre følgende trin:

  1. Eksporter data fra Snowflake. Du kan bruge fleksible metadata til at udlæse de nødvendige historiske data drevet af en klar-til-gå-workflow.
  2. Importer data til Forecast. Uanset brugssituation, branche eller skala, er import af forberedte datainput let og automatiseret.
  3. Træn en state-of-the-art tidsseriemodel. Du kan automatisere tidsserieprognoser uden at administrere den underliggende datavidenskab eller hardware-provisionering.
  4. Generer slutninger mod den trænede model. Forecast-producerede output er nemme at forbruge til ethvert formål. De er tilgængelige som simple CSV- eller Parketfiler på Amazon Simple Storage Service (Amazon S3).
  5. Brug historie og fremtidige forudsigelser side om side direkte i Snowflake.

Følgende diagram illustrerer, hvordan man implementerer en automatiseret arbejdsgang, der gør det muligt for Snowflake-kunder at drage fordel af meget nøjagtige tidsserieforudsigelser understøttet af Forecast, en AWS-administreret tjeneste. Designet, der tilbydes her, overskrider anvendelsestilfælde og industri, og udtrækker først historiske data fra Snowflake. Derefter sender arbejdsgangen de forberedte data til tidsserieberegning. Endelig er forudsigelser af fremtidige perioder tilgængelige i Snowflake, hvilket skaber en problemfri brugeroplevelse for fælles AWS- og Snowflake-kunder.

Selvom denne arkitektur kun fremhæver de vigtigste tekniske detaljer, er løsningen enkel at sammensætte, nogle gange inden for 1-2 hverdage. Vi giver dig en fungerende prøvekode for at hjælpe med at fjerne de udifferentierede tunge løft ved at skabe løsningen alene og uden et forspring. Når du har opdaget, hvordan du implementerer dette mønster for én arbejdsbelastning, kan du gentage prognoseprocessen for alle data, der opbevares i Snowflake. I de følgende afsnit skitserer vi de vigtigste trin, der gør det muligt for dig at bygge en automatiseret pipeline.

Uddrag historiske data fra Snowflake

I dette første trin bruger du SQL til at definere, hvilke data du vil have prognostiseret, og lader en Athena Federated Query oprette forbindelse til Snowflake, køre din tilpassede SQL og fortsætte den resulterende rekord, der er sat på Amazon S3. Forecast kræver, at historiske træningsdata er tilgængelige på Amazon S3 før indtagelse; derfor fungerer Amazon S3 som en mellemlagringsbuffer mellem Snowflake og Forecast. Vi har Athena i dette design for at aktivere Snowflake og andre heterogene datakilder. Hvis du foretrækker det, er en anden tilgang at bruge Snowflake COPY-kommandoen og lagerintegration til at skrive forespørgselsresultater til Amazon S3.

Uanset hvilken transportmekanisme der bruges, skitserer vi nu, hvilken type data prognosen har brug for, og hvordan data defineres, forberedes og udtrækkes. I det følgende afsnit beskriver vi, hvordan du importerer data til Forecast.

Følgende skærmbillede viser, hvordan et sæt data kan se ud i dets oprindelige Snowflake-skema.

Selvom dette skærmbillede viser, hvordan dataene ser ud i deres naturlige tilstand, kræver Forecast, at data formes til tre forskellige datasæt:

  • Måltidsserie – Dette er et påkrævet datasæt, der indeholder målvariablen og bruges til at træne og forudsige en fremtidig værdi. Alene dette datasæt fungerer som en univariat tidsseriemodel.
  • Relaterede tidsserier – Dette er et valgfrit datasæt, der indeholder tidsvariable, der skal have en relation til målvariablen. Eksempler inkluderer variabel prissætning, salgsfremmende indsats, hyperlokal begivenhedstrafik, økonomiske udsigtsdata – alt, hvad du føler, kan hjælpe med at forklare variansen i måltidsserien og producere en bedre prognose. Det relaterede tidsseriedatasæt gør din univariate model til en multivariat for at hjælpe med at forbedre nøjagtigheden.
  • Vare metadata – Dette er et valgfrit datasæt, der indeholder kategoriske data om det forventede element. Varemetadata hjælper ofte med at øge ydeevnen for nyligt lancerede produkter, som vi kalder en koldstart.

Med omfanget af hvert af prognosedatasættene defineret, kan du skrive forespørgsler i Snowflake, der henter de korrekte datafelter fra de nødvendige kildetabeller med de korrekte filtre for at få det ønskede undersæt af data. Følgende er tre eksempler på SQL-forespørgsler, der bruges til at generere hvert datasæt, som Forecast har brug for til et specifikt fødevareefterspørgselsplanlægningsscenario.

Vi starter med måltidsserieforespørgslen:

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

Den valgfrie relaterede tidsserieforespørgsel trækker kovariater såsom pris og kampagne:

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

Elementmetadataforespørgslen henter særskilte kategoriske værdier, der hjælper med at give dimension og yderligere definere det forventede element:

select DISTINCT ITEM_ID, FOOD_CATEGORY, FOOD_CUISINE
from DEMO.FOOD_DEMAND

Med kildeforespørgslerne defineret kan vi oprette forbindelse til Snowflake gennem en Athena Federated Query for at sende forespørgslerne og fortsætte de resulterende datasæt til prognosebrug. For mere information, se Forespørg Snowflake ved hjælp af Athena Federated Query, og deltag med data i din Amazon S3-datasø.

Athena Snowflake Connector GitHub repo hjælper med at installere Snowflake-stikket. Det Prognose MLOps GitHub repo hjælper med at orkestrere alle makrotrin, der er defineret i dette indlæg, og gør dem gentagelige uden at skrive kode.

Importer data til Forecast

Når vi har fuldført det forrige trin, er et måltidsseriedatasæt i Amazon S3 og klar til import i Forecast. Derudover kan de valgfrie relaterede tidsserier og elementmetadatadatasæt også være forberedt og klar til indtagelse. Med det medfølgende Forecast MLOps løsning, alt hvad du skal gøre her er at starte Step Functions-tilstandsmaskinen, der er ansvarlig for at importere data - ingen kode er nødvendig. Forecast lancerer en klynge for hvert af de datasæt, du har leveret, og gør dataene klar til, at tjenesten kan bruges til ML-modelopbygning og modelslutning.

Opret en tidsserie ML-model med nøjagtighedsstatistik

Efter at data er blevet importeret, oprettes meget nøjagtige tidsseriemodeller blot ved at kalde et API. Dette trin er indkapslet inde i en Step Functions-tilstandsmaskine, der starter Forecast API'et for at starte modeltræning. Efter at prædiktormodellen er trænet, eksporterer statsmaskinen modelstatistikken og forudsigelserne under backtest-vinduet til Amazon S3. Backtest-eksporter kan forespørges af Snowflake som en ekstern fase, som vist på det følgende skærmbillede. Hvis du foretrækker det, kan du gemme dataene i en intern fase. Pointen er at bruge backtest-metrikkene til at evaluere præstationsspredningen af ​​tidsserier i dit datasæt.

Opret fremtidige forudsigelser

Med modellen trænet fra det forrige trin, kalder en specialbygget Step Functions-tilstandsmaskine Forecast API'et for at skabe fremtidsdaterede prognoser. Prognose sørger for en klynge til at udføre slutningen og trækker de importerede måltidsserier, relaterede tidsserier og elementmetadatadatasæt gennem en navngivet forudsigelsesmodel, der blev oprettet i det foregående trin. Efter forudsigelserne er genereret, skriver statsmaskinen dem til Amazon S3, hvor de igen kan forespørges på plads som en Snowflake ekstern scene eller flyttes ind i Snowflake som en intern scene.

Brug de fremtidsdaterede forudsigelsesdata direkte i Snowflake

AWS har ikke bygget en fuldautomatisk løsning til dette trin; men med løsningen i dette indlæg blev data allerede produceret af Forecast i de to foregående trin. Du kan behandle output som handlingsrettede begivenheder eller bygge business intelligence-dashboards på dataene. Du kan også bruge dataene til at oprette fremtidige produktionsplaner og indkøbsordrer, estimere fremtidig omsætning, opbygge personaleressourceplaner og mere. Hvert brugstilfælde er forskelligt, men pointen med dette trin er at levere forudsigelserne til de korrekte forbrugende systemer i din organisation eller videre.

Følgende kodestykke viser, hvordan du forespørger Amazon S3-data direkte fra 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);

For mere information om opsætning af tilladelser, se Mulighed 1: Konfiguration af en Snowflake Storage Integration for at få adgang til Amazon S3. Derudover kan du bruge AWS servicekatalog at konfigurere Amazon S3 storage integration; mere information findes på GitHub repo.

Start en tidsplanbaseret eller begivenhedsbaseret arbejdsgang

Når du har installeret en løsning til din specifikke arbejdsbyrde, er dit sidste trin at automatisere processen efter en tidsplan, der giver mening for dit unikke krav, såsom dagligt eller ugentligt. Det vigtigste er at beslutte, hvordan man starter processen. En metode er at bruge Snowflake til at starte Step Functions-tilstandsmaskinen og derefter orkestrere trinnene serielt. En anden tilgang er at kæde statsmaskiner sammen og starte den overordnede kørsel gennem en Amazon Eventbridge regel, som du kan konfigurere til at køre fra en begivenhed eller planlagt opgave - for eksempel kl. 9:00 GMT-8 hver søndag aften.

Konklusion

Med mest erfaring; den mest pålidelige, skalerbare og sikre sky; og det mest omfattende sæt af tjenester og løsninger, AWS er ​​det bedste sted at frigøre værdi fra dine data og omdanne dem til indsigt. I dette indlæg viste vi dig, hvordan du opretter en automatiseret arbejdsgang for tidsserieprognoser. Bedre prognoser kan føre til højere kundeserviceresultater, mindre spild, mindre ledig beholdning og flere kontanter på balancen.

Hvis du er klar til at automatisere og forbedre prognoser, er vi her for at hjælpe dig på din rejse. Kontakt dit AWS- eller Snowflake-kontoteam for at komme i gang i dag og bed om et prognoseværksted for at se, hvilken slags værdi du kan låse op for dine data.


Om forfatterne

Bosco Albuquerque er Sr. Partner Solutions Architect hos AWS og har over 20 års erfaring med at arbejde med database- og analyseprodukter fra virksomhedsdatabaseleverandører og cloud-udbydere. Han har hjulpet teknologivirksomheder med at designe og implementere dataanalyseløsninger og -produkter.

Frank Dalezotte er Sr. Solutions Architect hos AWS og brænder for at arbejde med uafhængige softwareleverandører for at designe og bygge skalerbare applikationer på AWS. Han har erfaring med at skabe software, implementere byggepipelines og implementere disse løsninger i skyen.

Andries Engelbrecht er Principal Partner Solutions Architect hos Snowflake og arbejder med strategiske partnere. Han er aktivt engageret med strategiske partnere som AWS, der understøtter produkt- og serviceintegrationer samt udvikling af fælles løsninger med partnere. Andries har over 20 års erfaring inden for data og analyse.

Charles Laughlin er Principal AI/ML Specialist Solutions Architect og arbejder på Time Series ML-teamet hos AWS. Han hjælper med at forme Amazon Forecast-tjenestens køreplan og samarbejder dagligt med forskellige AWS-kunder for at hjælpe med at transformere deres virksomheder ved hjælp af avancerede AWS-teknologier og tankelederskab. Charles har en MS i Supply Chain Management og har brugt det seneste årti på at arbejde i industrien for forbrugsvarer.

James Sun er Senior Partner Solutions Architect hos Snowflake. James har over 20 års erfaring med opbevaring og dataanalyse. Før Snowflake havde han flere ledende tekniske stillinger hos AWS og MapR. James har en PhD fra Stanford University.

spot_img

Seneste efterretninger

spot_img

Chat med os

Hej! Hvordan kan jeg hjælpe dig?