履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する | アマゾン ウェブ サービス

履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する | アマゾン ウェブ サービス

効率的な制御ポリシーにより、産業企業は予定外のダウンタイムとエネルギー消費を削減しながら生産性を最大化し、収益性を高めることができます。 化学反応器や風力タービンなどの物理システムはモデル化が困難な場合が多く、プロセスダイナミクスのドリフトにより時間の経過とともにパフォーマンスが低下する可能性があるため、最適な制御ポリシーを見つけるのは複雑な作業です。 オフライン強化学習は、産業企業が明示的なプロセス モデルを必要とせずに履歴データだけから制御ポリシーを構築できるようにする制御戦略です。 このアプローチでは、探索段階でプロセスと直接対話する必要がないため、安全性が重要なアプリケーションでの強化学習の導入に対する障壁の XNUMX つが取り除かれます。 この投稿では、履歴データのみを使用して最適な制御ポリシーを見つけるためのエンドツーエンドのソリューションを構築します。 アマゾンセージメーカー レイズを使って RLlib 図書館。 強化学習の詳細については、を参照してください。 Amazon SageMaker で強化学習を使用します。

ユースケース

産業用制御には、効率的で信頼性の高い運用を確保するために、製造ライン、エネルギーグリッド、化学プラントなどの複雑なシステムの管理が含まれます。 従来の制御戦略の多くは、事前定義されたルールとモデルに基づいており、多くの場合、手動による最適化が必要です。 一部の業界では、機器の劣化が始まったり、環境条件が変化したりした場合に、パフォーマンスを監視し、制御ポリシーを調整することが標準的な方法となっています。 再調整には数週間かかる場合があり、試行錯誤のアプローチで応答を記録するためにシステムに外部励起を注入する必要がある場合があります。

強化学習は、環境との対話を通じて最適な制御ポリシーを学習するプロセス制御の新しいパラダイムとして登場しました。 このプロセスでは、データを 1 つのカテゴリに分類する必要があります。2) 物理システムから取得できる測定値、3) システムに対して実行できる一連のアクション、XNUMX) 機器のパフォーマンスの数値指標 (報酬)。 ポリシーは、特定の観察において、将来最高の報酬を生み出す可能性が高いアクションを見つけるようにトレーニングされます。

オフライン強化学習では、本番環境に導入する前に、履歴データに基づいてポリシーをトレーニングできます。 このブログ投稿でトレーニングされたアルゴリズムは「保守的な Q 学習」(CQL)。 CQL には「アクター」モデルと「批評家」モデルが含まれており、推奨されたアクションを実行した後の自身のパフォーマンスを保守的に予測するように設計されています。 この投稿では、カートポール制御の問題を例にしてプロセスを示します。 目標は、指定されたゴール位置に向かってカートを移動させながら、カート上のポールでバランスを取るようにエージェントを訓練することです。 トレーニング手順ではオフライン データを使用するため、エージェントは既存の情報から学習できます。 このカートポールのケーススタディは、潜在的な現実世界のアプリケーションにおけるトレーニング プロセスとその有効性を示しています。

ソリューションの概要

この投稿で紹介するソリューションは、履歴データを使用したオフライン強化学習のためのエンドツーエンドのワークフローの展開を自動化します。 次の図は、このワークフローで使用されるアーキテクチャを示しています。 測定データは、産業用機器によってエッジで生成されます (ここでは、 AWSラムダ 関数)。 データは アマゾンキネシス データを保存する Data Firehose Amazon シンプル ストレージ サービス (アマゾンS3)。 Amazon S3 は、耐久性が高く、パフォーマンスが高く、低コストのストレージ ソリューションであり、機械学習トレーニング プロセスに大量のデータを提供できます。

AWSグルー データをカタログ化し、次を使用してクエリ可能にします。 アマゾンアテナ。 Athena は、測定データを強化学習アルゴリズムが取り込める形式に変換し、Amazon S3 にアンロードして戻します。 Amazon SageMaker は、このデータをトレーニングジョブにロードし、トレーニングされたモデルを生成します。 その後、SageMaker はそのモデルを SageMaker エンドポイントで提供します。 産業用機器は、そのエンドポイントにクエリを実行して、アクションの推奨事項を受け取ることができます。

図 1: エンドツーエンドの強化学習ワークフローを示すアーキテクチャ図。

図 1: エンドツーエンドの強化学習ワークフローを示すアーキテクチャ図。

この投稿では、次の手順でワークフローを詳しく説明します。

  1. 問題を定式化します。 どのアクションを実行できるか、どの測定に基づいて推奨事項を作成するかを決定し、各アクションがどの程度うまく機能したかを数値的に判断します。
  2. データを準備します。 測定テーブルを機械学習アルゴリズムが使用できる形式に変換します。
  3. そのデータに基づいてアルゴリズムをトレーニングします。
  4. トレーニング指標に基づいて最適なトレーニング実行を選択します。
  5. モデルを SageMaker エンドポイントにデプロイします。
  6. 実稼働環境でのモデルのパフォーマンスを評価します。

前提条件

このチュートリアルを完了するには、次のものが必要です。 AWSアカウント コマンドラインインターフェースと AWS SAM がインストールされている。 次の手順に従って、AWS SAM テンプレートをデプロイしてこのワークフローを実行し、トレーニング データを生成します。

  1. コマンドでコードリポジトリをダウンロードします。
    git clone https://github.com/aws-samples/sagemaker-offline-reinforcement-learning-ray-cql

  2. ディレクトリをリポジトリに変更します。
    cd sagemaker-offline-reinforcement-learning-ray-cql

  3. リポジトリをビルドします。
    sam build --use-container

  4. リポジトリをデプロイする
    sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

  5. 次のコマンドを使用して bash スクリプトを呼び出し、AWS Lambda 関数を使用してモックデータを生成します。
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

ソリューションウォークスルー

問題を定式化する

このブログ投稿のシステムは、上部にバランスの取れたポールを備えたカートです。 このシステムは、ポールが直立し、カートの位置がゴール位置に近い場合に良好に機能します。 前提条件のステップでは、このシステムから履歴データを生成しました。

次の表は、システムから収集された履歴データを示しています。

カートの位置 カートの速度 ポール角度 極角速度 ゴール位置 外力 報いる Time
0.53 -0.79 -0.08 0.16 0.50 -0.04 11.5 5:37:54 PM
0.51 -0.82 -0.07 0.17 0.50 -0.04 11.9 5:37:55 PM
0.50 -0.84 -0.07 0.18 0.50 -0.03 12.2 5:37:56 PM
0.48 -0.85 -0.07 0.18 0.50 -0.03 10.5 5:37:57 PM
0.46 -0.87 -0.06 0.19 0.50 -0.03 10.3 5:37:58 PM

Amazon Athena を使用して次のクエリを実行すると、システムの履歴情報をクエリできます。

SELECT *
FROM "AWS CloudFormation Stack Name_glue_db"."measurements_table"
ORDER BY episode_id, epoch_time ASC
limit 10;

このシステムの状態は、カートの位置、カートの速度、ポールの角度、ポールの角速度、およびゴールの位置によって定義されます。 各時間ステップで行われるアクションは、カートに加えられる外力です。 シミュレートされた環境では、カートがゴール位置に近く、ポールがより直立しているほど、より高い報酬値が出力されます。

データを準備する

システム情報を強化学習モデルに提示するには、値を状態 (観測とも呼ばれます)、アクション、報酬のカテゴリに分類するキーを含む JSON オブジェクトに変換します。 これらのオブジェクトを Amazon S3 に保存します。 前の表のタイム ステップから生成された JSON オブジェクトの例を次に示します。

{“obs”:[[0.53,-0.79,-0.08,0.16,0.5]], “action”:[[-0.04]], “reward”:[11.5] ,”next_obs”:[[0.51,-0.82,-0.07,0.17,0.5]]}

{“obs”:[[0.51,-0.82,-0.07,0.17,0.5]], “action”:[[-0.04]], “reward”:[11.9], “next_obs”:[[0.50,-0.84,-0.07,0.18,0.5]]}

{“obs”:[[0.50,-0.84,-0.07,0.18,0.5]], “action”:[[-0.03]], “reward”:[12.2], “next_obs”:[[0.48,-0.85,-0.07,0.18,0.5]]}

AWS CloudFormation スタックには、と呼ばれる出力が含まれています。 AthenaQueryToCreateJsonFormatedData。 Amazon Athena でこのクエリを実行して変換を実行し、JSON オブジェクトを Amazon S3 に保存します。 強化学習アルゴリズムは、これらの JSON オブジェクトの構造を使用して、推奨事項の基礎となる値と、履歴データ内でアクションを実行した結果を理解します。

鉄道エージェント

これで、トレーニング ジョブを開始して、トレーニングされたアクション推奨モデルを生成できるようになりました。 Amazon SageMaker を使用すると、複数のトレーニング ジョブをすばやく起動して、さまざまな設定が結果のトレーニング済みモデルにどのような影響を与えるかを確認できます。 という名前の Lambda 関数を呼び出します。 TuningJobLauncherFunction アルゴリズムのトレーニング時に XNUMX つの異なるハイパーパラメーター セットを実験するハイパーパラメーター調整ジョブを開始します。

最適なトレーニング実行を選択する

どのトレーニング ジョブが最良のモデルを生成したかを見つけるには、トレーニング中に生成された損失曲線を調べます。 CQL の批評家モデルは、推奨されたアクションを実行した後の俳優のパフォーマンス (Q 値と呼ばれます) を推定します。 クリティカル損失関数の一部には時間差誤差が含まれます。 このメトリクスは、批評家の Q 値の精度を測定します。 平均 Q 値が高く、時間差エラーが低いトレーニング実行を探します。 この紙、 オフラインモデルフリーのロボット強化学習のワークフローでは、最適なトレーニング実行を選択する方法について詳しく説明します。 コード リポジトリにはファイルがあります。 /utils/investigate_training.py、最新のトレーニング ジョブを説明するプロット HTML 図を作成します。 このファイルを実行し、出力を使用して最適なトレーニング実行を選択します。

平均 Q 値を使用して、トレーニングされたモデルのパフォーマンスを予測できます。 Q 値は、割引された将来の報酬値の合計を保守的に予測するようにトレーニングされています。 長時間実行されるプロセスの場合、Q 値に (1-「割引率」) を乗算することで、この数値を指数加重平均に変換できます。 このセットの最良のトレーニング実行では、平均 Q 値 539 が達成されました。割引率は 0.99 であるため、モデルはタイム ステップあたり少なくとも 5.39 の平均報酬を予測しています。 この値を過去のシステム パフォーマンスと比較すると、新しいモデルが過去の制御ポリシーを上回るパフォーマンスを発揮するかどうかを判断できます。 この実験では、履歴データのタイム ステップあたりの平均報酬は 4.3 でした。そのため、CQL モデルは、システムが過去に達成したパフォーマンスよりも 25% 優れたパフォーマンスを予測しています。

モデルのデプロイ

Amazon SageMaker エンドポイントを使用すると、さまざまなユースケースに合わせて、いくつかの異なる方法で機械学習モデルを提供できます。 この投稿では、サーバーレス エンドポイント タイプを使用して、エンドポイントが需要に応じて自動的にスケーリングし、エンドポイントが推論を生成しているときにのみコンピューティング使用量に対して料金を支払います。 サーバーレス エンドポイントをデプロイするには、 ProductionVariantServerlessConfig セクションに 生産バリアント セージメーカーの エンドポイント構成。 次のコードスニペットは、Python 用 Amazon SageMaker ソフトウェア開発キットを使用して、この例のサーバーレスエンドポイントがどのようにデプロイされるかを示しています。 モデルのデプロイに使用されるサンプル コードは、次の場所にあります。 sagemaker-オフライン-強化-学習-ray-cql.

predictor = model.deploy( serverless_inference_config=ServerlessInferenceConfig( memory_size_in_mb=2048, max_concurrency=200 ), <…>
)

トレーニングされたモデル ファイルは、各トレーニング実行の S3 モデル アーティファクトにあります。 機械学習モデルをデプロイするには、最適なトレーニング実行のモデル ファイルを見つけて、「」という名前の Lambda 関数を呼び出します。ModelDeployerFunction」をこのモデル データを含むイベントで実行します。 Lambda 関数は、SageMaker サーバーレス エンドポイントを起動して、トレーニングされたモデルを提供します。 「」を呼び出すときに使用するサンプルイベントModelDeployerFunction"

{ "DescribeTrainingJob": { "ModelArtifacts": { "S3ModelArtifacts": "s3://your-bucket/training/my-training-job/output/model.tar.gz"} } }

トレーニングされたモデルのパフォーマンスを評価する

トレーニングされたモデルが本番環境でどのように機能するかを確認してみましょう。 新しいモデルのパフォーマンスを確認するには、「」という名前の Lambda 関数を呼び出します。RunPhysicsSimulationFunction」をイベント内の SageMaker エンドポイント名に置き換えます。 これにより、エンドポイントが推奨するアクションを使用してシミュレーションが実行されます。 を呼び出すときに使用するサンプル イベント RunPhysicsSimulatorFunction:

{"random_action_fraction": 0.0, "inference_endpoint_name": "sagemaker-endpoint-name"}

次の Athena クエリを使用して、トレーニングされたモデルのパフォーマンスを過去のシステム パフォーマンスと比較します。

WITH sum_reward_by_episode AS ( SELECT SUM(reward) as sum_reward, m_temp.action_source FROM "<AWS CloudFormation Stack Name>_glue_db"."measurements_table" m_temp GROUP BY m_temp.episode_id, m_temp.action_source ) SELECT sre.action_source, AVG(sre.sum_reward) as avg_total_reward_per_episode
FROM sum_reward_by_episode sre
GROUP BY sre.action_source
ORDER BY avg_total_reward_per_episode DESC

結果テーブルの例を次に示します。 トレーニングされたモデルが過去のデータの 2.5 倍の報酬を達成したことがわかります。 さらに、モデルの実際のパフォーマンスは、保守的なパフォーマンス予測よりも 2 倍優れていました。

アクションソース タイムステップごとの平均報酬
trained_model 10.8
historic_data 4.3

次のアニメーションは、トレーニング データからのサンプル エピソードと、実行するアクションを選択するためにトレーニングされたモデルが使用されたエピソードとの違いを示しています。 アニメーションでは、青いボックスがカート、青い線がポール、緑の長方形がゴールの場所です。 赤い矢印は、各タイム ステップでカートに加えられる力を示します。 トレーニング データ内の赤い矢印は、かなり前後にジャンプしています。これは、データが 50 パーセントのエキスパート アクションと 50 パーセントのランダム アクションを使用して生成されたためです。 トレーニングされたモデルは、完全に専門家以外のデモンストレーションを観察することによって、安定性を維持しながらカートをゴール位置まで素早く移動させる制御ポリシーを学習しました。

履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。 履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

 クリーンアップ

このワークフローで使用されるリソースを削除するには、Amazon CloudFormation スタックのリソース セクションに移動し、S3 バケットと IAM ロールを削除します。 次に、CloudFormation スタック自体を削除します。

まとめ

オフライン強化学習は、産業企業が履歴データを使用して、安全性を損なうことなく最適なポリシーの検索を自動化するのに役立ちます。 このアプローチを運用に実装するには、状態によって決定されるシステムを構成する測定値、制御できるアクション、および望ましいパフォーマンスを示す指標を特定することから始めます。 次に、アクセスします このGitHubリポジトリ Ray と Amazon SageMaker を使用した自動エンドツーエンド ソリューションの実装。

この投稿は、Amazon SageMaker RL でできることの表面をなぞっただけです。 試してみて、フィードバックをお送りください。 Amazon SageMaker ディスカッションフォーラム または通常のAWSの連絡先を通じて。


著者について

履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。ウォルト・メイフィールド は AWS のソリューションアーキテクトであり、エネルギー会社がより安全かつ効率的に運営できるよう支援しています。 AWS に入社する前、ウォルトは Hilcorp Energy Company でオペレーション エンジニアとして働いていました。 彼は余暇にはガーデニングをしたり、フライフィッシングをしたりするのが好きです。

履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。フェリペ·ロペス AWS のシニア ソリューション アーキテクトであり、石油とガスの生産業務を担当しています。 AWS に入社する前は、GE Digital および Schlumberger で働き、産業アプリケーション向けの製品のモデリングと最適化に注力していました。

履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。イングウェイ・ユー AWS の Generative AI Incubator の応用科学者です。 彼は、自然言語処理、時系列分析、予知保全など、機械学習におけるさまざまな概念実証において、さまざまな業界の複数の組織と協力した経験があります。 余暇には、水泳、絵画、ハイキング、家族や友人と過ごす時間を楽しんでいます。

履歴データ、Ray、Amazon SageMaker を使用して機器のパフォーマンスを最適化する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。王浩珠 Amazon Bedrock の研究科学者であり、Amazon の Titan 基礎モデルの構築に注力しています。 以前は、強化学習バーティカルの共同リーダーとして Amazon ML Solutions Lab に勤務し、強化学習、自然言語処理、グラフ学習に関する最新の研究を活用して、顧客が高度な ML ソリューションを構築するのを支援しました。 Haozhu はミシガン大学で電気およびコンピュータ工学の博士号を取得しました。

タイムスタンプ:

より多くの AWS機械学習