Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services

Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services

Effiziente Steuerungsrichtlinien ermöglichen es Industrieunternehmen, ihre Rentabilität zu steigern, indem sie die Produktivität maximieren und gleichzeitig ungeplante Ausfallzeiten und den Energieverbrauch reduzieren. Das Finden optimaler Kontrollrichtlinien ist eine komplexe Aufgabe, da physikalische Systeme wie chemische Reaktoren und Windkraftanlagen oft schwer zu modellieren sind und weil Abweichungen in der Prozessdynamik dazu führen können, dass sich die Leistung im Laufe der Zeit verschlechtert. Offline Reinforcement Learning ist eine Kontrollstrategie, die es Industrieunternehmen ermöglicht, Kontrollrichtlinien vollständig auf der Grundlage historischer Daten zu erstellen, ohne dass ein explizites Prozessmodell erforderlich ist. Dieser Ansatz erfordert keine direkte Interaktion mit dem Prozess in einer Explorationsphase, wodurch eines der Hindernisse für die Einführung von Reinforcement Learning in sicherheitskritischen Anwendungen beseitigt wird. In diesem Beitrag werden wir eine End-to-End-Lösung entwickeln, um optimale Kontrollrichtlinien ausschließlich anhand historischer Daten zu finden Amazon Sage Maker mit Rays RLlib Bibliothek. Weitere Informationen zum Reinforcement Learning finden Sie unter Nutzen Sie Reinforcement Learning mit Amazon SageMaker.

Anwendungsszenarien

Die industrielle Steuerung umfasst die Verwaltung komplexer Systeme wie Produktionslinien, Energienetze und Chemieanlagen, um einen effizienten und zuverlässigen Betrieb sicherzustellen. Viele traditionelle Kontrollstrategien basieren auf vordefinierten Regeln und Modellen, die häufig eine manuelle Optimierung erfordern. In manchen Branchen ist es gängige Praxis, die Leistung zu überwachen und die Kontrollpolitik anzupassen, wenn sich zum Beispiel Geräte verschlechtern oder sich die Umgebungsbedingungen ändern. Die Neuabstimmung kann Wochen dauern und erfordert möglicherweise die Einspeisung externer Anregungen in das System, um seine Reaktion in einem Versuch-und-Irrtum-Ansatz aufzuzeichnen.

Reinforcement Learning hat sich als neues Paradigma in der Prozesskontrolle herauskristallisiert, um optimale Kontrollrichtlinien durch Interaktion mit der Umgebung zu erlernen. Dieser Prozess erfordert die Aufteilung der Daten in drei Kategorien: 1) vom physischen System verfügbare Messungen, 2) die Reihe von Aktionen, die am System durchgeführt werden können, und 3) eine numerische Metrik (Belohnung) der Geräteleistung. Eine Richtlinie wird darauf trainiert, bei einer bestimmten Beobachtung die Aktion zu finden, die wahrscheinlich die höchsten zukünftigen Belohnungen hervorbringt.

Beim Offline-Lernen zur Verstärkung kann man eine Richtlinie anhand historischer Daten trainieren, bevor man sie in der Produktion bereitstellt. Der in diesem Blogbeitrag trainierte Algorithmus heißt „Konservatives Q-Lernen” (CQL). CQL enthält ein „Akteur“-Modell und ein „Kritiker“-Modell und ist darauf ausgelegt, die eigene Leistung nach Ergreifen einer empfohlenen Maßnahme konservativ vorherzusagen. In diesem Beitrag wird der Prozess anhand eines veranschaulichenden Problems der Wagenstangensteuerung demonstriert. Das Ziel besteht darin, einem Agenten beizubringen, eine Stange auf einem Wagen zu balancieren und gleichzeitig den Wagen zu einem bestimmten Zielort zu bewegen. Das Trainingsverfahren nutzt die Offline-Daten und ermöglicht es dem Agenten, aus bereits vorhandenen Informationen zu lernen. Diese Cart-Pole-Fallstudie demonstriert den Trainingsprozess und seine Wirksamkeit in potenziellen realen Anwendungen.

Lösungsüberblick

Die in diesem Beitrag vorgestellte Lösung automatisiert die Bereitstellung eines End-to-End-Workflows für Offline-Reinforcement-Learning mit historischen Daten. Das folgende Diagramm beschreibt die in diesem Workflow verwendete Architektur. Messdaten werden am Rande von einem Industriegerät erzeugt (hier simuliert von einem AWS Lambda Funktion). Die Daten werden in eine Amazon Kinesis Data Firehose, in dem es gespeichert wird Amazon Simple Storage-Service (Amazon S3). Amazon S3 ist eine langlebige, leistungsstarke und kostengünstige Speicherlösung, mit der Sie große Datenmengen für einen Trainingsprozess für maschinelles Lernen bereitstellen können.

AWS-Kleber katalogisiert die Daten und macht sie mit abfragbar Amazonas Athena. Athena wandelt die Messdaten in eine Form um, die ein Reinforcement-Learning-Algorithmus aufnehmen und dann wieder in Amazon S3 entladen kann. Amazon SageMaker lädt diese Daten in einen Trainingsauftrag und erstellt ein trainiertes Modell. SageMaker stellt dieses Modell dann in einem SageMaker-Endpunkt bereit. Die Industrieausrüstung kann dann diesen Endpunkt abfragen, um Handlungsempfehlungen zu erhalten.

Abbildung 1: Architekturdiagramm, das den End-to-End-Workflow für Verstärkungslernen zeigt.

Abbildung 1: Architekturdiagramm, das den End-to-End-Workflow für Verstärkungslernen zeigt.

In diesem Beitrag werden wir den Workflow in die folgenden Schritte unterteilen:

  1. Formulieren Sie das Problem. Entscheiden Sie, welche Maßnahmen ergriffen werden können, auf welchen Messungen Sie Empfehlungen abgeben möchten, und bestimmen Sie numerisch, wie gut jede Maßnahme ausgeführt wurde.
  2. Bereiten Sie die Daten vor. Transformieren Sie die Messtabelle in ein Format, das der Algorithmus für maschinelles Lernen verarbeiten kann.
  3. Trainieren Sie den Algorithmus anhand dieser Daten.
  4. Wählen Sie den besten Trainingslauf basierend auf den Trainingsmetriken aus.
  5. Stellen Sie das Modell auf einem SageMaker-Endpunkt bereit.
  6. Bewerten Sie die Leistung des Modells in der Produktion.

Voraussetzungen:

Um diese exemplarische Vorgehensweise abzuschließen, benötigen Sie eine AWS-Konto und eine Befehlszeilenschnittstelle mit AWS SAM installiert. Befolgen Sie diese Schritte, um die AWS SAM-Vorlage bereitzustellen, um diesen Workflow auszuführen und Trainingsdaten zu generieren:

  1. Laden Sie das Code-Repository mit dem Befehl herunter
    git clone https://github.com/aws-samples/sagemaker-offline-reinforcement-learning-ray-cql

  2. Wechseln Sie in das Repo-Verzeichnis:
    cd sagemaker-offline-reinforcement-learning-ray-cql

  3. Erstellen Sie das Repo:
    sam build --use-container

  4. Stellen Sie das Repo bereit
    sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

  5. Verwenden Sie die folgenden Befehle, um ein Bash-Skript aufzurufen, das mithilfe einer AWS Lambda-Funktion Scheindaten generiert.
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

Lösungsweg

Problem formulieren

Unser System in diesem Blogbeitrag ist ein Wagen mit einer darauf balancierten Stange. Das System funktioniert gut, wenn die Stange aufrecht steht und die Wagenposition nahe an der Zielposition liegt. Im Voraussetzungsschritt haben wir historische Daten aus diesem System generiert.

Die folgende Tabelle zeigt vom System erfasste historische Daten.

Warenkorbposition Wagengeschwindigkeit Polwinkel Polwinkelgeschwindigkeit Zielposition Äußere Kraft Belohnen Uhrzeit
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

Sie können historische Systeminformationen mit Amazon Athena mit der folgenden Abfrage abfragen:

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

Der Zustand dieses Systems wird durch die Wagenposition, die Wagengeschwindigkeit, den Polwinkel, die Polwinkelgeschwindigkeit und die Zielposition definiert. Die bei jedem Zeitschritt ausgeführte Aktion ist die auf den Wagen ausgeübte äußere Kraft. Die simulierte Umgebung gibt einen höheren Belohnungswert aus, wenn sich der Wagen näher an der Zielposition befindet und die Stange aufrechter steht.

Daten vorbereiten

Um die Systeminformationen dem Reinforcement-Learning-Modell zu präsentieren, wandeln Sie sie in JSON-Objekte mit Schlüsseln um, die Werte in die Kategorien Zustand (auch Beobachtung), Aktion und Belohnung kategorisieren. Speichern Sie diese Objekte in Amazon S3. Hier ist ein Beispiel für JSON-Objekte, die aus Zeitschritten in der vorherigen Tabelle erstellt wurden.

{“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]]}

Der AWS CloudFormation-Stack enthält eine Ausgabe namens AthenaQueryToCreateJsonFormatedData. Führen Sie diese Abfrage in Amazon Athena aus, um die Transformation durchzuführen und die JSON-Objekte in Amazon S3 zu speichern. Der Reinforcement-Learning-Algorithmus nutzt die Struktur dieser JSON-Objekte, um zu verstehen, auf welchen Werten Empfehlungen basieren sollen und welches Ergebnis die Durchführung von Aktionen in den historischen Daten hat.

Zugagent

Jetzt können wir einen Trainingsjob starten, um ein trainiertes Aktionsempfehlungsmodell zu erstellen. Mit Amazon SageMaker können Sie schnell mehrere Trainingsjobs starten, um zu sehen, wie sich verschiedene Konfigurationen auf das resultierende trainierte Modell auswirken. Rufen Sie die Lambda-Funktion mit dem Namen auf TuningJobLauncherFunction um einen Hyperparameter-Tuning-Job zu starten, der beim Training des Algorithmus mit vier verschiedenen Sätzen von Hyperparametern experimentiert.

Wählen Sie den besten Trainingslauf

Um herauszufinden, welcher der Trainingsjobs das beste Modell hervorgebracht hat, untersuchen Sie die während des Trainings erstellten Verlustkurven. Das Kritikermodell von CQL schätzt die Leistung des Akteurs (sogenannter Q-Wert), nachdem er eine empfohlene Aktion ausgeführt hat. Ein Teil der Verlustfunktion des Kritikers umfasst den zeitlichen Differenzfehler. Diese Metrik misst die Q-Wert-Genauigkeit des Kritikers. Suchen Sie nach Trainingsläufen mit einem hohen mittleren Q-Wert und einem geringen zeitlichen Differenzfehler. Dieses Papier, Ein Workflow für modellfreies Offline-Robotic-Reinforcement-Lernen, Einzelheiten zur Auswahl des besten Trainingslaufs. Das Code-Repository verfügt über eine Datei, /utils/investigate_training.py, das eine grafische HTML-Abbildung erstellt, die den neuesten Ausbildungsjob beschreibt. Führen Sie diese Datei aus und verwenden Sie die Ausgabe, um den besten Trainingslauf auszuwählen.

Wir können den mittleren Q-Wert verwenden, um die Leistung des trainierten Modells vorherzusagen. Die Q-Werte werden trainiert, um die Summe der abgezinsten zukünftigen Belohnungswerte konservativ vorherzusagen. Bei lang andauernden Prozessen können wir diese Zahl in einen exponentiell gewichteten Durchschnitt umwandeln, indem wir den Q-Wert mit (1 – „Abzinsungssatz“) multiplizieren. Der beste Trainingslauf in diesem Satz erreichte einen mittleren Q-Wert von 539. Unser Abzinsungssatz beträgt 0.99, sodass das Modell eine durchschnittliche Belohnung von mindestens 5.39 pro Zeitschritt vorhersagt. Sie können diesen Wert mit der historischen Systemleistung vergleichen, um einen Hinweis darauf zu erhalten, ob das neue Modell die historische Steuerungsrichtlinie übertrifft. In diesem Experiment betrug die durchschnittliche Belohnung pro Zeitschritt der historischen Daten 4.3, sodass das CQL-Modell eine um 25 Prozent bessere Leistung vorhersagt, als das System in der Vergangenheit erreicht hat.

Modell bereitstellen

Mit Amazon SageMaker-Endpunkten können Sie Modelle für maschinelles Lernen auf verschiedene Arten bereitstellen, um eine Vielzahl von Anwendungsfällen abzudecken. In diesem Beitrag verwenden wir den serverlosen Endpunkttyp, sodass unser Endpunkt automatisch mit der Nachfrage skaliert und wir nur für die Rechennutzung zahlen, wenn der Endpunkt eine Inferenz generiert. Um einen serverlosen Endpunkt bereitzustellen, schließen Sie Folgendes ein: ProductionVariantServerlessConfig der Produktionsvariante des SageMakers Endpunktkonfiguration. Der folgende Codeausschnitt zeigt, wie der serverlose Endpunkt in diesem Beispiel mithilfe des Amazon SageMaker Software Development Kit für Python bereitgestellt wird. Den Beispielcode, der zum Bereitstellen des Modells verwendet wird, finden Sie unter sagemaker-offline-reinforcement-learning-ray-cql.

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

Die Dateien des trainierten Modells befinden sich für jeden Trainingslauf in den S3-Modellartefakten. Um das Modell für maschinelles Lernen bereitzustellen, suchen Sie die Modelldateien des besten Trainingslaufs und rufen Sie die Lambda-Funktion mit dem Namen „ auf.ModelDeployerFunction” mit einem Ereignis, das diese Modelldaten enthält. Die Lambda-Funktion startet einen serverlosen SageMaker-Endpunkt, um das trainierte Modell bereitzustellen. Beispielereignis zur Verwendung beim Aufruf von „ModelDeployerFunction"

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

Bewerten Sie die Leistung des trainierten Modells

Es ist Zeit zu sehen, wie sich unser geschultes Modell in der Produktion schlägt! Um die Leistung des neuen Modells zu überprüfen, rufen Sie die Lambda-Funktion mit dem Namen „ auf.RunPhysicsSimulationFunction” durch den SageMaker-Endpunktnamen im Ereignis. Dadurch wird die Simulation mit den vom Endpunkt empfohlenen Aktionen ausgeführt. Beispielereignis, das beim Aufruf von verwendet werden soll RunPhysicsSimulatorFunction:

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

Verwenden Sie die folgende Athena-Abfrage, um die Leistung des trainierten Modells mit der historischen Systemleistung zu vergleichen.

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

Hier ist eine Beispiel-Ergebnistabelle. Wir sehen, dass das trainierte Modell eine 2.5-mal höhere Belohnung erzielt hat als die historischen Daten! Darüber hinaus war die tatsächliche Leistung des Modells doppelt so hoch wie die konservative Leistungsvorhersage.

Aktionsquelle Durchschnittliche Belohnung pro Zeitschritt
trained_model 10.8
historic_data 4.3

Die folgenden Animationen zeigen den Unterschied zwischen einer Beispielepisode aus den Trainingsdaten und einer Episode, in der das trainierte Modell zur Auswahl der auszuführenden Aktion verwendet wurde. In den Animationen ist das blaue Kästchen der Wagen, die blaue Linie die Stange und das grüne Rechteck der Zielort. Der rote Pfeil zeigt die Kraft, die bei jedem Zeitschritt auf den Wagen ausgeübt wird. Der rote Pfeil in den Trainingsdaten springt ziemlich stark hin und her, da die Daten zu 50 Prozent durch Expertenaktionen und zu 50 Prozent durch Zufallsaktionen generiert wurden. Das trainierte Modell lernte eine Steuerungsstrategie, die den Wagen schnell in die Zielposition bewegt und dabei die Stabilität aufrechterhält, und zwar ausschließlich durch die Beobachtung von nicht fachkundigen Demonstrationen.

Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai. Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

 Aufräumen

Um in diesem Workflow verwendete Ressourcen zu löschen, navigieren Sie zum Abschnitt „Ressourcen“ des Amazon CloudFormation-Stacks und löschen Sie die S3-Buckets und IAM-Rollen. Löschen Sie dann den CloudFormation-Stack selbst.

Zusammenfassung

Offline-Lernen zur Verstärkung kann Industrieunternehmen dabei helfen, die Suche nach optimalen Richtlinien zu automatisieren, ohne die Sicherheit zu gefährden, indem historische Daten verwendet werden. Um diesen Ansatz in Ihren Betrieb umzusetzen, identifizieren Sie zunächst die Messungen, aus denen ein zustandsbestimmtes System besteht, die Aktionen, die Sie steuern können, und Metriken, die die gewünschte Leistung anzeigen. Dann greifen Sie zu Dieses GitHub-Repository für die Implementierung einer automatischen End-to-End-Lösung mit Ray und Amazon SageMaker.

Der Beitrag kratzt nur an der Oberfläche dessen, was Sie mit Amazon SageMaker RL tun können. Probieren Sie es aus und senden Sie uns bitte Feedback, entweder im Amazon SageMaker-Diskussionsforum oder über Ihre üblichen AWS-Kontakte.


Über die Autoren

Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Walt Mayfield ist Lösungsarchitekt bei AWS und hilft Energieunternehmen, sicherer und effizienter zu arbeiten. Bevor er zu AWS kam, arbeitete Walt als Betriebsingenieur für die Hilcorp Energy Company. In seiner Freizeit arbeitet er gerne im Garten und angelt Fliegenfischen.

Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Felipe López ist Senior Solutions Architect bei AWS mit Schwerpunkt auf Öl- und Gasproduktionsbetrieben. Bevor er zu AWS kam, arbeitete Felipe bei GE Digital und Schlumberger, wo er sich auf die Modellierung und Optimierung von Produkten für industrielle Anwendungen konzentrierte.

Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Yingwei Yu ist angewandter Wissenschaftler bei Generative AI Incubator, AWS. Er verfügt über Erfahrung in der Arbeit mit mehreren Organisationen aus verschiedenen Branchen an verschiedenen Proofs of Concept im maschinellen Lernen, einschließlich der Verarbeitung natürlicher Sprache, Zeitreihenanalyse und vorausschauender Wartung. In seiner Freizeit schwimmt er gerne, malt, wandert und verbringt Zeit mit Familie und Freunden.

Optimieren Sie die Geräteleistung mit historischen Daten, Ray und Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Haozhu Wang ist ein Forschungswissenschaftler bei Amazon Bedrock, der sich auf die Entwicklung der Titan-Fundamentmodelle von Amazon konzentriert. Zuvor arbeitete er im Amazon ML Solutions Lab als Co-Leiter der Reinforcement Learning Vertical und half Kunden beim Aufbau fortschrittlicher ML-Lösungen mit den neuesten Forschungsergebnissen zu Reinforcement Learning, Natural Language Processing und Graph Learning. Haozhu erhielt seinen Doktortitel in Elektrotechnik und Informationstechnik von der University of Michigan.

Zeitstempel:

Mehr von AWS Maschinelles Lernen