背景
OCI Anomaly Detectionを用いて、異常検出システムを構築する際にデータの連携、ストレージ、検知結果の表示に関して様々なアーキテクチャのパターンが考えられます。
この記事では、モデルの作成と同期検出・非同期検出のサンプルアーキテクチャをいくつか紹介し、その用途や違いをまとめました。
OCI Anomaly Detectionとは
OCI Anomaly Detectionは、多変量または単変量の時系列データに対し、リアルタイムおよびバッチの異常処理をするAIサービスです。異常検出のモデル作成やトレーニングが簡単にできるフルマネージドサービスです。
OCI Anomaly Detectionの詳しい説明はこちらの記事をご参考ください。
異常検出の方法
OCI Anomaly Detectionの異常検出には、「同期検出」と「非同期検出」の2つの検出結果の取得方法があります。ワークロードとデータポイントの数に合わせて2つの方法を選択できます。データポイントとは、シグナル数×行数の値です。
同期検出とは
アプリケーションやデバイスから取得されたデータに対して、異常が検出され結果がすぐに取得される、同期的に実行される検出です。
OCI Anomaly Detectionでは30,000データポイントより小さい場合に同期検出が可能です。
非同期検出とは
検出用のデータに対して、異常が検出され、後で検出結果が取得される非同期で実行される検出です。非常に大きなデータセットに対してより正確な結果を出力します。OCI Anomaly Detectionでは30,000データポイント以上の場合は、ジョブを使った非同期検出のみ可能です。
異常検出のデザインパターン
次に異常検出のデザインパターンについて紹介します。異常検出のアーキテクチャにはワークロードに応じて様々なデザインパターンを選択することができます。
今回は異常検出モデル作成と同期・非同期検出のサンプルアーキテクチャを紹介します。あくまでサンプルの構成例です。ワークロードの要件に合わせて、アーキテクチャを組み替えてください。では、さっそく紹介していきます。
異常検出モデル作成のアーキテクチャ
まず異常検出のモデルを学習するためのアーキテクチャの例を紹介します。
異常検出モデルの作成に関しては同期検出・非同期検出において、アーキテクチャに大きな違いはありません。
異常検出のモデルを作成するサンプルアーキテクチャのそれぞれの役割をフローごとに簡単に説明します。
「データソース」
デバイスやDatabaseのデータを用意します。モデル作成時のデータは正常時のデータを用います。
「データ収集」
データソースからData Integrationを使ってObject Storageにデータを保存します。直接Object Storageに吐き出したり、StreamingとService Connector Hubを用いて保存することも可能です。
データ連携サービス:Data Integration, Streaming, Connector Hub,
ストレージ:Object Storage, Autonomous Transaction Processing, Influx DB
「データ加工」
Object Storageのデータを、Anomaly Detectionで使用できるようデータ形式を加工します。Anomaly Detectionの学習データの要件は最初の列にtimestamp、その後に他の数値属性、シグナルおよびセンサーを含む列である必要があります。
詳細は「トレーニングおよび検出データの要件」をご確認ください。
サービス:Virtual Machine, OKE, Data Science, Data Flow
「分析(Modeling)」
Anomaly Detectionを使ってObject Storageの学習用データを使いデータ・アセットを作成します。データ・アセットを使い異常検出モデルを作成します。
以上が異常検出モデルのサンプルアーキテクチャの説明です。
同期検出システムのサンプルアーキテクチャ
次に同期検出のサンプルアーキテクチャの例を紹介します。
同期検出は検出データセットが30,000データポイントより小さく、時間依存のワークロードで使用します。
同期検出のサンプルアーキテクチャのそれぞれの役割を説明します。
「データソース」
デバイスやセンサーなどの検知対象のデータを取得します。
「データ収集」
ストリーミングサービスを使いリアルタイムに送信されたデータをFunctionsへ送信します。
データ連携:Streaming, Connector Hub
「データ加工」
Connector Hubを通じて送信されたデータをAnomaly Detectionで用いるためtimestampと数値データ型に加工します。
サービス:Functions
「分析(Detect)」
FunctionsからAnomaly Detectionを呼び出し、異常検出を実行します。
サービス:Functions, Anomaly Detection
「アクション」
異常が検出された場合、Oracle Analytics Cloud(OAC)のダッシュボードで表示をしたり、異常検出をトリガーにVM上のアプリケーションで次のアクションを行ったりできます。
サービス:Oracle Analytics Cloud(OAC), Virtual Machine, Notification, etc...
以上が同期検出のサンプルアーキテクチャの説明です。
非同期検出システムのアーキテクチャ
非同期検出は検出データセットが30,000データポイントより多く、時間の制約がない場合に使用します。
非同期検出のサンプルアーキテクチャのそれぞれの役割を説明します
「データソース」
DatabaseやLogなどの検知対象のデータを取得します。
「データ収集」
Streamingサービスを使い送信されたデータをObject Storageへ保存します。
データ連携サービス:Streaming, Connector Hub
ストレージ:Object Storage, Autonomous Transaction Processing, Influx DB
「データ加工」
Object Storageに保存されているデータをAnomaly Detectionで用いるためtimestampと数値データ型に加工します。
サービス:Virtual Machine, Functions, Data Flow, Data Science
「分析(Detect)」
FunctionsからAnomaly Detectionを呼び出し、異常検出のジョブを作成します。ジョブが実行され非同期で検出結果を取得できます。
サービス:Functions, Anomaly Detection
「アクション」
異常が検出された場合、Oracle Analytics Cloud(OAC)のダッシュボードで表示をしたり、異常検出をトリガーにVM上のアプリケーションで次のアクションを行うことができます。
サービス:Oracle Analytics Cloud(OAC), Virtual Machine, Notification, etc...
以上が非同期検出のサンプルアーキテクチャの説明です。
まとめ
今回はAnomaly Detectionのサンプルアーキテクチャを紹介しました。しかし、このアーキテクチャが正解ではなく、扱うデータ、ワークロードやプロジェクトの予算によって選択すべきサービスは変わってきます。様々なアーキテクチャパターンを知り、状況に応じたアーキテクチャを組めることがこの記事の目的になります。
参考
Oracle Cloud Infrastructureドキュメント 異常検知
Oracle Cloud Infrastructure Anomaly Detectionを使って簡単に異常検出をしてみる