Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Servizi Web di Amazon

Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Servizi Web di Amazon

Efficienti politiche di controllo consentono alle aziende industriali di aumentare la propria redditività massimizzando la produttività e riducendo i tempi di inattività non programmati e il consumo di energia. Trovare politiche di controllo ottimali è un compito complesso perché i sistemi fisici, come i reattori chimici e le turbine eoliche, sono spesso difficili da modellare e perché la deriva nella dinamica dei processi può causare un deterioramento delle prestazioni nel tempo. L’apprendimento per rinforzo offline è una strategia di controllo che consente alle aziende industriali di costruire politiche di controllo interamente a partire da dati storici senza la necessità di un modello di processo esplicito. Questo approccio non richiede l’interazione con il processo direttamente in una fase di esplorazione, il che rimuove una delle barriere per l’adozione dell’apprendimento per rinforzo in applicazioni critiche per la sicurezza. In questo post creeremo una soluzione end-to-end per trovare politiche di controllo ottimali utilizzando solo dati storici Amazon Sage Maker utilizzando quello di Ray RLlib biblioteca. Per saperne di più sull'apprendimento per rinforzo, vedere Utilizza l'apprendimento per rinforzo con Amazon SageMaker.

Utilizzo Tipico

Il controllo industriale prevede la gestione di sistemi complessi, come linee di produzione, reti energetiche e impianti chimici, per garantire un funzionamento efficiente e affidabile. Molte strategie di controllo tradizionali si basano su regole e modelli predefiniti, che spesso richiedono un’ottimizzazione manuale. In alcuni settori è prassi standard monitorare le prestazioni e adeguare la politica di controllo quando, ad esempio, le apparecchiature iniziano a deteriorarsi o le condizioni ambientali cambiano. La risintonizzazione può richiedere settimane e potrebbe richiedere l'iniezione di eccitazioni esterne nel sistema per registrare la sua risposta in un approccio per tentativi ed errori.

L’apprendimento per rinforzo è emerso come un nuovo paradigma nel controllo dei processi per apprendere politiche di controllo ottimali attraverso l’interazione con l’ambiente. Questo processo richiede la suddivisione dei dati in tre categorie: 1) misurazioni disponibili dal sistema fisico, 2) l'insieme di azioni che possono essere intraprese sul sistema e 3) una metrica numerica (ricompensa) delle prestazioni dell'apparecchiatura. Una politica è addestrata a individuare l’azione, a partire da una data osservazione, che probabilmente produrrà le ricompense future più elevate.

Nell'apprendimento per rinforzo offline, è possibile addestrare una policy sui dati storici prima di implementarla in produzione. L'algoritmo addestrato in questo post del blog si chiama "Apprendimento Q conservativo"(CQL). CQL contiene un modello "attore" e un modello "critico" ed è progettato per prevedere in modo conservativo le proprie prestazioni dopo aver intrapreso un'azione consigliata. In questo post, il processo viene dimostrato con un problema illustrativo di controllo del carrello-palo. L'obiettivo è addestrare un agente a tenere in equilibrio un palo su un carrello e contemporaneamente spostare il carrello verso una posizione di destinazione designata. La procedura di addestramento utilizza i dati offline, consentendo all'agente di apprendere da informazioni preesistenti. Questo caso di studio cart-pole dimostra il processo di formazione e la sua efficacia in potenziali applicazioni nel mondo reale.

Panoramica della soluzione

La soluzione presentata in questo post automatizza l'implementazione di un flusso di lavoro end-to-end per l'apprendimento per rinforzo offline con dati storici. Il diagramma seguente descrive l'architettura utilizzata in questo flusso di lavoro. I dati di misurazione vengono prodotti a bordo da un'apparecchiatura industriale (qui simulata da un AWS Lambda funzione). I dati vengono inseriti in un file Cinesi amazzonica Data Firehose, in cui lo memorizza Servizio di archiviazione semplice Amazon (Amazon S3). Amazon S3 è una soluzione di storage duratura, performante e a basso costo che consente di fornire grandi volumi di dati a un processo di formazione sul machine learning.

Colla AWS cataloga i dati e li rende interrogabili utilizzando Amazzone Atena. Athena trasforma i dati di misurazione in un formato che un algoritmo di apprendimento per rinforzo può acquisire e quindi scaricarli nuovamente in Amazon S3. Amazon SageMaker carica questi dati in un processo di formazione e produce un modello addestrato. SageMaker poi serve quel modello in un endpoint SageMaker. L'attrezzatura industriale può quindi interrogare quell'endpoint per ricevere consigli sulle azioni.

Figura 1: diagramma dell'architettura che mostra il flusso di lavoro dell'apprendimento per rinforzo end-to-end.

Figura 1: diagramma dell'architettura che mostra il flusso di lavoro dell'apprendimento per rinforzo end-to-end.

In questo post, suddivideremo il flusso di lavoro nei seguenti passaggi:

  1. Formulare il problema. Decidi quali azioni possono essere intraprese, su quali misurazioni basarsi per formulare raccomandazioni e determina numericamente la qualità di esecuzione di ciascuna azione.
  2. Preparare i dati. Trasforma la tabella delle misurazioni in un formato che l'algoritmo di machine learning può utilizzare.
  3. Addestra l'algoritmo su quei dati.
  4. Seleziona la migliore corsa di allenamento in base alle metriche di allenamento.
  5. Distribuisci il modello a un endpoint SageMaker.
  6. Valutare le prestazioni del modello in produzione.

Prerequisiti

Per completare questa procedura dettagliata, è necessario disporre di un file Account AWS e un'interfaccia a riga di comando con AWS SAM installato. Segui questi passaggi per distribuire il modello AWS SAM per eseguire questo flusso di lavoro e generare dati di addestramento:

  1. Scarica il repository del codice con il comando
    git clone https://github.com/aws-samples/sagemaker-offline-reinforcement-learning-ray-cql

  2. Cambia la directory nel repository:
    cd sagemaker-offline-reinforcement-learning-ray-cql

  3. Costruisci il repository:
    sam build --use-container

  4. Distribuire il repository
    sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

  5. Utilizza i seguenti comandi per chiamare uno script bash, che genera dati fittizi utilizzando una funzione AWS Lambda.
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

Soluzione dettagliata

Formulare il problema

Il nostro sistema in questo post del blog è un carrello con un palo in equilibrio in cima. Il sistema funziona bene quando il palo è verticale e la posizione del carrello è vicina alla posizione obiettivo. Nella fase preliminare, abbiamo generato dati storici da questo sistema.

La tabella seguente mostra i dati storici raccolti dal sistema.

Posizione del carrello Velocità del carrello Angolo del polo Velocità angolare del polo Posizione dell'obiettivo Forza esterna Premiare Ora
0.53 all'0.79 ottobre all'0.08 ottobre 0.16 0.50 all'0.04 ottobre 11.5 5: 37: 54 PM
0.51 all'0.82 ottobre all'0.07 ottobre 0.17 0.50 all'0.04 ottobre 11.9 5: 37: 55 PM
0.50 all'0.84 ottobre all'0.07 ottobre 0.18 0.50 all'0.03 ottobre 12.2 5: 37: 56 PM
0.48 all'0.85 ottobre all'0.07 ottobre 0.18 0.50 all'0.03 ottobre 10.5 5: 37: 57 PM
0.46 all'0.87 ottobre all'0.06 ottobre 0.19 0.50 all'0.03 ottobre 10.3 5: 37: 58 PM

Puoi eseguire query sulle informazioni cronologiche del sistema utilizzando Amazon Athena con la query seguente:

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

Lo stato di questo sistema è definito dalla posizione del carrello, dalla velocità del carrello, dall'angolo del polo, dalla velocità angolare del polo e dalla posizione dell'obiettivo. L'azione intrapresa in ogni fase temporale è la forza esterna applicata al carrello. L'ambiente simulato restituisce un valore di ricompensa più elevato quando il carrello è più vicino alla posizione dell'obiettivo e il palo è più verticale.

Preparare i dati

Per presentare le informazioni di sistema al modello di apprendimento per rinforzo, trasformale in oggetti JSON con chiavi che classificano i valori nelle categorie stato (chiamato anche osservazione), azione e ricompensa. Archivia questi oggetti in Amazon S3. Ecco un esempio di oggetti JSON prodotti da passaggi temporali nella tabella precedente.

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

Lo stack AWS CloudFormation contiene un output chiamato AthenaQueryToCreateJsonFormatedData. Esegui questa query in Amazon Athena per eseguire la trasformazione e archiviare gli oggetti JSON in Amazon S3. L'algoritmo di apprendimento per rinforzo utilizza la struttura di questi oggetti JSON per comprendere su quali valori basare le raccomandazioni e il risultato delle azioni intraprese nei dati storici.

Agente ferroviario

Ora possiamo avviare un lavoro di formazione per produrre un modello di raccomandazione di azioni addestrate. Amazon SageMaker ti consente di avviare rapidamente più processi di formazione per vedere come le varie configurazioni influiscono sul modello addestrato risultante. Chiama la funzione Lambda denominata TuningJobLauncherFunction per avviare un processo di ottimizzazione degli iperparametri che sperimenta quattro diversi set di iperparametri durante il training dell'algoritmo.

Seleziona la migliore corsa di allenamento

Per scoprire quale dei lavori di formazione ha prodotto il modello migliore, esaminare le curve di perdita prodotte durante la formazione. Il modello critico di CQL stima la prestazione dell'attore (chiamata valore Q) dopo aver eseguito un'azione consigliata. Parte della funzione di perdita del critico include l'errore di differenza temporale. Questa metrica misura la precisione del valore Q del critico. Cercare sessioni di allenamento con un valore Q medio elevato e un errore di differenza temporale basso. Questo articolo, Un flusso di lavoro per l'apprendimento con rinforzo robotico offline senza modelli, spiega in dettaglio come selezionare la migliore corsa di allenamento. Il repository del codice ha un file, /utils/investigate_training.py, che crea una figura html grafica che descrive l'ultimo lavoro di formazione. Esegui questo file e utilizza l'output per scegliere la migliore esecuzione di training.

Possiamo utilizzare il valore Q medio per prevedere le prestazioni del modello addestrato. I valori Q sono addestrati per prevedere in modo conservativo la somma dei valori di ricompensa futuri scontati. Per i processi di lunga durata, possiamo convertire questo numero in una media ponderata in modo esponenziale moltiplicando il valore Q per (1-"tasso di sconto"). La migliore esecuzione dell'addestramento in questo set ha raggiunto un valore Q medio di 539. Il nostro tasso di sconto è 0.99, quindi il modello prevede una ricompensa media di almeno 5.39 per fase temporale. È possibile confrontare questo valore con le prestazioni storiche del sistema per avere un'indicazione se il nuovo modello supererà la politica di controllo storico. In questo esperimento, la ricompensa media dei dati storici per fase temporale è stata 4.3, quindi il modello CQL prevede prestazioni migliori del 25% rispetto a quelle ottenute storicamente dal sistema.

Distribuisci modello

Gli endpoint Amazon SageMaker ti consentono di servire modelli di machine learning in diversi modi per soddisfare una varietà di casi d'uso. In questo post utilizzeremo il tipo di endpoint serverless in modo che il nostro endpoint si ridimensioni automaticamente in base alla domanda e paghiamo solo per l'utilizzo del calcolo quando l'endpoint genera un'inferenza. Per distribuire un endpoint serverless, includere a ProductionVariantServerlessConfig nel variante di produzione del SageMaker configurazione dell'endpoint. Il seguente frammento di codice mostra come viene distribuito l'endpoint serverless in questo esempio utilizzando il kit di sviluppo software Amazon SageMaker per Python. Trova il codice di esempio utilizzato per distribuire il modello in sagemaker-offline-reinforcement-learning-ray-cql.

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

I file del modello sottoposto a training si trovano negli artefatti del modello S3 per ogni esecuzione del training. Per distribuire il modello di machine learning, individuare i file del modello della migliore esecuzione di addestramento e chiamare la funzione Lambda denominata "ModelDeployerFunction" con un evento che contiene i dati di questo modello. La funzione Lambda avvierà un endpoint serverless SageMaker per servire il modello addestrato. Evento di esempio da utilizzare quando si chiama il "ModelDeployerFunction"

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

Valutare le prestazioni del modello addestrato

È tempo di vedere come se la cava il nostro modello addestrato in produzione! Per verificare le prestazioni del nuovo modello, chiamare la funzione Lambda denominata "RunPhysicsSimulationFunction" con il nome dell'endpoint SageMaker nell'evento. Ciò eseguirà la simulazione utilizzando le azioni consigliate dall'endpoint. Evento di esempio da utilizzare quando si chiama il file RunPhysicsSimulatorFunction:

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

Utilizza la seguente query Athena per confrontare le prestazioni del modello addestrato con le prestazioni storiche del sistema.

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

Di seguito è riportato un esempio di tabella dei risultati. Vediamo che il modello addestrato ha ottenuto una ricompensa 2.5 volte maggiore rispetto ai dati storici! Inoltre, le prestazioni reali del modello sono state 2 volte migliori rispetto alla previsione conservativa delle prestazioni.

Fonte dell'azione Ricompensa media per fase temporale
trained_model 10.8
historic_data 4.3

Le animazioni seguenti mostrano la differenza tra un episodio campione dai dati di training e un episodio in cui è stato utilizzato il modello addestrato per scegliere l'azione da intraprendere. Nelle animazioni, la casella blu è il carrello, la linea blu è il palo e il rettangolo verde è la posizione dell'obiettivo. La freccia rossa mostra la forza applicata al carrello in ogni fase temporale. La freccia rossa nei dati di addestramento salta avanti e indietro perché i dati sono stati generati utilizzando il 50% di azioni esperte e il 50% di azioni casuali. Il modello addestrato ha appreso una politica di controllo che sposta rapidamente il carrello verso la posizione obiettivo, mantenendo la stabilità, interamente osservando dimostrazioni non esperte.

Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai. Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

 ripulire

Per eliminare le risorse utilizzate in questo flusso di lavoro, vai alla sezione delle risorse dello stack Amazon CloudFormation ed elimina i bucket S3 e i ruoli IAM. Quindi elimina lo stack CloudFormation stesso.

Conclusione

L’apprendimento per rinforzo offline può aiutare le aziende industriali ad automatizzare la ricerca di politiche ottimali senza compromettere la sicurezza utilizzando dati storici. Per implementare questo approccio nelle tue operazioni, inizia identificando le misurazioni che compongono un sistema determinato dallo stato, le azioni che puoi controllare e le metriche che indicano le prestazioni desiderate. Quindi, accedi questo repository GitHub per l'implementazione di una soluzione end-to-end automatica utilizzando Ray e Amazon SageMaker.

Il post graffia solo la superficie di ciò che puoi fare con Amazon SageMaker RL. Provatelo e inviateci il vostro feedback nel Forum di discussione di Amazon SageMaker o tramite i tuoi contatti AWS abituali.


Informazioni sugli autori

Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Walt Mayfield è un Solutions Architect presso AWS e aiuta le aziende energetiche a operare in modo più sicuro ed efficiente. Prima di unirsi ad AWS, Walt ha lavorato come ingegnere operativo per Hilcorp Energy Company. Gli piace fare giardinaggio e pescare con la mosca nel tempo libero.

Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Filippo López è un Senior Solutions Architect presso AWS con una concentrazione nelle operazioni di produzione di petrolio e gas. Prima di unirsi ad AWS, Felipe ha lavorato con GE Digital e Schlumberger, dove si è concentrato sulla modellazione e sull'ottimizzazione di prodotti per applicazioni industriali.

Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Yingwei Yu è uno scienziato applicato presso il Generative AI Incubator, AWS. Ha esperienza di collaborazione con diverse organizzazioni di diversi settori su varie prove di concetto nell'apprendimento automatico, tra cui l'elaborazione del linguaggio naturale, l'analisi delle serie temporali e la manutenzione predittiva. Nel tempo libero gli piace nuotare, dipingere, fare escursioni e passare il tempo con la famiglia e gli amici.

Ottimizza le prestazioni delle apparecchiature con dati storici, Ray e Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Haozhu Wang è uno scienziato ricercatore di Amazon Bedrock che si occupa della costruzione dei modelli della fondazione Titan di Amazon. In precedenza ha lavorato in Amazon ML Solutions Lab come co-responsabile del Reinforcement Learning Vertical e ha aiutato i clienti a creare soluzioni ML avanzate con le ultime ricerche sull'apprendimento per rinforzo, sull'elaborazione del linguaggio naturale e sull'apprendimento dei grafici. Haozhu ha conseguito il dottorato di ricerca in ingegneria elettrica e informatica presso l'Università del Michigan.

Timestamp:

Di più da Apprendimento automatico di AWS