ゼファーネットのロゴ

Amazon Forecast を使用して Snowflake で時系列予測を自動化する

日付:

この投稿は、Snowflake, Inc. の Andries Engelbrecht と James Sun との共同作業です。

クラウド コンピューティング革命により、企業はキャパシティ プランニングやデータ保持の制約なしに、企業および組織のデータを取得して保持できるようになりました。 現在、多様で膨大な長期データが蓄積されているため、企業はデジタル資産を使用して、短期および長期の計画決定を行う際に、より適切で十分な情報に基づいた決定を下すための斬新で影響力のある方法をますます見つけることができるようになっています。 時系列予測は、企業が最適な収益性というしばしば競合する目標に対して顧客サービス レベルのバランスをとるために外科的計画の決定を行うことを可能にする、ユニークで不可欠な科学です。

AWS では、テクノロジー パートナーを選択したお客様と仕事をすることがあります。 スノーフレーク クラウド データ プラットフォーム エクスペリエンスを提供します。 何年にもわたる過去のデータを思い出すことができるプラットフォームを持つことは強力ですが、このデータを使用して先を見据え、昨日の証拠を使用して明日の計画を立てるにはどうすればよいでしょうか? 起こったことを Snowflake で利用できるようにするだけでなく、数日、数週間、または数か月先の確率的予測を提供するサイロ化されていないデータの隣接セットも利用できると想像してください。

共同サプライ チェーンでは、パートナー間で情報を共有することで、パフォーマンスを向上させ、競争力を高め、無駄なリソースを削減できます。 将来の予測の共有は、 Snowflake データ共有を使用すると、ビジネス パートナーと安全にシームレスにコラボレーションし、ビジネス インサイトを特定できます。 多くのパートナーが予測を共有すると、接続されたサプライ チェーンにおけるブルウィップ効果を制御するのに役立ちます。 有効活用できます スノーフレークマーケットプレイス で作成されたデータセットから予測分析を収益化する アマゾン予測.

この投稿では、Snowflake と Forecast を使用して自動化された時系列予測ソリューションを実装する方法について説明します。

このソリューションを可能にする重要な AWS サービス

Forecast は、いくつかの最先端の時系列アルゴリズムを提供し、ほぼすべてのワークロードのニーズを満たすのに十分な分散コンピューティング容量の割り当てを管理します。 Forecast では、モデルは XNUMX つではありません。 セット内の各時系列に対して一意に重み付けされたモデルにさらに最適化された多くのモデルの強みを得ることができます。 つまり、このサービスは、すべての科学、データ処理、およびリソース管理を単純な API 呼び出しに提供します。

AWSステップ関数 ワークフロー全体を管理するプロセス オーケストレーション メカニズムを提供します。 このサービスは、API 呼び出しをカプセル化します。 アマゾンアテナ, AWSラムダ、および Forecast は、Snowflake からデータを収集し、Forecast を使用して履歴データを将来の予測に変換し、Snowflake 内でデータを作成する自動化されたソリューションを作成します。

Athena フェデレーション クエリは、以下を含む複数のエンタープライズ データ ソースに接続できます。 Amazon DynamoDB, Amazonレッドシフト, AmazonOpenSearchサービス、MySQL、PostgreSQL、Redis、および Snowflake などのその他の一般的なサードパーティ データ ストア。 データ コネクタは Lambda 関数として実行されます。このソース コードを使用して、 Amazon Athena Lambda Snowflake コネクタ と接続する AWS プライベートリンク または NAT ゲートウェイ経由。

ソリューションの概要

AWS でよく行うことの XNUMX つは、お客様が目標を達成できるように支援すると同時に、差別化されていない重労働の負担を取り除くことです。 これを踏まえて、以下を提案します。 溶液 AWS および Snowflake のお客様が次の手順を実行できるようにします。

  1. Snowflake からデータをエクスポートします。 柔軟なメタデータを使用して、すぐに使えるワークフローによって駆動される必要な履歴データをアンロードできます。
  2. データを Forecast にインポートします。 ユースケース、業界、または規模に関係なく、準備されたデータ入力のインポートは簡単で自動化されています。
  3. 最先端の時系列モデルをトレーニングします。 基盤となるデータ サイエンスやハードウェア プロビジョニングを管理することなく、時系列予測を自動化できます。
  4. トレーニング済みモデルに対して推論を生成します。 予測によって生成された出力は、あらゆる目的で簡単に使用できます。 これらは、単純な CSV または Parquet ファイルとして利用できます。 Amazon シンプル ストレージ サービス (Amazon S3)。
  5. 過去と将来の予測を Snowflake で直接並べて使用します。

次の図は、AWS マネージド サービスである Forecast がサポートする非常に正確な時系列予測を Snowflake のお客様が利用できるようにする自動化されたワークフローを実装する方法を示しています。 ユースケースと業界を超えて、ここで提供される設計は、最初に Snowflake から履歴データを抽出します。 次に、ワークフローは時系列計算のために準備されたデータを送信します。 最後に、将来の期間予測は Snowflake でネイティブに利用でき、AWS と Snowflake の共同顧客にシームレスなユーザー エクスペリエンスを提供します。

このアーキテクチャは主要な技術的な詳細のみを強調していますが、ソリューションは簡単に組み立てることができ、場合によっては 1 ~ 2 営業日以内に組み立てることができます。 単独で有利なスタートを切ることなく、単独でソリューションを作成するという、差別化につながらない重労働を取り除くのに役立つ実用的なサンプル コードを提供します。 XNUMX つのワークロードにこのパターンを実装する方法を見つけたら、Snowflake に保持されているデータに対して予測プロセスを繰り返すことができます。 以下のセクションでは、自動化されたパイプラインを構築するための主要な手順について概説します。

Snowflake から履歴データを抽出する

この最初のステップでは、SQL を使用して予測するデータを定義し、Athena Federated Query を Snowflake に接続させ、カスタマイズした SQL を実行し、結果のレコード セットを Amazon S3 に保持します。 予測では、取り込み前に過去のトレーニング データを Amazon S3 で利用できる必要があります。 したがって、Amazon S3 は Snowflake と Forecast の間の中間ストレージ バッファーとして機能します。 この設計では Athena を使用して、Snowflake やその他の異種データ ソースを有効にします。 必要に応じて、Snowflake COPY コマンドとストレージ統合を使用してクエリ結果を Amazon S3 に書き込む別の方法もあります。

使用されるトランスポート メカニズムに関係なく、Forecast が必要とするデータの種類と、データの定義、準備、および抽出の方法について概説します。 次のセクションでは、Forecast にデータをインポートする方法について説明します。

次のスクリーンショットは、一連のデータがネイティブの Snowflake スキーマでどのように見えるかを示しています。

このスクリーンショットはデータが自然な状態でどのように見えるかを示していますが、Forecast ではデータを XNUMX つの異なるデータセットに整形する必要があります。

  • 対象時系列 – これは、ターゲット変数を含む必須のデータセットであり、将来の値をトレーニングおよび予測するために使用されます。 このデータセットだけでも、単変量の時系列モデルとして機能します。
  • 関連する時系列 – これは、ターゲット変数との関係を持つ時間変数を含むオプションのデータセットです。 例としては、可変価格設定、プロモーション活動、ハイパーローカル イベント トラフィック、経済見通しデータなど、ターゲット時系列の差異を説明し、より良い予測を作成するのに役立つと思われるものは何でもあります。 関連する時系列データセットにより、単変量モデルが多変量モデルに変換され、精度が向上します。
  • アイテムのメタデータ – これは、予測項目に関するカテゴリ データを含むオプションのデータセットです。 アイテムのメタデータは、多くの場合、新しく発売された製品のパフォーマンスを向上させるのに役立ちます。 コールドスタート.

各予測データセットの範囲が定義されているので、適切なフィルターを使用して必要なソース テーブルから正しいデータ フィールドを取得し、必要なデータのサブセットを取得するクエリを Snowflake で作成できます。 以下は、特定の食品需要計画シナリオで Forecast が必要とする各データセットを生成するために使用される XNUMX つの SQL クエリの例です。

対象の時系列クエリから始めます。

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

ソースクエリを定義したら、Athena Federated Query を介して Snowflake に接続し、クエリを送信して、結果のデータセットを予測用に保持できます。 詳細については、次を参照してください。 Athena Federated Queryを使用してSnowflakeにクエリを実行し、AmazonS3データレイクのデータと結合します.

  Athena Snowflake コネクタ GitHub リポジトリ Snowflake コネクタのインストールに役立ちます。 の 予測 MLOps GitHub リポジトリ は、この投稿で定義されたすべてのマクロ ステップを調整するのに役立ち、コードを記述せずにそれらを繰り返し可能にします。

Forecast にデータをインポートする

前のステップを完了すると、ターゲット時系列データセットが Amazon S3 にあり、Forecast にインポートする準備が整います。 さらに、オプションの関連する時系列およびアイテム メタデータ データセットも準備され、取り込みの準備ができている場合があります。 提供された 予測 MLOps ソリューション、ここで行う必要があるのは、データのインポートを担当する Step Functions ステート マシンを開始することだけです。コードは必要ありません。 Forecast は、提供されたデータセットごとにクラスターを起動し、サービスが ML モデルの構築とモデルの推論に使用できるようにデータを準備します。

精度統計を使用して時系列 ML モデルを作成する

データ取り込み後は、APIを呼び出すだけで精度の高い時系列モデルが作成されます。 このステップは、Forecast API を開始してモデルのトレーニングを開始する Step Functions ステート マシン内にカプセル化されます。 予測モデルがトレーニングされた後、ステート マシンは、バックテスト ウィンドウ中にモデルの統計と予測を Amazon S3 にエクスポートします。 バックテスト エクスポートは、次のスクリーンショットに示すように、Snowflake によって外部ステージとしてクエリ可能です。 必要に応じて、データを内部ステージに保存できます。 ポイントは、バックテスト メトリクスを使用して、提供されたデータセットの時系列のパフォーマンスの広がりを評価することです。

将来の予測を作成する

前のステップでトレーニングされたモデルを使用して、専用の Step Functions ステート マシンが Forecast API を呼び出して将来の日付の予測を作成します。 Forecast は、クラスターをプロビジョニングして推論を実行し、インポートされたターゲット時系列、関連する時系列、およびアイテム メタデータ データセットを、前の手順で作成された名前付き予測モデルを通じてプルします。 予測が生成された後、ステート マシンはそれらを Amazon S3 に書き込みます。ここでも、Snowflake 外部ステージとして適切な場所でクエリを実行したり、内部ステージとして Snowflake に移動したりできます。

Snowflakeで将来の日付の予測データを直接使用する

AWS は、このステップの完全に自動化されたソリューションを構築していません。 ただし、この投稿のソリューションでは、データは前の XNUMX つのステップで Forecast によって既に生成されています。 出力をアクション可能なイベントとして扱うか、データに基づいてビジネス インテリジェンス ダッシュボードを構築できます。 また、データを使用して、将来の製造計画と発注書を作成し、将来の収益を見積もり、人員配置計画を作成することもできます。 ユースケースはそれぞれ異なりますが、このステップのポイントは、組織内またはそれ以外の正しい消費システムに予測を配信することです。

次のコード スニペットは、Snowflake 内から直接 Amazon S3 データをクエリする方法を示しています。

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: Amazon S3 にアクセスするための Snowflake ストレージ統合の設定。 さらに、あなたは使用することができます AWSサービスカタログ Amazon S3 ストレージ統合を構成する。 詳細については、 GitHubレポ.

スケジュールベースまたはイベントベースのワークフローを開始する

特定のワークロード用のソリューションをインストールしたら、最後のステップは、毎日または毎週など、独自の要件に適したスケジュールでプロセスを自動化することです。 主なことは、プロセスを開始する方法を決定することです。 XNUMX つの方法は、Snowflake を使用して Step Functions ステート マシンを呼び出してから、ステップを順番にオーケストレーションすることです。 もう XNUMX つのアプローチは、ステート マシンをチェーン化し、全体的な実行を開始することです。 アマゾンイベントブリッジ これは、イベントまたはスケジュールされたタスクから実行するように構成できます (たとえば、毎週日曜日の夜 9:00 PM GMT-8)。

まとめ

最も経験豊富な; 最も信頼性が高く、スケーラブルで安全なクラウド。 最も包括的なサービスとソリューションのセットである AWS は、データから価値を解き放ち、洞察に変えるのに最適な場所です。 この投稿では、自動化された時系列予測ワークフローを作成する方法を紹介しました。 より良い予測は、より高い顧客サービスの成果、無駄の削減、遊休在庫の削減、貸借対照表上の現金の増加につながります。

予測を自動化して改善する準備ができている場合は、私たちがお手伝いします。 AWS または Snowflake アカウント チームに連絡して今すぐ開始し、予測ワークショップを依頼して、データからどのような価値を引き出すことができるかを確認してください。


著者について

ボスコ・アルバカーキ AWS のシニア パートナー ソリューション アーキテクトであり、エンタープライズ データベース ベンダーおよびクラウド プロバイダーのデータベースおよび分析製品を 20 年以上使用してきた経験があります。 彼は、テクノロジー企業がデータ分析ソリューションと製品を設計および実装するのを支援してきました。

フランク・ダレゾット AWS のシニア ソリューション アーキテクトであり、独立系ソフトウェア ベンダーと協力して AWS でスケーラブルなアプリケーションを設計および構築することに情熱を注いでいます。 彼は、ソフトウェアの作成、ビルド パイプラインの実装、およびこれらのソリューションのクラウドへのデプロイの経験があります。

アンドリー・エンゲルブレヒト Snowflake のプリンシパル パートナー ソリューション アーキテクトであり、戦略的パートナーと協力しています。 彼は、製品やサービスの統合をサポートする AWS のような戦略的パートナーや、パートナーとの共同ソリューションの開発に積極的に取り組んでいます。 Andries は、データと分析の分野で 20 年以上の経験があります。

チャールズ・ラフリン プリンシパル AI/ML スペシャリスト ソリューション アーキテクトであり、AWS の時系列 ML チームで働いています。 彼は、Amazon Forecast サービスのロードマップの策定を支援し、さまざまな AWS のお客様と日々協力して、最先端の AWS テクノロジーとソート リーダーシップを使用してビジネスを変革するのを支援しています。 Charles はサプライ チェーン管理の修士号を取得しており、過去 XNUMX 年間、消費財業界で働いてきました。

ジェームスサン Snowflake のシニア パートナー ソリューション アーキテクトです。 James は、ストレージとデータ分析において 20 年以上の経験があります。 Snowflake の前は、AWS と MapR でいくつかの上級技術職を務めていました。 ジェームズはスタンフォード大学で博士号を取得しています。

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?