Amazon SageMaker Canvas を使用して製造データの異常を検出する |アマゾン ウェブ サービス

Amazon SageMaker Canvas を使用して製造データの異常を検出する |アマゾン ウェブ サービス

クラウド コンピューティング、ビッグ データ、機械学習 (ML) ツールの使用により、 アマゾンアテナ or アマゾンセージメーカー 作成やメンテナンスに大きな労力をかけずに、誰でも利用できるようになりました。産業企業は、運用から予知保全や計画の実行まで、ポートフォリオ全体のリソース効率を向上させるために、データ分析とデータ主導の意思決定にますます注目しています。

IT の変化の速度により、伝統的な業界の顧客はスキルセットのジレンマに直面しています。一方で、アナリストやドメインの専門家は、問題のデータとその解釈について非常に深い知識を持っていますが、多くの場合、データ サイエンス ツールや Python などの高レベル プログラミング言語への知識が不足しています。一方、データ サイエンスの専門家は、マシン データの内容を解釈し、関連性のあるものをフィルタリングする経験が不足していることがよくあります。このジレンマにより、データを使用してビジネス関連の洞察を生成する効率的なモデルの作成が妨げられます。

Amazon SageMaker キャンバス は、予測、分類、回帰モデルなどの強力な分析および ML モデルを作成するためのコード不要のインターフェイスをドメインの専門家に提供することで、このジレンマに対処します。また、作成後にこれらのモデルをデプロイし、ML および MLOps のスペシャリストと共有することもできます。

この投稿では、SageMaker Canvas を使用してデータ内の適切な特徴を厳選して選択し、SageMaker Canvas のノーコード機能を使用してモデル調整を行い、異常検出用の予測モデルをトレーニングする方法を説明します。

製造業向けの異常検知

執筆時点では、SageMaker Canvas は、予測、回帰、分類などの典型的なビジネス ユースケースに焦点を当てています。この投稿では、これらの機能が複雑な異常なデータ ポイントの検出にどのように役立つかを示します。この使用例は、たとえば、産業用機械の誤動作や異常な動作を正確に特定することに関連します。

機械 (列車からタービンまで) は通常、故障までの時間が数年にも及ぶ非常に信頼性の高いものであるため、異常検出は業界分野で重要です。温度センサーの測定値やステータス メッセージなど、これらのマシンからのデータのほとんどは通常の動作を説明するものであり、意思決定の価値は限られています。エンジニアは、障害の根本原因を調査するとき、または将来の障害に対する警告指標として、異常なデータを探します。また、パフォーマンス マネージャーは、潜在的な改善点を特定するために異常なデータを調べます。したがって、データ主導型の意思決定に移行するための一般的な最初のステップは、関連する (異常な) データを見つけることに依存します。

この投稿では、SageMaker Canvas を使用してデータ内の適切な特徴を厳選して選択し、モデル調整に SageMaker Canvas のノーコード機能を使用して、異常検出のための予測モデルをトレーニングします。次に、モデルを SageMaker エンドポイントとしてデプロイします。

ソリューションの概要

異常検出のユースケースでは、車に加えられた速度や最近のトルクなどの影響する機能から、車に表示されるモーター温度などの機械の通常動作の特徴を予測する予測モデルをトレーニングします。 。新しい測定サンプルの異常検出では、特徴的な特徴のモデル予測と提供された観測結果を比較します。

車のモーターの例では、専門家は通常のモーター温度、最近のモーター トルク、周囲温度、およびその他の潜在的な影響要因の測定値を取得します。これらにより、他の特徴から温度を予測するモデルをトレーニングできます。その後、モデルを使用してモーターの温度を定期的に予測できます。そのデータの予測温度がそのデータの観測温度と類似している場合、モーターは正常に動作しています。不一致は、冷却システムの故障やモーターの欠陥などの異常を示しています。

次の図は、ソリューションのアーキテクチャを示しています。

プロセスの概要: モデルは SageMaker Canvas で作成され、デプロイされて、AWS Lambda Funcino からアクセスされます。

ソリューションは 4 つの主要なステップで構成されます。

  1. ドメインエキスパートは、SageMaker Canvas を使用したデータ分析と機能キュレーションを含む初期モデルを作成します。
  2. ドメインエキスパートは、 Amazon SageMaker モデルレジストリ または、リアルタイム エンドポイントとして直接デプロイします。
  3. MLOps の専門家は、推論インフラストラクチャと、予測からのモデル出力を異常インジケーターに変換するコードを作成します。このコードは通常、 AWSラムダ 機能。
  4. アプリケーションが異常検出を必要とする場合、Lambda 関数を呼び出します。この関数はモデルを推論に使用し、応答 (異常かどうかに関係なく) を提供します。

前提条件

この投稿を進めるには、次の前提条件を満たす必要があります。

SageMaker を使用してモデルを作成する

モデル作成プロセスは、SageMaker Canvas で回帰モデルを作成する標準手順に従います。詳細については、以下を参照してください。 AmazonSageMakerCanvasの使用を開始する.

まず、ドメインエキスパートは、時系列の測定値などの関連データを SageMaker Canvas にロードします。この投稿では、電気モーターの (合成的に生成された) 測定値を含む CSV ファイルを使用します。詳細については、を参照してください。 データをCanvasにインポートする。使用したサンプルデータは、 CSV.

CSV の最初の行を示す図。さらに、クイック プレビュー モデルのヒストグラムとベンチマーク メトリックが表示されます。

SageMaker Canvas を使用してデータをキュレートする

データがロードされた後、ドメインエキスパートは SageMaker Canvas を使用して、最終モデルで使用されるデータをキュレーションできます。このために、専門家は、問題となっている問題の特性測定値を含む列を選択します。より正確には、専門家は、圧力と温度の曲線などの物理的関係によって互いに関連しており、その関係の変化がユースケースに関連する異常である列を選択します。異常検出モデルは、選択された列間の通常の関係を学習し、モーターの現在の負荷を考慮したモーター温度の異常な上昇など、データがその関係に適合しない場合にそれを示します。

実際には、ドメインの専門家は、適切な入力列とターゲット列のセットを選択する必要があります。通常、入力は、需要設定から負荷、速度、周囲温度に至るまで、マシンの動作を決定する量 (数値またはカテゴリ) の集合です。通常、出力は、エネルギー散逸を測定する温度や、機械が次善の条件で動作するときに変化する別の性能指標など、機械の動作のパフォーマンスを示す数値です。

入力と出力にどの量を選択するかの概念を説明するために、いくつかの例を考えてみましょう。

  • この投稿で構築するモデルなどの回転機器の場合、一般的な入力は回転速度、トルク (現在および履歴)、周囲温度であり、ターゲットは回転の良好な動作状態を示す結果として得られるベアリングまたはモーターの温度です。
  • 風力タービンの場合、一般的な入力は風速とローターブレードの設定の現在および最近の履歴であり、目標量は生成される電力または回転速度です。
  • 化学プロセスの場合、一般的な入力値はさまざまな成分の割合と周囲温度であり、ターゲットは生成される熱または最終製品の粘度です。
  • スライドドアなどの移動装置の場合、一般的な入力はモーターへの電力入力であり、目標値は移動の速度または完了時間です。
  • HVAC システムの場合、一般的な入力は達成された温度差と負荷設定であり、目標量は測定されたエネルギー消費量です。

最終的に、特定の機器に対する適切な入力とターゲットは、ユースケースと検出する異常な動作によって異なり、特定のデータセットの複雑さに精通している分野の専門家が最もよく知っています。

ほとんどの場合、適切な入力量とターゲット量を選択するということは、正しい列のみを選択し、ターゲット列をマークすることを意味します (この例では、 bearing_temperature)。ただし、ドメインの専門家は、SageMaker Canvas のノーコード機能を使用して列を変換し、データを調整または集計することもできます。たとえば、関連性のないデータから特定の日付やタイムスタンプを抽出またはフィルタリングできます。 SageMaker Canvas はこのプロセスをサポートしており、選択した数量に関する統計を表示することで、数量にモデルの結果に影響を与える可能性のある外れ値や広がりがあるかどうかを理解できます。

モデルのトレーニング、調整、評価

ドメインの専門家は、データセット内の適切な列を選択した後、モデルをトレーニングして入力と出力の関係を学習できます。より正確には、モデルは入力から選択されたターゲット値を予測することを学習します。

通常は、SageMaker Canvas を使用できます。 モデルのプレビュー オプション。これにより、期待されるモデルの品質がすぐにわかり、さまざまな入力が出力メトリックに与える影響を調査できます。たとえば、次のスクリーンショットでは、モデルは次の影響を最も受けています。 motor_speed および ambient_temperature 予測時の指標 bearing_temperature。これらの温度は密接に関係しているため、これは理にかなっています。同時に、追加の摩擦やその他のエネルギー損失がこれに影響を与える可能性があります。

モデルの品質に関しては、モデルの RMSE は、モデルがトレーニング データ内の通常の動作をどの程度学習し、入力メジャーと出力メジャーの間の関係を再現できたかを示す指標です。たとえば、次のモデルでは、モデルは正しい予測を行うことができるはずです。 motor_bearing 気温は摂氏 3.67 度以内であるため、モデル予測からの実際の気温の偏差が、たとえば 7.4 度よりも大きい場合は異常とみなすことができます。ただし、使用する実際のしきい値は、展開シナリオで必要な感度によって異なります。

実際のモーター速度と予測されたモーター速度を示すグラフ。多少のノイズはあるものの、関係は線形です。

最後に、モデルの評価と調整が完了したら、推論に使用するモデルを作成する完全なモデル トレーニングを開始できます。

モデルを展開する

SageMaker Canvas は推論にモデルを使用できますが、異常検出のために生産的にデプロイするには、モデルを SageMaker Canvas の外部にデプロイする必要があります。より正確には、モデルをエンドポイントとしてデプロイする必要があります。

この投稿では、簡単にするために、モデルを SageMaker Canvas からエンドポイントとして直接デプロイします。手順については、を参照してください。 モデルをエンドポイントにデプロイする。必ずデプロイ名をメモし、デプロイ先のインスタンス タイプの価格を考慮してください (この投稿では、ml.m5.large を使用します)。次に、SageMaker Canvas は、予測を取得するために呼び出すことができるモデル エンドポイントを作成します。

モデルのデプロイメントの構成を示すアプリケーション ウィンドウ。示されている設定は、マシン サイズ ml.m5.large とデプロイメント名 example-anomaly-model です。

産業環境では、モデルを展開する前に徹底的なテストを受ける必要があります。このため、ドメイン エキスパートはモデルをデプロイせず、代わりにモデルを SageMaker モデル レジストリに共有します。ここでは、MLOps 運用の​​専門家が引き継ぐことができます。通常、その専門家はモデルのエンドポイントをテストし、ターゲット アプリケーションに必要なコンピューティング機器のサイズを評価し、サーバーレス推論やバッチ推論のための展開など、最もコスト効率の高い展開を決定します。これらのステップは通常、自動化されています(たとえば、 Amazon Sagemaker パイプライン または アマゾンSDK).

Amazon Sgemaker からモデルレジストリにモデルを共有するボタンを示す画像。

異常検出にモデルを使用する

前のステップでは、SageMaker Canvas でモデルのデプロイメントを作成しました。 canvas-sample-anomaly-model。これを使用して、 bearing_temperature データセット内の他の列に基づく値。ここで、このエンドポイントを使用して異常を検出したいと思います。

異常なデータを特定するために、モデルは予測モデル エンドポイントを使用してターゲット メトリックの期待値を取得し、その予測値をデータ内の実際の値と比較します。予測値は、トレーニング データに基づくターゲット メトリックの期待値を示します。したがって、この値の差が、観測された実際のデータの異常性の指標となります。次のコードを使用できます。

# We are using pandas dataframes for data handling
import pandas as pd import boto3,json
sm_runtime_client = boto3.client('sagemaker-runtime') # Configuration of the actual model invocation
endpoint_name="canvas-sample-anomaly-model"
# Name of the column in the input data to compare with predictions
TARGET_COL='bearing_temperature' def do_inference(data, endpoint_name): # Example Code provided by Sagemaker Canvas body = data.to_csv(header=False, index=True).encode("utf-8") response = sm_runtime_client.invoke_endpoint(Body = body, EndpointName = endpoint_name, ContentType = "text/csv", Accept = "application/json", ) return json.loads(response["Body"].read()) def input_transformer(input_data, drop_cols = [ TARGET_COL ] ): # Transform the input: Drop the Target column return input_data.drop(drop_cols,axis =1 ) def output_transformer(input_data,response): # Take the initial input data and compare it to the response of the prediction model scored = input_data.copy() scored.loc[ input_data.index,'prediction_'+TARGET_COL ] = pd.DataFrame(
response[ 'predictions' ],
index = input_data.index )['score'] scored.loc[ input_data.index,'error' ] = (
scored[ TARGET_COL ]-scored[ 'prediction_'+TARGET_COL ]
).abs() return scored # Run the inference
raw_input = pd.read_csv(MYFILE) # Read my data for inference
to_score = input_transformer(raw_input) # Prepare the data
predictions = do_inference(to_score, endpoint_name) # create predictions
results = output_transformer(to_score,predictions) # compare predictions & actuals

前述のコードは次のアクションを実行します。

  1. 入力データは適切な特徴にフィルタリングされます (関数「input_transformer")。
  2. SageMaker モデルのエンドポイントは、フィルターされたデータ (関数「do_inferenceここでは、SageMaker Canvas でデプロイメントの詳細ページを開いたときに提供されるサンプル コードに従って入力および出力の書式設定を処理します。
  3. 呼び出しの結果は元の入力データと結合され、その差分がエラー列に格納されます (関数「output_transform")。

異常を発見し、異常なイベントを評価する

一般的な設定では、異常を取得するコードは Lambda 関数で実行されます。 Lambda 関数はアプリケーションから呼び出すことも、 アマゾンAPIゲートウェイ。 main 関数は、入力データの各行の異常スコア (この場合は異常スコアの時系列) を返します。

テストのために、SageMaker ノートブックでコードを実行することもできます。次のグラフは、サンプル データを使用した場合のモデルの入力と出力を示しています。予測値と実際の値の間の偏差のピーク (下のグラフに示す異常スコア) は異常を示します。たとえば、グラフでは、異常スコア (予想温度と実際の温度の差) が摂氏 7 度を超える XNUMX つの明確なピークがわかります。XNUMX つ目は長いアイドル時間の後で、XNUMX つ目は急激な降下時です。 bearing_temperature、そして最後に bearing_temperature に比べて高いです motor_speed.

時系列の 2 つのグラフ。上部には、モーター温度とモーター速度の時系列が表示されます。下のグラフは、時間の経過に伴う異常スコアを示しており、異常を示す 3 つのピークがあります。

多くの場合、異常スコアの時系列が分かればすでに十分です。モデルの感度の必要性に基づいて、重大な異常を警告するタイミングのしきい値を設定できます。現在のスコアは、マシンに調査が必要な異常な状態があることを示します。たとえば、私たちのモデルの場合、異常スコアの絶対値は次のグラフに示すように分布しています。これにより、ほとんどの異常スコアが、モデルのトレーニング中に典型的なエラーとして検出された (2xRMS=)8 度未満であることが確認されます。グラフは、評価されたサンプルの適切な割合が異常としてマークされるように、しきい値を手動で選択するのに役立ちます。

異常スコアの値の発生のヒストグラム。曲線は x=0 から x=15 まで減少します。

必要な出力が異常のイベントである場合、モデルによって提供される異常スコアは、ビジネス用途に関連するように改良する必要があります。このため、ML エキスパートは通常、ローリング平均の追加など、異常スコアのノイズや大きなピークを除去するための後処理を追加します。さらに、専門家は通常、問題を提起するのと同様のロジックによって異常スコアを評価します。 アマゾンクラウドウォッチ アラーム(特定の期間にわたるしきい値違反の監視など)。アラームの設定の詳細については、を参照してください。 AmazonCloudWatchアラームの使用。 Lambda 関数でこれらの評価を実行すると、たとえば警告を Amazon シンプル通知サービス (Amazon SNS)トピック。

クリーンアップ

このソリューションの使用が終了したら、不要なコストを避けるためにクリーンアップする必要があります。

  1. SageMaker Canvas で、モデル エンドポイント デプロイメントを見つけて削除します。
  2. SageMaker Canvas がアイドル状態で実行されることによる課金を避けるために、SageMaker Canvas からログアウトします。

まとめ

この投稿では、ドメインエキスパートがコードを記述することなく、SageMaker Canvas を使用して入力データを評価し、ML モデルを作成する方法を説明しました。次に、このモデルを使用して、SageMaker と Lambda を使用して簡単なワークフローでリアルタイムの異常検出を実行する方法を示しました。この組み合わせにより、ドメインの専門家はデータ サイエンスの追加トレーニングなしで知識を活用して強力な ML モデルを作成できるようになり、MLOps の専門家がこれらのモデルを使用して、柔軟かつ効率的に推論できるようになります。

SageMaker Canvas には 2 か月の無料枠があり、その後は使用した分だけお支払いいただきます。今すぐ実験を開始し、ML を追加してデータを最大限に活用してください。


著者,

Amazon SageMaker Canvas を使用して製造データの異常を検出する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。 ヘルゲ・アウフダーハイデ は、製造やモビリティなどの産業アプリケーションにおけるオートメーション、分析、機械学習に重点を置き、データを現実世界で利用できるようにすることに熱心に取り組んでいます。

タイムスタンプ:

より多くの AWS機械学習