Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services

Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services

Effektive kontrollpolicyer gjør det mulig for industribedrifter å øke lønnsomheten ved å maksimere produktiviteten samtidig som de reduserer uplanlagt nedetid og energiforbruk. Å finne optimal kontrollpolicy er en kompleks oppgave fordi fysiske systemer, som kjemiske reaktorer og vindturbiner, ofte er vanskelige å modellere og fordi drift i prosessdynamikk kan føre til at ytelsen forringes over tid. Offline forsterkningslæring er en kontrollstrategi som lar industribedrifter bygge kontrollpolicyer utelukkende fra historiske data uten behov for en eksplisitt prosessmodell. Denne tilnærmingen krever ikke interaksjon med prosessen direkte i et utforskningsstadium, noe som fjerner en av barrierene for å ta i bruk forsterkningslæring i sikkerhetskritiske applikasjoner. I dette innlegget vil vi bygge en ende-til-ende-løsning for å finne optimale kontrollpolicyer ved å bruke kun historiske data på Amazon SageMaker ved hjelp av Rays RLlib bibliotek. For å lære mer om forsterkende læring, se Bruk Reinforcement Learning med Amazon SageMaker.

Bruksmåter

Industriell kontroll involverer styring av komplekse systemer, som produksjonslinjer, energinett og kjemiske anlegg, for å sikre effektiv og pålitelig drift. Mange tradisjonelle kontrollstrategier er basert på forhåndsdefinerte regler og modeller, som ofte krever manuell optimalisering. Det er standard praksis i enkelte bransjer å overvåke ytelsen og justere kontrollpolicyen når for eksempel utstyr begynner å bli forringet eller miljøforholdene endres. Retuning kan ta uker og kan kreve å injisere eksterne eksitasjoner i systemet for å registrere responsen i en prøving-og-feil-tilnærming.

Forsterkende læring har dukket opp som et nytt paradigme innen prosesskontroll for å lære optimal kontrollpolitikk gjennom samhandling med omgivelsene. Denne prosessen krever å bryte ned data i tre kategorier: 1) målinger tilgjengelig fra det fysiske systemet, 2) settet med handlinger som kan utføres på systemet, og 3) en numerisk metrikk (belønning) for utstyrsytelse. En policy er opplært til å finne handlingen, ved en gitt observasjon, som sannsynligvis vil gi de høyeste fremtidige belønningene.

I offline forsterkningslæring kan man trene opp en policy for historiske data før de distribueres i produksjon. Algoritmen som trenes i dette blogginnlegget heter "Konservativ Q-læring" (CQL). CQL inneholder en "skuespiller"-modell og en "kritiker"-modell og er designet for å konservativt forutsi sin egen ytelse etter å ha utført en anbefalt handling. I dette innlegget er prosessen demonstrert med et illustrerende problem med vognstangkontroll. Målet er å trene en agent til å balansere en stang på en vogn samtidig som den flytter vognen mot et angitt målsted. Opplæringsprosedyren bruker offline-data, slik at agenten kan lære av eksisterende informasjon. Denne case-studien med handlevogn demonstrerer opplæringsprosessen og dens effektivitet i potensielle virkelige applikasjoner.

Løsningsoversikt

Løsningen presentert i dette innlegget automatiserer distribusjonen av en ende-til-ende arbeidsflyt for offline forsterkende læring med historiske data. Følgende diagram beskriver arkitekturen som brukes i denne arbeidsflyten. Måledata produseres på kanten av et industrielt utstyr (her simulert av en AWS Lambda funksjon). Dataene legges inn i en Amazon Kinesis Data Firehose, som lagrer den i Amazon enkel lagringstjeneste (Amazon S3). Amazon S3 er en slitesterk, ytende og rimelig lagringsløsning som lar deg levere store datamengder til en maskinlæringsprosess.

AWS Lim katalogiserer dataene og gjør dem spørrebare ved hjelp av Amazonas Athena. Athena transformerer måledataene til en form som en forsterkende læringsalgoritme kan innta og laster dem deretter tilbake til Amazon S3. Amazon SageMaker laster disse dataene inn i en treningsjobb og produserer en trent modell. SageMaker serverer deretter modellen i et SageMaker-endepunkt. Det industrielle utstyret kan deretter spørre det endepunktet for å motta handlingsanbefalinger.

Figur 1: Arkitekturdiagram som viser arbeidsflyten for ende-til-ende forsterkning.

Figur 1: Arkitekturdiagram som viser arbeidsflyten for ende-til-ende forsterkning.

I dette innlegget vil vi bryte ned arbeidsflyten i følgende trinn:

  1. Formuler problemet. Bestem hvilke handlinger som kan iverksettes, hvilke målinger du skal gi anbefalinger basert på, og bestem numerisk hvor godt hver handling utførte.
  2. Forbered dataene. Transformer måletabellen til et format maskinlæringsalgoritmen kan bruke.
  3. Tren algoritmen på disse dataene.
  4. Velg det beste treningsløpet basert på treningsberegninger.
  5. Distribuer modellen til et SageMaker-endepunkt.
  6. Evaluer ytelsen til modellen i produksjon.

Forutsetninger

For å fullføre denne gjennomgangen, må du ha en AWS-konto og et kommandolinjegrensesnitt med AWS SAM installert. Følg disse trinnene for å distribuere AWS SAM-malen for å kjøre denne arbeidsflyten og generere opplæringsdata:

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

  2. Bytt katalog til repoen:
    cd sagemaker-offline-reinforcement-learning-ray-cql

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

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

  5. Bruk følgende kommandoer for å kalle et bash-skript, som genererer falske data ved hjelp av en AWS Lambda-funksjon.
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

Gjennomgang av løsningen

Formuler problem

Systemet vårt i dette blogginnlegget er en vogn med en stang balansert på toppen. Systemet fungerer godt når stangen står oppreist, og vognposisjonen er nær målposisjonen. I forutsetningstrinnet genererte vi historiske data fra dette systemet.

Tabellen nedenfor viser historiske data samlet inn fra systemet.

Vognposisjon Vognhastighet Polvinkel Polvinkelhastighet Målposisjon Ekstern kraft Belønn 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 søke etter historisk systeminformasjon ved å bruke Amazon Athena med følgende spørring:

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

Tilstanden til dette systemet er definert av vognposisjon, vognhastighet, stangvinkel, stangvinkelhastighet og målposisjon. Handlingen som tas ved hvert tidstrinn er den ytre kraften som påføres vognen. Det simulerte miljøet gir en belønningsverdi som er høyere når vognen er nærmere målposisjonen og stangen er mer oppreist.

Forbered data

For å presentere systeminformasjonen til forsterkningslæringsmodellen, transformer den til JSON-objekter med nøkler som kategoriserer verdier i tilstanden (også kalt observasjon), handling og belønningskategorier. Lagre disse objektene i Amazon S3. Her er et eksempel på JSON-objekter produsert fra tidstrinn i forrige tabell.

{“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 inneholder en utgang kalt AthenaQueryToCreateJsonFormatedData. Kjør denne spørringen i Amazon Athena for å utføre transformasjonen og lagre JSON-objektene i Amazon S3. Forsterkningslæringsalgoritmen bruker strukturen til disse JSON-objektene for å forstå hvilke verdier man skal basere anbefalinger på og resultatet av å ta handlinger i de historiske dataene.

Togagent

Nå kan vi starte en opplæringsjobb for å produsere en opplært handlingsanbefalingsmodell. Amazon SageMaker lar deg raskt starte flere treningsjobber for å se hvordan ulike konfigurasjoner påvirker den resulterende trente modellen. Kall Lambda-funksjonen navngitt TuningJobLauncherFunction å starte en hyperparameterinnstillingsjobb som eksperimenterer med fire forskjellige sett med hyperparametre når du trener algoritmen.

Velg beste treningsløp

For å finne hvilke av treningsjobbene som ga den beste modellen, undersøk tapskurver produsert under trening. CQLs kritikermodell estimerer skuespillerens ytelse (kalt en Q-verdi) etter å ha utført en anbefalt handling. En del av kritikerens tapsfunksjon inkluderer den tidsmessige forskjellsfeilen. Denne beregningen måler kritikerens Q-verdis nøyaktighet. Se etter treningsløp med høy gjennomsnittlig Q-verdi og lav tidsforskjellsfeil. Dette papiret, En arbeidsflyt for offline modellfri robotforsterkningslæring, detaljer om hvordan du velger det beste treningsløpet. Kodelageret har en fil, /utils/investigate_training.py, som lager en plottende html-figur som beskriver den siste treningsjobben. Kjør denne filen og bruk utdataene til å velge det beste treningsløpet.

Vi kan bruke den gjennomsnittlige Q-verdien til å forutsi ytelsen til den trente modellen. Q-verdiene er opplært til å konservativt forutsi summen av diskonterte fremtidige belønningsverdier. For langvarige prosesser kan vi konvertere dette tallet til et eksponentielt vektet gjennomsnitt ved å multiplisere Q-verdien med (1-"diskonteringsrente"). Det beste treningsløpet i dette settet oppnådde en gjennomsnittlig Q-verdi på 539. Vår diskonteringsrente er 0.99, så modellen forutsier minst 5.39 gjennomsnittlig belønning per tidstrinn. Du kan sammenligne denne verdien med historisk systemytelse for å få en indikasjon på om den nye modellen vil overgå den historiske kontrollpolicyen. I dette eksperimentet var den historiske dataens gjennomsnittlige belønning per tidstrinn 4.3, så CQL-modellen forutsier 25 prosent bedre ytelse enn systemet oppnådde historisk.

Implementer modell

Amazon SageMaker-endepunkter lar deg betjene maskinlæringsmodeller på flere forskjellige måter for å møte en rekke brukstilfeller. I dette innlegget vil vi bruke den serverløse endepunkttypen slik at endepunktet vårt automatisk skaleres med etterspørsel, og vi betaler kun for databruk når endepunktet genererer en slutning. For å distribuere et serverløst endepunkt, inkluderer du en ProductionVariantServerlessConfig i produksjonsvariant av SageMaker endepunktkonfigurasjon. Følgende kodebit viser hvordan det serverløse endepunktet i dette eksemplet er distribuert ved å bruke Amazon SageMaker-programvareutviklingssettet for Python. Finn eksempelkoden som ble brukt til å distribuere modellen på sagemaker-offline-forsterkning-læring-ray-cql.

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

De trente modellfilene er plassert ved S3-modellartefakter for hver treningskjøring. For å distribuere maskinlæringsmodellen, finn modellfilene for den beste treningskjøringen, og ring Lambda-funksjonen kalt "ModelDeployerFunction” med en hendelse som inneholder disse modelldataene. Lambda-funksjonen vil lansere et SageMaker serverløst endepunkt for å betjene den trente modellen. Eksempelhendelse som skal brukes når du ringer "ModelDeployerFunction"

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

Evaluer trent modellytelse

Det er på tide å se hvordan vår trente modell gjør det i produksjon! For å sjekke ytelsen til den nye modellen, ring Lambda-funksjonen kalt "RunPhysicsSimulationFunction” med SageMaker-endepunktnavnet i arrangementet. Dette vil kjøre simuleringen ved å bruke handlingene anbefalt av endepunktet. Eksempel på hendelse som skal brukes når du ringer RunPhysicsSimulatorFunction:

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

Bruk følgende Athena-spørring for å sammenligne ytelsen til den trente modellen med historisk systemytelse.

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å resultattabell. Vi ser at den trente modellen oppnådde 2.5 ganger mer belønning enn de historiske dataene! I tillegg var den sanne ytelsen til modellen 2 ganger bedre enn den konservative ytelsesprediksjonen.

Handlingskilde Gjennomsnittlig belønning per tidstrinn
trained_model 10.8
historic_data 4.3

Følgende animasjoner viser forskjellen mellom en prøveepisode fra treningsdataene og en episode der den trente modellen ble brukt til å velge hvilken handling som skulle utføres. I animasjonene er den blå boksen vognen, den blå linjen er stangen, og det grønne rektangelet er målplasseringen. Den røde pilen viser kraften som påføres vognen ved hvert tidstrinn. Den røde pilen i treningsdataene hopper ganske mye frem og tilbake fordi dataene ble generert ved hjelp av 50 prosent eksperthandlinger og 50 prosent tilfeldige handlinger. Den trente modellen lærte en kontrollpolicy som flytter vognen raskt til målposisjonen, samtidig som den opprettholder stabilitet, helt fra å observere ikke-ekspertdemonstrasjoner.

Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai. Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

 Rydd opp

For å slette ressurser som brukes i denne arbeidsflyten, naviger til ressursdelen av Amazon CloudFormation-stakken og slett S3-bøttene og IAM-rollene. Slett deretter selve CloudFormation-stakken.

konklusjonen

Offline forsterkende læring kan hjelpe industribedrifter med å automatisere søket etter optimale retningslinjer uten å gå på akkord med sikkerheten ved å bruke historiske data. For å implementere denne tilnærmingen i virksomheten din, start med å identifisere målingene som utgjør et tilstandsbestemt system, handlingene du kan kontrollere, og beregninger som indikerer ønsket ytelse. Deretter tilgang dette GitHub-depotet for implementering av en automatisk ende-til-ende-løsning ved bruk av Ray og Amazon SageMaker.

Innlegget skraper bare i overflaten av hva du kan gjøre med Amazon SageMaker RL. Prøv det, og send oss ​​gjerne tilbakemelding, enten i Amazon SageMaker diskusjonsforum eller gjennom dine vanlige AWS-kontakter.


Om forfatterne

Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Walt Mayfield er Solutions Architect hos AWS og hjelper energiselskaper å operere sikrere og mer effektivt. Før han begynte i AWS, jobbet Walt som driftsingeniør for Hilcorp Energy Company. Han liker å hage og fluefiske på fritiden.

Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Felipe Lopez er senior løsningsarkitekt hos AWS med en konsentrasjon innen olje- og gassproduksjon. Før han begynte i AWS, jobbet Felipe med GE Digital og Schlumberger, hvor han fokuserte på modellering og optimaliseringsprodukter for industrielle applikasjoner.

Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Yingwei Yu er en Applied Scientist ved Generative AI Incubator, AWS. Han har erfaring med å jobbe med flere organisasjoner på tvers av bransjer på ulike proof of concept innen maskinlæring, inkludert naturlig språkbehandling, tidsserieanalyse og prediktivt vedlikehold. På fritiden liker han å svømme, male, gå på tur og tilbringe tid med familie og venner.

Optimaliser utstyrsytelsen med historiske data, Ray og Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Haozhu Wang er en forsker i Amazon Bedrock med fokus på å bygge Amazons Titan-fundamentmodeller. Tidligere jobbet han i Amazon ML Solutions Lab som medleder for Reinforcement Learning Vertical og hjalp kunder med å bygge avanserte ML-løsninger med den nyeste forskningen om forsterkende læring, naturlig språkbehandling og graflæring. Haozhu fikk sin doktorgrad i elektro- og datateknikk fra University of Michigan.

Tidstempel:

Mer fra AWS maskinlæring