Optimer udstyrets ydeevne med historiske data, Ray og Amazon SageMaker | Amazon Web Services

Optimer udstyrets ydeevne med historiske data, Ray og Amazon SageMaker | Amazon Web Services

Effektive kontrolpolitikker gør det muligt for industrivirksomheder at øge deres rentabilitet ved at maksimere produktiviteten og samtidig reducere uplanlagt nedetid og energiforbrug. At finde optimale kontrolpolitikker er en kompleks opgave, fordi fysiske systemer, såsom kemiske reaktorer og vindmøller, ofte er svære at modellere, og fordi afdrift i procesdynamikken kan få ydeevnen til at forringes over tid. Offline forstærkningslæring er en kontrolstrategi, der giver industrivirksomheder mulighed for at bygge kontrolpolitikker udelukkende ud fra historiske data uden behov for en eksplicit procesmodel. Denne tilgang kræver ikke interaktion med processen direkte i en udforskningsfase, hvilket fjerner en af ​​barriererne for indførelse af forstærkende læring i sikkerhedskritiske applikationer. I dette indlæg vil vi bygge en ende-til-ende-løsning for at finde optimale kontrolpolitikker ved kun at bruge historiske data på Amazon SageMaker ved hjælp af Ray's RLlib bibliotek. For at lære mere om forstærkningslæring, se Brug Reinforcement Learning med Amazon SageMaker.

Brug sager

Industriel kontrol involverer styring af komplekse systemer, såsom produktionslinjer, energinet og kemiske anlæg, for at sikre effektiv og pålidelig drift. Mange traditionelle kontrolstrategier er baseret på foruddefinerede regler og modeller, som ofte kræver manuel optimering. Det er standardpraksis i nogle brancher at overvåge ydeevnen og justere kontrolpolitikken, når f.eks. udstyr begynder at blive nedbrudt, eller miljøforholdene ændrer sig. Genindstilling kan tage uger og kan kræve indsprøjtning af eksterne excitationer i systemet for at registrere dets respons i en trial-and-error-tilgang.

Forstærkende læring er dukket op som et nyt paradigme inden for processtyring for at lære optimale kontrolpolitikker gennem interaktion med omgivelserne. Denne proces kræver opdeling af data i tre kategorier: 1) målinger, der er tilgængelige fra det fysiske system, 2) det sæt af handlinger, der kan udføres på systemet, og 3) en numerisk metrik (belønning) af udstyrets ydeevne. En politik trænes til at finde den handling, ved en given observation, der sandsynligvis vil give de højeste fremtidige belønninger.

I offline forstærkningslæring kan man træne en politik om historiske data, før de implementeres i produktion. Algoritmen trænet i dette blogindlæg hedder "Konservativ Q-læring" (CQL). CQL indeholder en "skuespiller"-model og en "kritiker"-model og er designet til konservativt at forudsige sin egen præstation efter at have foretaget en anbefalet handling. I dette indlæg demonstreres processen med et illustrativt problem med vognstangskontrol. Målet er at træne en agent til at balancere en stang på en vogn og samtidig flytte vognen mod en udpeget målplacering. Træningsproceduren bruger offlinedataene, hvilket giver agenten mulighed for at lære af allerede eksisterende information. Dette casestudie med vognstang demonstrerer træningsprocessen og dens effektivitet i potentielle applikationer fra den virkelige verden.

Løsningsoversigt

Løsningen præsenteret i dette indlæg automatiserer implementeringen af ​​en end-to-end workflow til offline forstærkningslæring med historiske data. Følgende diagram beskriver den arkitektur, der bruges i denne arbejdsgang. Måledata produceres ved kanten af ​​et stykke industrielt udstyr (her simuleret af en AWS Lambda fungere). Dataene lægges ind i en Amazon Kinesis Data Firehose, som gemmer det i Amazon Simple Storage Service (Amazon S3). Amazon S3 er en holdbar, effektiv og billig lagringsløsning, der giver dig mulighed for at servere store mængder data til en maskinlæringsproces.

AWS Lim katalogiserer dataene og gør dem forespørgbare ved hjælp af Amazonas Athena. Athena transformerer måledataene til en form, som en forstærkningsindlæringsalgoritme kan indtage og læsser dem derefter tilbage til Amazon S3. Amazon SageMaker indlæser disse data i et træningsjob og producerer en trænet model. SageMaker serverer derefter denne model i et SageMaker-slutpunkt. Det industrielle udstyr kan derefter forespørge på dette slutpunkt for at modtage handlingsanbefalinger.

Figur 1: Arkitekturdiagram, der viser ende-til-ende forstærkningsindlæringsarbejdsgangen.

Figur 1: Arkitekturdiagram, der viser ende-til-ende forstærkningsindlæringsarbejdsgangen.

I dette indlæg vil vi nedbryde arbejdsgangen i følgende trin:

  1. Formuler problemet. Beslut hvilke handlinger der kan udføres, hvilke målinger der skal laves anbefalinger baseret på, og bestem numerisk, hvor godt hver handling udførte.
  2. Forbered dataene. Transformér måletabellen til et format, som maskinlæringsalgoritmen kan bruge.
  3. Træn algoritmen på disse data.
  4. Vælg det bedste træningsløb baseret på træningsmålinger.
  5. Implementer modellen til et SageMaker-slutpunkt.
  6. Evaluer modellens ydeevne i produktionen.

Forudsætninger

For at gennemføre denne gennemgang skal du have en AWS-konto og en kommandolinjegrænseflade med AWS SAM installeret. Følg disse trin for at implementere AWS SAM-skabelonen til at køre denne arbejdsgang og generere træningsdata:

  1. Download kodelageret med kommandoen
    git clone https://github.com/aws-samples/sagemaker-offline-reinforcement-learning-ray-cql

  2. Skift mappe til repoen:
    cd sagemaker-offline-reinforcement-learning-ray-cql

  3. Byg repoen:
    sam build --use-container

  4. Implementer repoen
    sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

  5. Brug følgende kommandoer til at kalde et bash-script, som genererer mock-data ved hjælp af en AWS Lambda-funktion.
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

Gennemgang af løsning

Formuler problem

Vores system i dette blogindlæg er en vogn med en stang balanceret på toppen. Systemet fungerer godt, når stangen står oprejst, og vognens position er tæt på målpositionen. I det forudgående trin genererede vi historiske data fra dette system.

Følgende tabel viser historiske data indsamlet fra systemet.

Vognens position Vognens hastighed Polvinkel Pol vinkelhastighed Målposition Ydre kraft Beløn Tid
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

Du kan forespørge om historiske systemoplysninger ved hjælp af Amazon Athena med følgende forespørgsel:

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

Tilstanden af ​​dette system er defineret af vognens position, vognens hastighed, stangvinkel, stangvinkelhastighed og målposition. Den handling, der udføres ved hvert tidstrin, er den ydre kraft, der påføres vognen. Det simulerede miljø udsender en belønningsværdi, der er højere, når vognen er tættere på målpositionen, og stangen er mere oprejst.

Forbered data

For at præsentere systeminformationen for forstærkningslæringsmodellen skal du transformere den til JSON-objekter med nøgler, der kategoriserer værdier i tilstandskategorier (også kaldet observation), handling og belønning. Gem disse objekter i Amazon S3. Her er et eksempel på JSON-objekter produceret fra tidstrin i den foregående tabel.

{“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-stakken indeholder et output kaldet AthenaQueryToCreateJsonFormatedData. Kør denne forespørgsel i Amazon Athena for at udføre transformationen og gemme JSON-objekterne i Amazon S3. Forstærkningslæringsalgoritmen bruger strukturen af ​​disse JSON-objekter til at forstå, hvilke værdier der skal baseres anbefalinger på, og resultatet af at foretage handlinger i de historiske data.

Togagent

Nu kan vi starte et træningsjob for at producere en trænet handlingsanbefalingsmodel. Amazon SageMaker lader dig hurtigt starte flere træningsjob for at se, hvordan forskellige konfigurationer påvirker den resulterende trænede model. Kald Lambda-funktionen navngivet TuningJobLauncherFunction at starte et hyperparameterjusteringsjob, der eksperimenterer med fire forskellige sæt hyperparametre, når man træner algoritmen.

Vælg det bedste træningsløb

For at finde ud af, hvilket af træningsjob, der producerede den bedste model, skal du undersøge tabskurver produceret under træning. CQL's kritikermodel estimerer skuespillerens præstation (kaldet en Q-værdi) efter at have foretaget en anbefalet handling. En del af kritikerens tabsfunktion inkluderer den tidsmæssige forskelsfejl. Denne metrik måler kritikerens Q-værdis nøjagtighed. Se efter træningsløb med en høj gennemsnitlig Q-værdi og en lav tidsforskelfejl. Dette papir, En arbejdsgang til offline modelfri robotforstærkningslæring, detaljer om, hvordan du vælger det bedste træningsløb. Kodelageret har en fil, /utils/investigate_training.py, der skaber en plottet html-figur, der beskriver det seneste træningsjob. Kør denne fil, og brug outputtet til at vælge det bedste træningsløb.

Vi kan bruge den gennemsnitlige Q-værdi til at forudsige den trænede models ydeevne. Q-værdierne trænes til konservativt at forudsige summen af ​​diskonterede fremtidige belønningsværdier. For langvarige processer kan vi konvertere dette tal til et eksponentielt vægtet gennemsnit ved at gange Q-værdien med (1-"diskonteringsrente"). Det bedste træningsløb i dette sæt opnåede en gennemsnitlig Q-værdi på 539. Vores diskonteringsrente er 0.99, så modellen forudsiger mindst 5.39 gennemsnitlig belønning pr. tidstrin. Du kan sammenligne denne værdi med historisk systemydeevne for at få en indikation af, om den nye model vil overgå den historiske kontrolpolitik. I dette eksperiment var de historiske datas gennemsnitlige belønning pr. tidstrin 4.3, så CQL-modellen forudsiger 25 procent bedre ydeevne end systemet opnåede historisk.

Implementer model

Amazon SageMaker-slutpunkter giver dig mulighed for at betjene maskinlæringsmodeller på flere forskellige måder for at imødekomme en række forskellige brugssager. I dette indlæg vil vi bruge den serverløse endepunktstype, så vores endepunkt automatisk skalerer med efterspørgsel, og vi betaler kun for computerbrug, når endepunktet genererer en inferens. For at implementere et serverløst slutpunkt skal du inkludere et ProductionVariantServerlessConfig i produktionsvariant af SageMaker slutpunktskonfiguration. Følgende kodestykke viser, hvordan det serverløse slutpunkt i dette eksempel implementeres ved hjælp af Amazon SageMaker-softwareudviklingssættet til Python. Find eksempelkoden, der bruges til at implementere modellen på sagemaker-offline-forstærkning-læring-ray-cql.

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

De trænede modelfiler er placeret ved S3-modellens artefakter for hvert træningsløb. For at implementere maskinlæringsmodellen skal du finde modelfilerne for det bedste træningsløb og kalde Lambda-funktionen med navnet "ModelDeployerFunction” med en hændelse, der indeholder disse modeldata. Lambda-funktionen vil lancere et SageMaker serverløst slutpunkt til at betjene den trænede model. Eksempelbegivenhed til brug, når du ringer til "ModelDeployerFunction"

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

Evaluer trænet model ydeevne

Det er tid til at se, hvordan vores trænede model klarer sig i produktionen! For at kontrollere ydeevnen af ​​den nye model skal du kalde Lambda-funktionen med navnet "RunPhysicsSimulationFunction” med SageMaker-slutpunktets navn i begivenheden. Dette vil køre simuleringen ved hjælp af de handlinger, der anbefales af slutpunktet. Eksempelbegivenhed til brug, når du ringer til RunPhysicsSimulatorFunction:

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

Brug følgende Athena-forespørgsel til at sammenligne ydeevnen af ​​den trænede model med historisk systemydeevne.

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

Her er et eksempel på resultattabel. Vi ser den trænede model opnået 2.5 gange mere belønning end de historiske data! Derudover var modellens sande ydeevne 2x bedre end den konservative præstationsforudsigelse.

Handlingskilde Gennemsnitlig belønning pr. tidstrin
trained_model 10.8
historic_data 4.3

Følgende animationer viser forskellen mellem en prøveepisode fra træningsdataene og en episode, hvor den trænede model blev brugt til at vælge, hvilken handling der skulle udføres. I animationerne er det blå felt vognen, den blå linje er stangen, og det grønne rektangel er målplaceringen. Den røde pil viser den kraft, der påføres vognen ved hvert tidstrin. Den røde pil i træningsdataene hopper en del frem og tilbage, fordi dataene blev genereret ved hjælp af 50 procent eksperthandlinger og 50 procent tilfældige handlinger. Den trænede model lærte en kontrolpolitik, der flytter vognen hurtigt til målpositionen, samtidig med at stabiliteten bevares, udelukkende ved at observere ikke-ekspert demonstrationer.

Optimize equipment performance with historical data, Ray, and Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai. Optimize equipment performance with historical data, Ray, and Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

 Ryd op

For at slette ressourcer, der bruges i denne arbejdsgang, skal du navigere til ressourcesektionen i Amazon CloudFormation-stakken og slette S3-buckets og IAM-rollerne. Slet derefter selve CloudFormation-stakken.

Konklusion

Offline forstærkningslæring kan hjælpe industrivirksomheder med at automatisere søgningen efter optimale politikker uden at gå på kompromis med sikkerheden ved at bruge historiske data. For at implementere denne tilgang i dine operationer, start med at identificere de målinger, der udgør et tilstandsbestemt system, de handlinger, du kan kontrollere, og målinger, der angiver den ønskede ydeevne. Derefter adgang dette GitHub -depot til implementering af en automatisk end-to-end-løsning ved hjælp af Ray og Amazon SageMaker.

Indlægget ridser bare overfladen af, hvad du kan gøre med Amazon SageMaker RL. Prøv det, og send os venligst feedback, enten i Amazon SageMaker diskussionsforum eller gennem dine sædvanlige AWS-kontakter.


Om forfatterne

Optimize equipment performance with historical data, Ray, and Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Walt Mayfield er Solutions Architect hos AWS og hjælper energiselskaber med at operere mere sikkert og effektivt. Før han kom til AWS, arbejdede Walt som driftsingeniør for Hilcorp Energy Company. Han kan lide at have have og fluefiske i sin fritid.

Optimize equipment performance with historical data, Ray, and Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Felipe Lopez er Senior Solutions Architect hos AWS med en koncentration inden for olie- og gasproduktion. Før han kom til AWS, arbejdede Felipe hos GE Digital og Schlumberger, hvor han fokuserede på modellering og optimeringsprodukter til industrielle applikationer.

Optimize equipment performance with historical data, Ray, and Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Yingwei Yu er en anvendt videnskabsmand ved Generative AI Incubator, AWS. Han har erfaring med at arbejde med flere organisationer på tværs af brancher på forskellige proofs of concept inden for maskinlæring, herunder naturlig sprogbehandling, tidsserieanalyse og forudsigelig vedligeholdelse. I sin fritid nyder han at svømme, male, vandre og tilbringe tid med familie og venner.

Optimize equipment performance with historical data, Ray, and Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Haozhu Wang er en forsker i Amazon Bedrock med fokus på at bygge Amazons Titan-fundamentmodeller. Tidligere arbejdede han i Amazon ML Solutions Lab som medansvarlig for Reinforcement Learning Vertical og hjalp kunder med at bygge avancerede ML-løsninger med den seneste forskning om forstærkningsindlæring, naturlig sprogbehandling og grafindlæring. Haozhu modtog sin ph.d. i elektro- og computerteknik fra University of Michigan.

Tidsstempel:

Mere fra AWS maskinindlæring