はじめに
AWS ソリューションライブラリーにて提供されている 機械学習を利用した予知保全 の実装をやってみます。
用意されているAWS CloudFormation テンプレートを使用するので簡単にデプロイできます。
Amazon SageMakerとは
Amazon SageMaker は、機械学習モデルを短期間で簡単に構築、トレーニング、デプロイできるようにするフルマネージド型サービスです。
あらゆる作業を効率化する機能が提供されているため、人手をかけずに異常検知をやりたいときに最適なサービスです。
本記事のゴール
機械学習モデルとターボファンの劣化シミュレーションデータのサンプルデータセットをデプロイして、潜在的な設備故障を認識するようにモデルをトレーニングするというサンプルアーキテクチャを紹介します。
アーキテクチャ図は以下の通りです。
このアーキテクチャでは、サンプルデータセットを使って、
設備故障の評価対象としてRUL(残存耐用期間)を計算し、予測値と観測値を比較して異常検知します。
トレーニングデータとテストデータは、S3バケットに格納します。
これをAWS Lambda などを使って1日に1回スケジュール実行します。
実装手順
手順は大まかに以下の4つです。
- スタックを起動する
- ML モデルをトレーニング
- CloudWatch Events ルールを有効にする
- Lambda 関数がデータを処理していることを確認する
1. スタックを起動する
機械学習を利用した予知保全 から CloudFormationテンプレートをダウンロードします。
テンプレートに含まれているもの:
Amazon CloudWatch Events ルール
AWS Lambda 関数
Amazon SageMaker ノートブックインスタンス
Amazon S3 バケット
AWS CloudFormationに移動 → 「スタックの作成」を選択します。
ダウンロードしたテンプレートをアップロード → 「次へ」を選択します。
スタックの名前を入力します。
S3バケットの名前を入力 → SageMaker ノートブックインスタンスをデプロイす
る VPC Id、Subnet Id を選択 → 「次へ」で次に進みます。
オプションの設定はスキップします。
「次へ」を選択します。
設定を見直します。
テンプレートが AWS IAM リソースを作成することを確認するチェックボックスをオンにして → 「スタックの作成」を選択します。
CREATE_COMPLETE のステータスが表示されたら、デプロイが完了したということです。
5分ほどかかりました。
2. Amazon SageMaker でノートブックを実行する
Amazon SageMaker では、任意の深層学習フレームワークを使用してカスタム深層学習モデルをトレーニングできます。
このソリューションでは、カスタムの Stack LSTM ニューラルネットワークを活用して、時系列データから履歴パターンを学習します。
Amazon SageMaker コンソールに移動 → 「SageMaker Studio」を選択します。
「ノートブックインスタンス」 → 「PredictiveMaintenceNotebookInstance」を選択します。
「Jupyterを開く」を選択します。
sagamaker_predictive_maintenance.ipynb のノートブックを開きます。
全てのセルを実行します。
3. CloudWatch Events ルールを有効にする
1日に1回実行するように設定されてます
Amazon SageMaker バッチ変換ジョブを作成する AWS Lambda 関数をトリガーするように設定されており、AWS SageMaker バッチ変換ジョブはトレーニング済みモデルを使用してデータのサンプルから残存耐用年数を予測します。
AWS Lambda コンソールに移動 → 「関数」 → 「predivtive-maintenance-batch-transformer」を選択します。
「EventBridge(CloudWatch Events)」を選択します。
predictive-maintenance-ScheduledRule-を選択します。
「有効にする」を選択し、を有効にします。
「有効にする」を選択します。
4. Lambda 関数がデータを処理していることを確認する
[モニタリング] を選択し、[Invocations] グラフにアクティビティが表示されているこを確認します。
テスト結果はS3バケットに格納されます。
画像のように、RUL(残存耐用年数)の列が追加されていることが確認できます。
さいごに
今回は、Amazon SageMakerを使って異常検知のアーキテクチャ実装を試してみました。
AWS CloudFormation テンプレートを使用することで、モデルのトレーニングからノートブックのスケジュール実行の設定まで数分で出来ました。
今回はサンプルデータを使用していますが、任意のデータセットを使用するようにソリューションを変更できることもできるようなので、次回はトライしてみたいです。