「Amazon SageMakerでのMLOpsによる堅牢な時系列予測」
「Amazon SageMakerを活用したMLOpsによる信頼性の高い時系列予測」
データ駆動型の意思決定の世界では、時系列予測は将来の結果を予測するために過去のデータパターンを利用することでビジネスが可能になる鍵です。資産リスク管理、取引、天気予測、エネルギー需要予測、バイタルサインモニタリング、交通分析など、どのような分野でも正確な予測は成功するために重要です。
これらのアプリケーションでは、時系列データは重尾分布を持つ場合があります。重尾部分(tails)は極端な値を表しています。これらの領域での正確な予測は、極端なイベントの可能性と警報を発するかどうかを決定する上で重要です。しかし、これらの外れ値は基本分布の推定に大きな影響を与え、堅牢な予測を困難にします。金融機関は市場クラッシュのような外れ値を予測するために堅牢なモデルに依存しています。エネルギー、天気、医療の分野では、自然災害やパンデミックといった頻度は低いが影響が大きいイベントを正確に予測することで効果的な計画立案やリソースの割り当てが可能になります。尾の振る舞いを無視すると損失、チャンスの逃失、安全の危険が生じる可能性があります。尾部分の正確さを優先することは信頼性のある予測結果を導くのに役立ちます。このポストでは、Amazon SageMakerを使用して、このような極端なイベントを捉える堅牢な時系列予測モデルを訓練します。
このモデルを効果的に訓練するために、データ前処理、特徴エンジニアリング、ハイパーパラメータのチューニング、モデル選択を自動化するMLOpsインフラストラクチャを構築します。この自動化により、人為的なエラーが減り、再現性が向上し、モデル開発サイクルが加速します。トレーニングパイプラインを使用することで、ビジネスは新しいデータを効率的に取り込み、モデルを変化する状況に適応させることができます。これにより、予測が信頼できる状態に保たれ、最新の状況に追いつくことができます。
時系列予測モデルの訓練が完了した後、エンドポイント内で展開することにより、リアルタイムの予測能力を取得できます。これにより、最新のデータに基づいて情報豊かな意思決定が可能になります。さらに、モデルをエンドポイントに展開することで、複数のユーザーやアプリケーションが同時にモデルにアクセスし利用することができます。これらの手順に従うことで、ビジネスは堅牢な時系列予測の力を活用して情報を基にした意思決定を行い、急速に変化する環境に対応し続けることができます。
- アクセンチュアは、AWS上でジェネレーティブAIサービスを使用して、ナレッジアシストソリューションを作成しました
- 「DEHBを使用したXGBoostとPythonを使った機械学習モデルの最適化:包括的なガイド」
- 「メタのCode Llamaコード生成モデルは、Amazon SageMaker JumpStartを介して利用可能になりました」
ソリューションの概要
このソリューションでは、Temporal Convolutional Network(TCN)とSpliced Binned Pareto(SBP)分布を使ったアウトライヤーとデータの変動性を扱うように特別に設計された時系列予測モデルのトレーニングを紹介しています。このソリューションの多変量バージョンに関する詳細については、NFL Next Gen Statsの新しいパッシングメトリック背後の科学を参照してください。さらに、SBP分布の効果を示すために、同じTCNモデルを使用しているがガウス分布を使用したモデルと比較します。
このプロセスは、SageMakerのMLOps機能に大きく依存しています。これにより、AWSの強力なクラウドインフラストラクチャを活用してデータサイエンスのワークフローを効率化することができます。このソリューションでは、ハイパーパラメータの探索にAmazon SageMaker Automatic Model Tuningを、実験の管理にAmazon SageMaker Experimentsを、モデルのバージョン管理にAmazon SageMaker Model Registryを、プロセスのオーケストレーションにAmazon SageMaker Pipelinesを使用しています。そして、モデルをSageMakerエンドポイントに展開してリアルタイムの予測を得ます。
以下の図は、トレーニングパイプラインのアーキテクチャを示しています。
以下の図は、推論パイプラインを示しています。
完全なコードはGitHubリポジトリで見つけることができます。ソリューションを実装するには、SBP_main.ipynb
内のセルを実行してください。
ここをクリックしてAWSコンソールを開き、一緒に進んでください。
SageMakerパイプライン
SageMaker Pipelinesは、統合された機械学習(ML)ワークフローを作成するためのユーザーフレンドリーなPython SDKを提供しています。これらのワークフローは、さまざまな種類と依存関係を持つステップで構成された有向非巡回グラフ(DAG)として表されます。SageMaker Pipelinesを使用すると、モデルのトレーニングと評価のエンドツーエンドプロセスを効率化し、MLワークフローの再現性を向上させることができます。
トレーニングパイプラインは、合成データセットを生成し、トレーニング、検証、テストセットに分割することから始まります。トレーニングセットを使用して、Spliced Binned-Pareto distributionを利用するTCNモデルとガウス分布を利用するもう1つのTCNモデルを訓練します。両モデルは、各モデルを最適化するために検証セットを使用してハイパーパラメータの調整を行います。その後、テストセットに対する評価を実施し、最小二乗平均誤差(RMSE)が最も低いモデルを特定します。最も精度の高いモデルはモデルレジストリにアップロードされます。
次の図は、パイプラインのステップを示しています。
ステップについて詳細に説明しましょう。
データの生成
パイプラインの最初のステップでは、正弦波形と非対称なヘビーテイルノイズを特徴とする合成データセットが生成されます。データは、自由度、ノイズの乗数、スケールパラメータなどのパラメータによって作成されます。これらの要素は、データ分布の形状に影響を与え、データのランダムな変動性を変調し、データ分布の広がりを調整します。
このデータ処理ジョブは、SageMakerが管理するコンテナ内でPyTorchコード(generate_data.py)を実行するPyTorchProcessorを使用して実現されます。データやデバッグ用のその他の関連アーティファクトは、SageMakerアカウントに関連付けられたデフォルトのAmazon Simple Storage Service(Amazon S3)バケットにあります。パイプラインの各ステップのログは、Amazon CloudWatchで見つけることができます。
次の図は、パイプラインによって生成されたデータのサンプルです。
対称、非対称、軽尾、重尾、または多峰性分布など、さまざまなタイプの時系列データで入力を置き換えることができます。モデルの頑健性により、十分な観測が利用可能であれば、さまざまな時系列問題に適用することができます。
モデルのトレーニング
データの生成後、SBP分布を使用するTCNとガウス分布を使用する別のTCNをトレーニングします。SBP分布は、予測基に離散のビン付き分布を使用し、実軸を離散のビンに分割し、各ビン内の観測の可能性を予測します。この方法論は、各ビンの確率が独立しているため、非対称性や複数のモードを捉えることが可能です。ビン付き分布の例を以下の図に示します。
左側の予測された累積分布は、ガウス分布やスチューデントのt分布のようなパラメトリック分布とは異なり、極端な事件に対して堅牢です。そのため、赤い点によって表される極端なイベントは、分布の学習された平均にバイアスを与えません。ただし、極端なイベントの確率はゼロです。極端なイベントを捉えるために、分布の下側テールを第5分位点、上側テールを第95分位点と定義し、両側のテールを重み付けされた一般化パレート分布(GPD)で置き換えます。これにより、イベントの発生の可能性を定量化することができます。TCNは、ビン化分布の基本とGPDテールのパラメータを出力します。
ハイパーパラメータ検索
最適な出力を得るために、自動モデルチューニングを使用して、ハイパーパラメータのチューニングを行います。この手順はSageMaker Pipelinesに統合されており、複数のトレーニングジョブを並行して実行し、さまざまなメソッドと事前定義されたハイパーパラメータ範囲を使用します。結果として、指定されたモデルメトリックであるRMSEに基づいて、最適なモデルが選択されます。リーディングレートとトレーニングエポック数を具体的に調整して、モデルのパフォーマンスを最適化します。SageMakerのハイパーパラメータチューニング機能により、与えられたタスクに対してモデルが最適な精度と汎化性能を達成する可能性が高まります。
データの合成的な性質から、コンテキストの長さとリードタイムは静的なパラメータとして保持しています。コンテキストの長さは、モデルに入力される過去の時間ステップの数を指し、リードタイムは予測ホライズンの時間ステップの数を表します。サンプルコードでは、時間とコストを節約するために、学習率とエポック数のみ調整しています。
SBP固有のパラメータは、著者によるオリジナルの論文で異なるデータセット上での幅広いテストに基づいて一定に保たれています:
- ビンの数(100) – このパラメータは、分布のベースをモデル化するために使用されるビンの数を決定します。100で保持されており、さまざまな産業で最も効果的であることが証明されています。
- パーセンタイルテール(0.05) – これは、テールの一般化パレート分布のサイズを示します。前のパラメータと同様に、徹底的にテストされ、最も効率的であることがわかっています。
実験
ハイパーパラメータのプロセスはSageMaker Experimentsと統合されており、反復的なML実験の整理、分析、比較を支援し、最もパフォーマンスのよいモデルを追跡するための洞察を提供します。機械学習は、データの変化、アルゴリズムの選択、ハイパーパラメータのチューニングなど、数多くの実験を含む反復のプロセスです。これらの実験は、モデルの精度を段階的に改善するために行われます。ただし、トレーニングランとモデルイテレーションの数が多いため、最もパフォーマンスのよいモデルを特定し、現在の実験と過去の実験との意味のある比較を行うことは困難です。SageMaker Experimentsは、ハイパーパラメータチューニングジョブを自動的に追跡し、調整プロセスの詳細と洞察を得ることができるようにします。以下のスクリーンショットに示されているように。
モデルの評価
モデルは、トレーニングとハイパーパラメータのチューニングを経て、evaluate.pyスクリプトによって評価されます。このステップでは、ハイパーパラメータのチューニングステージとは異なるテストセットを使用して、モデルの実世界の精度を測定します。予測の精度を評価するためにRMSEが使用されます。
分布の比較には、実際の分布と予測分布の間の確率-確率(P-P)プロットを使用します。点が対角線に近いほど、完全なフィットを示します。SBPの予測分布とガウス分布の予測分布との比較から、SBPの予測が実際のデータとより一致していることがわかります。
観察すると、SBPはベース、下側テール、上側テールでRMSEが低いことがわかります。SBP分布は、ベースではガウス分布の正確性を61%向上させ、下側テールでは56%向上させ、上側テールでは30%向上させました。全体的に、SBP分布は非常に優れた結果を示しています。
モデル選択
SageMakerパイプラインの条件ステップを使用してモデル評価レポートを分析し、分布精度の向上に最も低いRMSEを持つモデルを選択します。選択したモデルはSageMakerモデルオブジェクトに変換され、展開の準備が整います。これには重要なパラメータでモデルパッケージを作成し、ModelStepにパッケージ化することが含まれます。
モデルレジストリ
選択したモデルは、SageMakerモデルレジストリにアップロードされます。これは、本番用に準備されたモデルの管理に重要な役割を果たします。モデルを格納し、モデルのバージョンを整理し、コンテナイメージなどの重要なメタデータとアーティファクトをキャプチャし、各モデルの承認状況に適用します。レジストリを使用することで、アクセス可能なSageMaker環境へのモデルの効率的な展開と、継続的インテグレーションおよび継続的デプロイメント(CI/CD)パイプラインの基盤を確立することができます。
推論
トレーニングパイプラインの完了後、SageMakerホスティングサービスを使用してモデルを展開し、リアルタイムの予測に対する推論エンドポイントを作成します。このエンドポイントにより、アプリケーションやシステムとのシームレスな統合が可能となり、安全なHTTPSインターフェースを介してモデルの予測能力にオンデマンドでアクセスできます。リアルタイムの予測は、株価やエネルギー需要予測などのシナリオで使用することができます。提供された時系列データに対する単一ステップの予測は、以下の図と表に示すようにパーセンタイルと中央値で表示されます。
第1百分位 | 第5百分位 | 中央値 | 第95百分位 | 第99百分位 |
1.12 | 3.16 | 4.70 | 7.40 | 9.41 |
後片付け
このソリューションを実行した後は、予期しない費用を回避するために不要なAWSリソースをきれいにしてください。これらのリソースは、ノートブックの最後に見つけることのできるSageMaker Python SDKを使用してクリーンアップできます。これらのリソースを削除することで、使用していないリソースに対する追加の料金を防ぐことができます。
結論
正確な予測は、ビジネスの将来の計画に高い影響を与えるだけでなく、さまざまな産業のさまざまな問題に対する解決策を提供することができます。SageMakerでの堅牢な時系列予測の探索は、正確な予測と効率的なトレーニングパイプラインの効果を示しました。
私たちのモデルは、スライスビン化されたパレート分布を使用した時間畳み込みネットワークによって駆動されており、ベースでは61%、下側テールでは56%、上側テールでは30%のRMSEの改善を実現しています。これらの数字は、現実の予測ニーズに対する信頼性のあるソリューションとなっています。
パイプラインは、MLOpsの機能の自動化の価値を示しています。これにより、手作業の人間の努力を減らし、再現性を可能にし、モデルの展開を加速することができます。SageMakerの機能、SageMakerパイプライン、自動モデルチューニング、SageMaker実験、SageMakerモデルレジストリ、エンドポイントなどがこれを実現します。
当社のソリューションでは、ハイパーパラメータの数を最適化したTCNを使用し、数層の制限された数だけで、モデルのパフォーマンスを効果的に強調するのに十分な効果を発揮します。より複雑なユースケースでは、PyTorchや他のPyTorchベースのライブラリを使用して、特定のニーズに合わせたカスタマイズされたTCNを構築することを検討してください。さらに、パイプラインの機能をさらに強化するために、他のSageMakerの機能を探索することが有益です。展開プロセスを完全に自動化するためには、AWS Cloud Development Kit(AWS CDK)またはAWS CloudFormationを使用できます。
AWSにおける時系列予測に関する詳細は、以下を参照してください:
- Amazon Forecast
- Amazon SageMakerを使用した需要予測の深層学習
- Amazon SageMakerを使用した階層的予測
- AutoGluonを使用した冷間スタートの時系列予測エンジンの構築
ご意見やご質問はコメントでお気軽にどうぞ!
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles