Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon webbtjänster

Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon webbtjänster

Effektiva kontrollpolicyer gör det möjligt för industriföretag att öka sin lönsamhet genom att maximera produktiviteten och samtidigt minska oplanerade stillestånd och energiförbrukning. Att hitta optimal styrpolicy är en komplex uppgift eftersom fysiska system, såsom kemiska reaktorer och vindturbiner, ofta är svåra att modellera och eftersom drift i processdynamiken kan göra att prestandan försämras med tiden. Offline förstärkningsinlärning är en kontrollstrategi som gör det möjligt för industriföretag att bygga kontrollpolicyer helt från historiska data utan att behöva en explicit processmodell. Detta tillvägagångssätt kräver inte interaktion med processen direkt i ett utforskningsskede, vilket tar bort ett av hindren för antagandet av förstärkningsinlärning i säkerhetskritiska tillämpningar. I det här inlägget kommer vi att bygga en end-to-end-lösning för att hitta optimala kontrollpolicyer med enbart historisk data på Amazon SageMaker använder Ray's RLlib bibliotek. För att lära dig mer om förstärkningsinlärning, se Använd Reinforcement Learning med Amazon SageMaker.

Användningsfall

Industriell styrning innebär hantering av komplexa system, såsom tillverkningslinjer, energinät och kemiska anläggningar, för att säkerställa effektiv och tillförlitlig drift. Många traditionella styrstrategier bygger på fördefinierade regler och modeller, som ofta kräver manuell optimering. Det är standardpraxis i vissa branscher att övervaka prestanda och justera kontrollpolicyn när till exempel utrustning börjar försämras eller miljöförhållanden förändras. Återinställning kan ta veckor och kan kräva injicering av externa excitationer i systemet för att registrera dess svar i en trial-and-error-metod.

Förstärkningsinlärning har dykt upp som ett nytt paradigm inom processtyrning för att lära sig optimala kontrollpolicyer genom att interagera med omgivningen. Denna process kräver att data delas upp i tre kategorier: 1) mätningar tillgängliga från det fysiska systemet, 2) uppsättningen av åtgärder som kan vidtas på systemet och 3) ett numeriskt mått (belöning) av utrustningens prestanda. En policy tränas för att hitta den åtgärd, vid en given observation, som sannolikt kommer att ge de högsta framtida belöningarna.

I offline-förstärkningsinlärning kan man träna en policy för historisk data innan den distribueras i produktion. Algoritmen som tränas i det här blogginlägget heter "Konservativ Q-lärande” (CQL). CQL innehåller en "skådespelare"-modell och en "kritiker"-modell och är utformad för att konservativt förutsäga sin egen prestation efter att ha vidtagit en rekommenderad åtgärd. I det här inlägget demonstreras processen med ett illustrativt problem med vagnstolpekontroll. Målet är att träna en agent att balansera en stolpe på en vagn samtidigt som den flyttar vagnen mot en angiven målplats. Utbildningsproceduren använder offlinedata, vilket gör att agenten kan lära sig av redan existerande information. Denna fallstudie visar utbildningsprocessen och dess effektivitet i potentiella verkliga tillämpningar.

Lösningsöversikt

Lösningen som presenteras i det här inlägget automatiserar implementeringen av ett end-to-end-arbetsflöde för offline-förstärkningsinlärning med historiska data. Följande diagram beskriver arkitekturen som används i detta arbetsflöde. Mätdata produceras vid kanten av en del av industriell utrustning (här simulerad av en AWS Lambda fungera). Uppgifterna läggs in i en Amazon Kinesis Data Firehose, som lagrar den i Amazon enkel lagringstjänst (Amazon S3). Amazon S3 är en hållbar, presterande och billig lagringslösning som låter dig leverera stora mängder data till en maskininlärningsprocess.

AWS-lim katalogiserar data och gör den frågbar med hjälp av Amazonas Athena. Athena omvandlar mätdata till en form som en förstärkningsinlärningsalgoritm kan ta in och laddar sedan av den tillbaka till Amazon S3. Amazon SageMaker laddar in denna data i ett träningsjobb och producerar en tränad modell. SageMaker serverar sedan den modellen i en SageMaker-slutpunkt. Den industriella utrustningen kan sedan fråga den slutpunkten för att få åtgärdsrekommendationer.

Figur 1: Arkitekturdiagram som visar arbetsflödet för inlärning av förstärkning från början till slut.

Figur 1: Arkitekturdiagram som visar arbetsflödet för inlärning av förstärkning från början till slut.

I det här inlägget kommer vi att bryta ner arbetsflödet i följande steg:

  1. Formulera problemet. Bestäm vilka åtgärder som kan vidtas, vilka mätningar som ska ge rekommendationer baserat på, och bestäm numeriskt hur väl varje åtgärd presterade.
  2. Förbered data. Förvandla mättabellen till ett format som maskininlärningsalgoritmen kan använda.
  3. Träna algoritmen på den datan.
  4. Välj det bästa träningsloppet baserat på träningsmått.
  5. Distribuera modellen till en SageMaker-slutpunkt.
  6. Utvärdera modellens prestanda i produktionen.

Förutsättningar

För att slutföra denna genomgång måste du ha en AWS-konto och ett kommandoradsgränssnitt med AWS SAM installerat. Följ dessa steg för att distribuera AWS SAM-mallen för att köra detta arbetsflöde och generera utbildningsdata:

  1. Ladda ner kodförrådet med kommandot
    git clone https://github.com/aws-samples/sagemaker-offline-reinforcement-learning-ray-cql

  2. Byt katalog till repet:
    cd sagemaker-offline-reinforcement-learning-ray-cql

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

  4. Distribuera repet
    sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

  5. Använd följande kommandon för att anropa ett bash-skript, som genererar skendata med hjälp av en AWS Lambda-funktion.
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

Lösning genomgång

Formulera problem

Vårt system i detta blogginlägg är en vagn med en stav balanserad ovanpå. Systemet fungerar bra när stången står upprätt och vagnens position är nära målpositionen. I förutsättningssteget genererade vi historisk data från detta system.

Följande tabell visar historiska data som samlats in från systemet.

Vagnposition Vagnens hastighet Polvinkel Polens vinkelhastighet Målposition Yttre kraft Belöna 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 fråga historisk systeminformation med Amazon Athena med följande fråga:

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

Tillståndet för detta system definieras av vagnens position, vagnens hastighet, polvinkeln, polens vinkelhastighet och målpositionen. Åtgärden som vidtas vid varje tidssteg är den yttre kraft som appliceras på vagnen. Den simulerade miljön ger ett belöningsvärde som är högre när vagnen är närmare målpositionen och stången är mer upprätt.

Förbered data

För att presentera systeminformationen för förstärkningsinlärningsmodellen, omvandla den till JSON-objekt med nycklar som kategoriserar värden i tillstånds- (även kallat observations-), handlings- och belöningskategorier. Lagra dessa objekt i Amazon S3. Här är ett exempel på JSON-objekt producerade från tidssteg i föregående 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-stacken innehåller en utgång som kallas AthenaQueryToCreateJsonFormatedData. Kör den här frågan i Amazon Athena för att utföra transformationen och lagra JSON-objekten i Amazon S3. Algoritmen för förstärkningsinlärning använder strukturen för dessa JSON-objekt för att förstå vilka värden man ska basera rekommendationer på och resultatet av att vidta åtgärder i den historiska datan.

Tågagent

Nu kan vi påbörja ett utbildningsjobb för att ta fram en utbildad handlingsrekommendationsmodell. Amazon SageMaker låter dig snabbt starta flera träningsjobb för att se hur olika konfigurationer påverkar den resulterande tränade modellen. Kalla Lambdafunktionen namngiven TuningJobLauncherFunction att starta ett hyperparameteravstämningsjobb som experimenterar med fyra olika uppsättningar hyperparametrar när man tränar algoritmen.

Välj bästa träningsloppet

För att ta reda på vilket av träningsjobben som gav den bästa modellen, undersök förlustkurvor som skapats under utbildningen. CQL:s kritikermodell uppskattar skådespelarens prestation (kallat ett Q-värde) efter att ha vidtagit en rekommenderad åtgärd. En del av kritikerns förlustfunktion inkluderar tidsdifferensfelet. Detta mått mäter kritikens Q-värdes noggrannhet. Leta efter träningslopp med ett högt medelvärde för Q och ett lågt tidsskillnadsfel. Detta papper, Ett arbetsflöde för offline-modellfri robotförstärkningsinlärning, detaljer om hur du väljer det bästa träningspasset. Kodförrådet har en fil, /utils/investigate_training.py, som skapar en plottrig HTML-figur som beskriver det senaste träningsjobbet. Kör den här filen och använd utdata för att välja den bästa träningskörningen.

Vi kan använda medelvärdet för Q för att förutsäga prestandan hos den tränade modellen. Q-värdena tränas för att konservativt förutsäga summan av diskonterade framtida belöningsvärden. För långvariga processer kan vi konvertera detta tal till ett exponentiellt viktat medelvärde genom att multiplicera Q-värdet med (1-”diskonteringsränta”). Den bästa träningskörningen i denna uppsättning uppnådde ett genomsnittligt Q-värde på 539. Vår diskonteringsränta är 0.99, så modellen förutspår minst 5.39 genomsnittlig belöning per tidssteg. Du kan jämföra detta värde med historisk systemprestanda för en indikation på om den nya modellen kommer att överträffa den historiska kontrollpolicyn. I det här experimentet var den historiska datas genomsnittliga belöning per tidssteg 4.3, så CQL-modellen förutspår 25 procent bättre prestanda än vad systemet uppnått historiskt.

Implementera modell

Amazon SageMaker-slutpunkter låter dig tjäna maskininlärningsmodeller på flera olika sätt för att möta en mängd olika användningsfall. I det här inlägget kommer vi att använda den serverlösa slutpunktstypen så att vår slutpunkt automatiskt skalas med efterfrågan, och vi betalar bara för datoranvändning när slutpunkten genererar en slutledning. För att distribuera en serverlös slutpunkt, inkludera en ProductionVariantServerlessConfig i produktionsvariant av SageMaker slutpunktskonfiguration. Följande kodsnutt visar hur den serverlösa slutpunkten i det här exemplet distribueras med hjälp av Amazon SageMaker mjukvaruutvecklingssats för Python. Hitta exempelkoden som används för att distribuera modellen på sagemaker-offline-förstärkning-lärande-ray-cql.

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

De tränade modellfilerna finns vid S3-modellens artefakter för varje träningskörning. För att distribuera maskininlärningsmodellen, leta reda på modellfilerna för den bästa träningskörningen och anropa Lambda-funktionen med namnet "ModelDeployerFunction” med en händelse som innehåller denna modelldata. Lambdafunktionen kommer att lansera en SageMaker serverlös slutpunkt för att tjäna den tränade modellen. Exempelhändelse att använda när du ringer "ModelDeployerFunction"

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

Utvärdera utbildad modellprestanda

Det är dags att se hur vår utbildade modell klarar sig i produktionen! För att kontrollera prestandan för den nya modellen, ring Lambdafunktionen med namnet "RunPhysicsSimulationFunction” med SageMaker-ändpunktsnamnet i händelsen. Detta kommer att köra simuleringen med de åtgärder som rekommenderas av slutpunkten. Exempel på händelse att använda när du ringer till RunPhysicsSimulatorFunction:

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

Använd följande Athena-fråga för att jämföra den tränade modellens prestanda med historiska systemprestanda.

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

Här är ett exempel på resultattabell. Vi ser att den tränade modellen uppnådde 2.5 gånger mer belöning än de historiska uppgifterna! Dessutom var modellens verkliga prestanda 2 gånger bättre än den konservativa prestandaförutsägelsen.

Åtgärdskälla Genomsnittlig belöning per tidssteg
trained_model 10.8
historic_data 4.3

Följande animationer visar skillnaden mellan ett exempelavsnitt från träningsdata och ett avsnitt där den tränade modellen användes för att välja vilken åtgärd som skulle vidtas. I animationerna är den blå rutan vagnen, den blå linjen är stolpen och den gröna rektangeln är målplatsen. Den röda pilen visar kraften som appliceras på vagnen vid varje tidssteg. Den röda pilen i träningsdata hoppar fram och tillbaka en hel del eftersom data genererades med 50 procent expertåtgärder och 50 procent slumpmässiga åtgärder. Den utbildade modellen lärde sig en kontrollpolicy som flyttar vagnen snabbt till målpositionen, samtidigt som stabiliteten bibehålls, helt och hållet genom att observera icke-experts demonstrationer.

Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai. Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

 Städa upp

För att ta bort resurser som används i det här arbetsflödet, navigera till resurssektionen i Amazon CloudFormation-stacken och ta bort S3-hinkarna och IAM-rollerna. Ta sedan bort själva CloudFormation-stacken.

Slutsats

Offlineförstärkningsinlärning kan hjälpa industriföretag att automatisera sökningen efter optimal policy utan att kompromissa med säkerheten genom att använda historiska data. För att implementera detta tillvägagångssätt i din verksamhet, börja med att identifiera de mätningar som utgör ett tillståndsbestämt system, de åtgärder du kan kontrollera och mätvärden som indikerar önskad prestanda. Sedan, tillgång detta GitHub-arkiv för implementering av en automatisk end-to-end-lösning med Ray och Amazon SageMaker.

Inlägget skrapar bara på ytan av vad du kan göra med Amazon SageMaker RL. Ge det ett försök och skicka oss feedback, antingen i Amazon SageMaker diskussionsforum eller via dina vanliga AWS-kontakter.


Om författarna

Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Walt Mayfield är Solutions Architect på AWS och hjälper energiföretag att arbeta säkrare och mer effektivt. Innan han började på AWS arbetade Walt som driftsingenjör för Hilcorp Energy Company. Han gillar att trädgårds- och flugfiska på fritiden.

Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Felipe Lopez är Senior Solutions Architect på AWS med en koncentration inom olje- och gasproduktion. Innan han började på AWS arbetade Felipe med GE Digital och Schlumberger, där han fokuserade på modellering och optimeringsprodukter för industriella applikationer.

Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Yingwei Yu är en tillämpad forskare vid Generative AI Incubator, AWS. Han har erfarenhet av att arbeta med flera organisationer över branscher på olika proof of concept inom maskininlärning, inklusive naturlig språkbehandling, tidsserieanalys och prediktivt underhåll. På fritiden tycker han om att bada, måla, vandra och umgås med familj och vänner.

Optimera utrustningens prestanda med historiska data, Ray och Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Haozhu Wang är en forskare i Amazon Bedrock med fokus på att bygga Amazons Titan-fundamentmodeller. Tidigare arbetade han i Amazon ML Solutions Lab som medledare för Reinforcement Learning Vertical och hjälpte kunder att bygga avancerade ML-lösningar med den senaste forskningen om förstärkningsinlärning, naturlig språkbehandling och grafinlärning. Haozhu tog sin doktorsexamen i elektro- och datorteknik från University of Michigan.

Tidsstämpel:

Mer från AWS maskininlärning