Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast

Ця публікація створена спільно з Андрісом Енгельбрехтом і Джеймсом Саном із Snowflake, Inc.

Революція хмарних обчислень дозволила підприємствам отримувати та зберігати корпоративні та організаційні дані без планування потужностей або обмежень щодо збереження даних. Тепер, маючи різноманітні та величезні запаси лонгітюдних даних, компанії все частіше можуть знаходити нові та ефективні способи використання своїх цифрових активів для прийняття кращих та обґрунтованих рішень під час прийняття короткострокових і довгострокових рішень щодо планування. Прогнозування часових рядів — це унікальна та важлива наука, яка дозволяє компаніям приймати рішення щодо планування операцій, щоб допомогти збалансувати рівень обслуговування клієнтів із часто конкуруючими цілями оптимальної прибутковості.

В AWS іноді ми працюємо з клієнтами, які вибрали нашого технологічного партнера Сніжинка щоб забезпечити роботу з хмарною платформою даних. Наявність платформи, яка може згадувати історичні дані за роки й роки, — це потужно, але як ви можете використовувати ці дані, щоб дивитися вперед і використовувати вчорашні докази для планування на завтра? Уявіть собі, що у Snowflake є не лише те, що трапилося — ваша єдина версія правди, — але й суміжний набір нерозрізнених даних, які пропонують імовірнісний прогноз на дні, тижні чи місяці в майбутньому.

У спільному ланцюжку постачання обмін інформацією між партнерами може покращити продуктивність, підвищити конкурентоспроможність і зменшити витрати ресурсів. Поділитися своїми майбутніми прогнозами можна з Обмін даними Snowflake, що дає вам змогу безпечно співпрацювати з вашими діловими партнерами та визначати інформацію про бізнес. Якщо багато партнерів діляться своїми прогнозами, це може допомогти контролювати ефект бича у зв’язаному ланцюжку поставок. Ви можете ефективно використовувати Ринок сніжинок щоб монетизувати свою прогнозну аналітику з наборів даних, створених у Прогноз Amazon.

У цій публікації ми обговорюємо, як реалізувати автоматизоване рішення для прогнозування часових рядів за допомогою Snowflake і Forecast.

Основні сервіси AWS, які забезпечують це рішення

Forecast надає кілька найсучасніших алгоритмів часових рядів і керує розподілом достатньої розподіленої обчислювальної потужності для задоволення потреб майже будь-якого робочого навантаження. За допомогою Forecast ви не отримуєте одну модель; ви отримуєте силу багатьох моделей, які додатково оптимізуються в унікально зважену модель для кожного часового ряду в наборі. Коротше кажучи, сервіс забезпечує всю науку, обробку даних і керування ресурсами в простому виклику API.

Функції кроку AWS забезпечує механізм оркестровки процесу, який керує загальним робочим процесом. Служба інкапсулює виклики API за допомогою Амазонка Афіна, AWS Lambdaі Forecast для створення автоматизованого рішення, яке збирає дані зі Snowflake, використовує Forecast для перетворення історичних даних у майбутні прогнози, а потім створює дані всередині Snowflake.

Об’єднані запити Athena можуть підключатися до кількох корпоративних джерел даних, у тому числі Amazon DynamoDB, Амазонська червона зміна, Служба Amazon OpenSearch, MySQL, PostgreSQL, Redis та інші популярні сторонні сховища даних, такі як Snowflake. З’єднувачі даних працюють як лямбда-функції — ви можете використовувати цей вихідний код, щоб допомогти запустити Amazon Athena Lambda Snowflake Connector і з'єднайся AWS PrivateLink або через шлюз NAT.

Огляд рішення

Однією з речей, які ми часто робимо в AWS, є робота, щоб допомогти клієнтам реалізувати їхні цілі, одночасно знімаючи тягар недиференційованої важкої роботи. Зважаючи на це, ми пропонуємо наступне рішення щоб допомогти клієнтам AWS і Snowflake виконати такі дії:

  1. Експорт даних зі Snowflake. Ви можете використовувати гнучкі метадані для вивантаження необхідних історичних даних за допомогою готового робочого процесу.
  2. Імпорт даних у Forecast. Незалежно від варіанту використання, галузі чи масштабу імпорт підготовлених вхідних даних є простим і автоматизованим.
  3. Навчіть сучасну модель часових рядів. Ви можете автоматизувати прогнозування часових рядів, не керуючи основними науковими даними чи підготовкою апаратного забезпечення.
  4. Зробіть висновок на основі навченої моделі. Прогнозовані результати легко використовувати для будь-яких цілей. Вони доступні як прості файли CSV або Parquet на Служба простого зберігання Amazon (Amazon S3).
  5. Використовуйте історію та майбутні прогнози поруч безпосередньо в Snowflake.

На наступній діаграмі показано, як реалізувати автоматизований робочий процес, який дає змогу клієнтам Snowflake отримувати переваги від високоточних прогнозів часових рядів, підтримуваних Forecast, керованим сервісом AWS. Пропонований тут дизайн витягує історичні дані зі Snowflake. Далі робочий процес надсилає підготовлені дані для обчислення часових рядів. Нарешті, передбачення майбутніх періодів доступні безпосередньо в Snowflake, створюючи зручну взаємодію для спільних клієнтів AWS і Snowflake.

Хоча ця архітектура висвітлює лише ключові технічні деталі, рішення легко зібрати, іноді протягом 1–2 робочих днів. Ми надаємо вам робочий зразок коду, щоб допомогти усунути недиференційовану важку роботу, пов’язану зі створенням рішення поодинці й без фори. Після того, як ви дізнаєтеся, як застосувати цей шаблон для одного робочого навантаження, ви можете повторити процес прогнозування для будь-яких даних, які зберігаються в Snowflake. У наступних розділах ми описуємо ключові кроки, які дозволять вам створити автоматизований конвеєр.

Отримайте історичні дані зі Snowflake

На цьому першому кроці ви використовуєте SQL, щоб визначити, які дані ви хочете спрогнозувати, і дозволяєте федеративному запиту Athena підключатися до Snowflake, запускаєте налаштований SQL і зберігаєте отриманий набір записів на Amazon S3. Прогноз вимагає, щоб історичні дані навчання були доступні на Amazon S3 перед прийомом; тому Amazon S3 служить проміжним буфером зберігання між Snowflake і Forecast. Ми використовуємо Athena в цьому дизайні, щоб увімкнути Snowflake та інші різнорідні джерела даних. Якщо ви віддаєте перевагу, інший підхід полягає в використанні команди Snowflake COPY та інтеграції сховища для запису результатів запиту в Amazon S3.

Незалежно від використовуваного транспортного механізму, тепер ми визначаємо тип даних, які потребує Forecast, і те, як дані визначаються, готуються та витягуються. У наступному розділі ми описуємо, як імпортувати дані в Forecast.

На наступному знімку екрана показано, як може виглядати набір даних у його рідній схемі Snowflake.

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Хоча цей знімок екрана показує, як дані виглядають у природному стані, Forecast вимагає, щоб дані були сформовані в три різні набори даних:

  • Цільовий часовий ряд – Це необхідний набір даних, що містить цільову змінну та використовується для навчання та прогнозування майбутнього значення. Сам по собі цей набір даних служить однофакторною моделлю часового ряду.
  • Пов'язані часові ряди – Це необов’язковий набір даних, який містить тимчасові змінні, які мають бути пов’язані з цільовою змінною. Приклади включають змінні ціни, рекламні заходи, трафік гіперлокальних подій, дані про економічні перспективи — все, що ви вважаєте, може допомогти пояснити дисперсію в цільовому часовому ряді та створити кращий прогноз. Пов’язаний набір даних часового ряду перетворює вашу одновимірну модель на багатовимірну, щоб підвищити точність.
  • Метадані елемента – Це необов’язковий набір даних, що містить категоричні дані про прогнозований елемент. Метадані елемента часто допомагають підвищити продуктивність нещодавно випущених продуктів, які ми називаємо a холодний старт.

Визначивши область кожного з наборів даних Forecast, ви можете писати запити в Snowflake, які отримують правильні поля даних із необхідних вихідних таблиць із відповідними фільтрами, щоб отримати потрібну підмножину даних. Нижче наведено три приклади SQL-запитів, які використовуються для створення кожного набору даних, необхідного Forecast для конкретного сценарію планування попиту на продукти харчування.

Ми починаємо із запиту цільового часового ряду:

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

Необов’язковий пов’язаний запит часового ряду витягує коваріанти, такі як ціна та промо:

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

Запит на метадані елемента отримує чіткі категоричні значення, які допомагають надати розмірність і додатково визначити прогнозований елемент:

select DISTINCT ITEM_ID, FOOD_CATEGORY, FOOD_CUISINE
from DEMO.FOOD_DEMAND

З визначеними джерельними запитами ми можемо підключитися до Snowflake через об’єднаний запит Athena, щоб надсилати запити та зберігати отримані набори даних для прогнозування. Для отримання додаткової інформації див Створіть запит Snowflake за допомогою Athena Federated Query та об’єднайтеся з даними в озері даних Amazon S3.

Команда Athena Snowflake Connector GitHub repo допомагає встановити коннектор Snowflake. The Прогноз MLOps GitHub repo допомагає організувати всі кроки макросу, визначені в цій публікації, і робить їх повторюваними без написання коду.

Імпорт даних у Forecast

Після завершення попереднього кроку цільовий набір даних часового ряду знаходиться в Amazon S3 і готовий для імпорту в Forecast. Крім того, необов’язкові пов’язані часові ряди та набори метаданих елементів також можуть бути підготовлені та готові до прийому. З наданим Прогноз рішення MLOps, все, що вам тут потрібно зробити, це ініціювати станковий автомат Step Functions, відповідальний за імпорт даних — код не потрібен. Forecast запускає кластер для кожного з наданих вами наборів даних і готує дані для використання службою для побудови моделі ML і моделювання.

Створіть модель ML часового ряду зі статистикою точності

Після імпорту даних високоточні моделі часових рядів створюються простим викликом API. Цей крок інкапсульовано в машині стану Step Functions, яка ініціює Forecast API для початку навчання моделі. Після навчання моделі предиктора кінцевий автомат експортує статистику моделі та прогнози під час вікна тестування в Amazon S3. Як показано на наступному знімку екрана, Snowflake може запитувати експорт бектестів як зовнішній етап. За бажанням ви можете зберігати дані на внутрішньому етапі. Суть полягає в тому, щоб використовувати метрики ретроспективного тестування для оцінки розкиду продуктивності часових рядів у наданому наборі даних.

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Створіть прогнози на майбутнє

З моделлю, навченою з попереднього кроку, спеціально створений автомат стану Step Functions викликає Forecast API для створення майбутніх прогнозів. Прогноз забезпечує кластер для виконання логічного висновку та отримує імпортовані цільові часові ряди, пов’язані часові ряди та набори даних метаданих елементів через іменовану модель прогнозування, створену на попередньому кроці. Після створення прогнозів кінцевий автомат записує їх до Amazon S3, де їх знову можна запитувати як зовнішній рівень Snowflake або переміщувати в Snowflake як внутрішній етап.

Використовуйте прогнозовані дані безпосередньо в Snowflake

AWS не розробила повністю автоматизоване рішення для цього етапу; однак із рішенням у цій публікації дані вже були створені Forecast на попередніх двох кроках. Ви можете розглядати вихідні дані як події, що потребують дії, або створювати на основі даних інформаційні панелі бізнес-аналітики. Ви також можете використовувати дані для створення майбутніх виробничих планів і замовлень на закупівлю, оцінки майбутнього доходу, створення планів кадрових ресурсів тощо. Кожен варіант використання відрізняється, але суть цього кроку полягає в тому, щоб передати прогнози правильним споживацьким системам у вашій організації чи за її межами.

У наступному фрагменті коду показано, як запитувати дані Amazon S3 безпосередньо в 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);

Додаткову інформацію про налаштування дозволів див Варіант 1: Налаштування інтеграції сховища Snowflake для доступу до Amazon S3. Крім того, ви можете використовувати Каталог послуг AWS налаштувати інтеграцію сховища Amazon S3; більше інформації доступно на GitHub репо.

Ініціюйте робочий процес на основі розкладу або події

Після встановлення рішення для конкретного робочого навантаження вашим останнім кроком є ​​автоматизація процесу за розкладом, який відповідає вашим унікальним потребам, наприклад щодня чи щотижня. Головне визначитися, з чого почати процес. Одним із методів є використання Snowflake для виклику кінцевого автомата Step Functions і подальшого послідовного оркестрування кроків. Інший підхід полягає в об’єднанні кінцевих автоматів і запуску загального запуску an Amazon EventBridge правило, яке можна налаштувати для запуску з події або запланованого завдання, наприклад, о 9:00 GMT-8 щонеділі ввечері.

Висновок

З найбільшим досвідом; найнадійніша, масштабована та безпечна хмара; і найповніший набір послуг і рішень, AWS є найкращим місцем, щоб розблокувати цінність ваших даних і перетворити їх на розуміння. У цій публікації ми показали вам, як створити автоматизований робочий процес прогнозування часових рядів. Краще прогнозування може призвести до кращих результатів обслуговування клієнтів, менше відходів, менше незадіяних запасів і більше готівки на балансі.

Якщо ви готові автоматизувати й покращити прогнозування, ми тут, щоб допомогти вам під час вашої подорожі. Зв’яжіться зі своєю командою облікових записів AWS або Snowflake, щоб почати сьогодні, і попросіть пройти семінар із прогнозування, щоб дізнатися, яку цінність ви можете розблокувати зі своїх даних.


Про авторів

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Боско Альбукерке є старшим архітектором партнерських рішень в AWS і має понад 20 років досвіду роботи з базами даних і аналітичними продуктами від постачальників корпоративних баз даних і хмарних провайдерів. Він допомагав технологічним компаніям розробляти та впроваджувати рішення та продукти для аналізу даних.

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Френк Даллезотт є старшим архітектором рішень в AWS і зацікавлений у співпраці з незалежними постачальниками програмного забезпечення для розробки та створення масштабованих програм на AWS. Він має досвід створення програмного забезпечення, впровадження конвеєрів збірки та розгортання цих рішень у хмарі.

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Андріс Енгельбрехт є головним партнерським архітектором рішень у Snowflake і працює зі стратегічними партнерами. Він активно співпрацює зі стратегічними партнерами, такими як AWS, підтримуючи інтеграцію продуктів і послуг, а також розробляючи спільні рішення з партнерами. Андріс має понад 20 років досвіду роботи у сфері даних та аналітики.

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Чарльз Лафлін є головним архітектором рішень AI/ML і працює в команді Time Series ML в AWS. Він допомагає формувати дорожню карту сервісу Amazon Forecast і щодня співпрацює з різноманітними клієнтами AWS, щоб допомогти трансформувати їхній бізнес за допомогою передових технологій AWS і інтелектуального лідерства. Чарльз має ступінь магістра з управління ланцюгами поставок і провів останнє десятиліття, працюючи в галузі споживчих упакованих товарів.

Автоматизуйте прогнозування часових рядів у Snowflake за допомогою Amazon Forecast PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Джеймс Сан є старшим архітектором партнерських рішень у Snowflake. Джеймс має більш ніж 20-річний досвід роботи у сфері зберігання та аналітики даних. До Snowflake він займав кілька керівних технічних посад в AWS і MapR. Джеймс має ступінь доктора філософії в Стенфордському університеті.

Часова мітка:

Більше від AWS Машинне навчання