제퍼넷 로고

기록 데이터, Ray 및 Amazon SageMaker를 사용하여 장비 성능 최적화 | 아마존 웹 서비스

시간

효율적인 제어 정책을 통해 산업 기업은 생산성을 극대화하는 동시에 예기치 못한 가동 중지 시간과 에너지 소비를 줄여 수익성을 높일 수 있습니다. 최적의 제어 정책을 찾는 것은 복잡한 작업입니다. 화학 반응기 및 풍력 터빈과 같은 물리적 시스템은 종종 모델링하기 어렵고 프로세스 역학의 드리프트로 인해 시간이 지남에 따라 성능이 저하될 수 있기 때문입니다. 오프라인 강화 학습은 산업 기업이 명시적인 프로세스 모델 없이도 과거 데이터로부터 전적으로 제어 정책을 구축할 수 있도록 하는 제어 전략입니다. 이 접근 방식은 탐색 단계에서 프로세스와 직접 상호 작용할 필요가 없으므로 안전이 중요한 애플리케이션에서 강화 학습을 채택하는 데 대한 장벽 중 하나를 제거합니다. 이번 포스팅에서는 과거 데이터만을 이용하여 최적의 제어 정책을 찾기 위한 엔드투엔드 솔루션을 구축해보겠습니다. 아마존 세이지 메이커 레이를 이용해서 RLlib 도서관. 강화 학습에 대해 자세히 알아보려면 다음을 참조하세요. Amazon SageMaker에서 강화 학습을 사용하세요.

사용 사례

산업 제어에는 효율적이고 안정적인 운영을 보장하기 위해 제조 라인, 에너지 그리드, 화학 공장 등 복잡한 시스템을 관리하는 작업이 포함됩니다. 기존의 많은 제어 전략은 사전 정의된 규칙과 모델을 기반으로 하며 수동 최적화가 필요한 경우가 많습니다. 예를 들어 장비 성능이 저하되기 시작하거나 환경 조건이 변할 때 성능을 모니터링하고 제어 정책을 조정하는 것이 일부 산업에서는 표준 관행입니다. 재조정에는 몇 주가 걸릴 수 있으며 시행착오 방식으로 응답을 기록하기 위해 시스템에 외부 자극을 주입해야 할 수도 있습니다.

강화학습은 환경과의 상호작용을 통해 최적의 제어 정책을 학습하는 프로세스 제어의 새로운 패러다임으로 등장했습니다. 이 프로세스에서는 데이터를 1) 물리적 시스템에서 사용할 수 있는 측정값, 2) 시스템에 대해 수행할 수 있는 일련의 작업, 3) 장비 성능의 수치적 측정 기준(보상)의 세 가지 범주로 분류해야 합니다. 정책은 주어진 관찰에서 미래에 가장 높은 보상을 생성할 가능성이 있는 행동을 찾도록 훈련됩니다.

오프라인 강화 학습에서는 과거 데이터를 프로덕션에 배포하기 전에 정책을 교육할 수 있습니다. 이 블로그 게시물에서 훈련된 알고리즘은 "보수적 Q 학습"(CQL). CQL에는 "행위자" 모델과 "비평가" 모델이 포함되어 있으며 권장 조치를 취한 후 자체 성능을 보수적으로 예측하도록 설계되었습니다. 이 게시물에서는 예시적인 카트 폴 제어 문제를 통해 프로세스를 시연합니다. 목표는 에이전트가 카트에 있는 기둥의 균형을 맞추는 동시에 카트를 지정된 목표 위치로 이동하도록 훈련시키는 것입니다. 훈련 절차는 오프라인 데이터를 사용하므로 에이전트가 기존 정보로부터 학습할 수 있습니다. 이 카트 폴 사례 연구는 교육 프로세스와 잠재적인 실제 적용에서의 효율성을 보여줍니다.

솔루션 개요

이 게시물에 제시된 솔루션은 기록 데이터를 사용하여 오프라인 강화 학습을 위한 엔드투엔드 워크플로 배포를 자동화합니다. 다음 다이어그램에서는 이 워크플로에 사용되는 아키텍처를 설명합니다. 측정 데이터는 산업 장비의 가장자리에서 생성됩니다(여기서는 AWS 람다 기능). 데이터는 아마존 키네 시스 이를 저장하는 Data Firehose 아마존 단순 스토리지 서비스 (아마존 S3). Amazon S3는 기계 학습 훈련 프로세스에 대량의 데이터를 제공할 수 있는 내구성과 성능이 뛰어나고 저렴한 스토리지 솔루션입니다.

AWS 접착제 데이터를 분류하고 다음을 사용하여 쿼리 가능하게 만듭니다. 아마존 아테나. Athena는 측정 데이터를 강화 학습 알고리즘이 수집할 수 있는 형식으로 변환한 다음 Amazon S3로 다시 언로드합니다. Amazon SageMaker는 이 데이터를 훈련 작업에 로드하고 훈련된 모델을 생성합니다. 그런 다음 SageMaker는 SageMaker 엔드포인트에서 해당 모델을 제공합니다. 그러면 산업용 장비는 해당 엔드포인트에 쿼리하여 작업 권장 사항을 받을 수 있습니다.

그림 1: 엔드투엔드 강화 학습 워크플로를 보여주는 아키텍처 다이어그램.

그림 1: 엔드투엔드 강화 학습 워크플로를 보여주는 아키텍처 다이어그램.

이 게시물에서는 워크플로를 다음 단계로 분류합니다.

  1. 문제를 공식화하십시오. 어떤 조치를 취할 수 있는지, 어떤 측정을 기반으로 권장사항을 제시할지 결정하고 각 조치가 얼마나 잘 수행되었는지 수치적으로 결정합니다.
  2. 데이터를 준비합니다. 측정 테이블을 기계 학습 알고리즘이 사용할 수 있는 형식으로 변환합니다.
  3. 해당 데이터에 대한 알고리즘을 훈련합니다.
  4. 훈련 지표를 기반으로 최상의 훈련 실행을 선택합니다.
  5. SageMaker 엔드포인트에 모델을 배포합니다.
  6. 프로덕션에서 모델의 성능을 평가합니다.

사전 조건

이 연습을 완료하려면 AWS 계정 그리고 명령줄 인터페이스 AWS SAM 설치됨. 이 워크플로를 실행하고 훈련 데이터를 생성하기 위해 AWS SAM 템플릿을 배포하려면 다음 단계를 따르십시오.

  1. 다음 명령을 사용하여 코드 저장소를 다운로드하세요.
    git clone https://github.com/aws-samples/sagemaker-offline-reinforcement-learning-ray-cql

  2. 디렉터리를 저장소로 변경합니다.
    cd sagemaker-offline-reinforcement-learning-ray-cql

  3. 저장소를 빌드합니다.
    sam build --use-container

  4. 저장소 배포
    sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

  5. 다음 명령을 사용하여 AWS Lambda 함수를 사용하여 모의 데이터를 생성하는 bash 스크립트를 호출합니다.
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

솔루션 연습

문제 공식화

이 블로그 게시물의 시스템은 상단에 기둥이 균형을 이루고 있는 카트입니다. 시스템은 폴이 똑바로 세워져 있고 카트 위치가 목표 위치에 가까울 때 잘 작동합니다. 전제 조건 단계에서는 이 시스템에서 기록 데이터를 생성했습니다.

다음 표에는 시스템에서 수집된 기록 데이터가 나와 있습니다.

카트 위치 카트 속도 극 각도 극 각속도 목표 위치 외력 보상 Time
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

다음 쿼리를 사용하여 Amazon Athena를 사용하여 기록 시스템 정보를 쿼리할 수 있습니다.

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

이 시스템의 상태는 카트 위치, 카트 속도, 극 각도, 극 각속도 및 목표 위치에 의해 정의됩니다. 각 시간 단계에서 취하는 작용은 카트에 가해지는 외력입니다. 시뮬레이션 환경에서는 카트가 목표 위치에 가까울수록, 폴이 더 수직일수록 더 높은 보상 값을 출력합니다.

데이터 준비

강화 학습 모델에 시스템 정보를 제공하려면 값을 상태(관찰이라고도 함), 작업 및 보상 범주로 분류하는 키를 사용하여 이를 JSON 개체로 변환합니다. Amazon S3에 이러한 객체를 저장합니다. 다음은 이전 표의 시간 단계에서 생성된 JSON 개체의 예입니다.

{“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 스택에는 다음과 같은 출력이 포함되어 있습니다. AthenaQueryToCreateJsonFormatedData. Amazon Athena에서 이 쿼리를 실행하여 변환을 수행하고 Amazon S3에 JSON 객체를 저장합니다. 강화 학습 알고리즘은 이러한 JSON 개체의 구조를 사용하여 권장 사항의 기반이 되는 값과 기록 데이터에서 조치를 취한 결과를 이해합니다.

기차 에이전트

이제 훈련 작업을 시작하여 훈련된 작업 추천 모델을 생성할 수 있습니다. Amazon SageMaker를 사용하면 여러 훈련 작업을 빠르게 시작하여 다양한 구성이 결과 훈련 모델에 어떤 영향을 미치는지 확인할 수 있습니다. 라는 이름의 Lambda 함수를 호출합니다. TuningJobLauncherFunction 알고리즘을 훈련할 때 XNUMX가지 서로 다른 하이퍼파라미터 세트를 실험하는 하이퍼파라미터 튜닝 작업을 시작합니다.

최고의 훈련 실행 선택

어떤 훈련 작업이 최고의 모델을 생성했는지 찾으려면 훈련 중에 생성된 손실 곡선을 조사하세요. CQL의 비평 모델은 권장 조치를 취한 후 행위자의 성능(Q 값이라고 함)을 추정합니다. 비평가의 손실 함수에는 시간적 차이 오류가 포함됩니다. 이 측정항목은 비평가의 Q 값 정확도를 측정합니다. 평균 Q 값이 높고 시간차 오류가 낮은 훈련 실행을 찾습니다. 이 종이, 오프라인 모델이 필요 없는 로봇 강화 학습을 위한 워크플로, 최상의 훈련 실행을 선택하는 방법을 자세히 설명합니다. 코드 저장소에는 다음과 같은 파일이 있습니다. /utils/investigate_training.py, 최신 훈련 작업을 설명하는 플롯 HTML 그림을 생성합니다. 이 파일을 실행하고 출력을 사용하여 최상의 훈련 실행을 선택하십시오.

평균 Q 값을 사용하여 훈련된 모델의 성능을 예측할 수 있습니다. Q 값은 할인된 미래 보상 값의 합을 보수적으로 예측하도록 훈련되었습니다. 장기 실행 프로세스의 경우 Q 값에 (1-"할인율")을 곱하여 이 숫자를 지수 가중 평균으로 변환할 수 있습니다. 이 세트에서 최고의 훈련 실행은 539의 평균 Q 값을 달성했습니다. 할인율은 0.99이므로 모델은 시간 단계당 최소 5.39의 평균 보상을 예측합니다. 새 모델이 과거 제어 정책보다 성능이 뛰어난지 여부를 표시하기 위해 이 값을 과거 시스템 성능과 비교할 수 있습니다. 이 실험에서 과거 데이터의 시간 단계당 평균 보상은 4.3이었으므로 CQL 모델은 역사적으로 달성한 시스템보다 25% 더 나은 성능을 예측하고 있습니다.

모델 배포

Amazon SageMaker 엔드포인트를 사용하면 다양한 사용 사례를 충족하기 위해 여러 가지 방법으로 기계 학습 모델을 제공할 수 있습니다. 이 게시물에서는 엔드포인트가 수요에 따라 자동으로 확장되도록 서버리스 엔드포인트 유형을 사용하고 엔드포인트가 추론을 생성할 때 컴퓨팅 사용량에 대해서만 비용을 지불합니다. 서버리스 엔드포인트를 배포하려면 다음을 포함하세요. ProductionVariantServerlessConfig FBI 증오 범죄 보고서 생산 변형 SageMaker의 엔드 포인트 구성. 다음 코드 조각은 Python용 Amazon SageMaker 소프트웨어 개발 키트를 사용하여 이 예제의 서버리스 엔드포인트를 배포하는 방법을 보여줍니다. 모델을 배포하는 데 사용된 샘플 코드를 찾으세요. Sagemaker-오프라인-강화-학습-ray-cql.

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

훈련된 모델 파일은 각 훈련 실행에 대한 S3 모델 아티팩트에 있습니다. 기계 학습 모델을 배포하려면 최상의 훈련 실행의 모델 파일을 찾고 "라는 Lambda 함수를 호출하십시오.ModelDeployerFunction”라는 모델 데이터가 포함된 이벤트를 사용합니다. Lambda 함수는 훈련된 모델을 제공하기 위해 SageMaker 서버리스 엔드포인트를 시작합니다. "를 호출할 때 사용할 샘플 이벤트ModelDeployerFunction"

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

훈련된 모델 성능 평가

이제 훈련된 모델이 프로덕션에서 어떻게 작동하는지 확인할 시간입니다! 새 모델의 성능을 확인하려면 "라는 이름의 Lambda 함수를 호출하십시오.RunPhysicsSimulationFunction”를 이벤트의 SageMaker 엔드포인트 이름으로 바꿉니다. 그러면 엔드포인트에서 권장하는 작업을 사용하여 시뮬레이션이 실행됩니다. 호출할 때 사용할 샘플 이벤트 RunPhysicsSimulatorFunction:

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

다음 Athena 쿼리를 사용하여 훈련된 모델의 성능을 과거 시스템 성능과 비교합니다.

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

다음은 결과 테이블의 예입니다. 훈련된 모델이 과거 데이터보다 2.5배 더 많은 보상을 달성한 것을 볼 수 있습니다! 또한 모델의 실제 성능은 보수적인 성능 예측보다 2배 더 뛰어났습니다.

액션 소스 시간 단계당 평균 보상
trained_model 10.8
historic_data 4.3

다음 애니메이션은 학습 데이터의 샘플 에피소드와 학습된 모델을 사용하여 수행할 작업을 선택하는 에피소드 간의 차이점을 보여줍니다. 애니메이션에서 파란색 상자는 카트, 파란색 선은 폴, 녹색 직사각형은 목표 위치를 나타냅니다. 빨간색 화살표는 각 시간 단계에서 카트에 적용되는 힘을 나타냅니다. 훈련 데이터의 빨간색 화살표는 데이터가 전문가 작업 50%와 무작위 작업 50%를 사용하여 생성되었기 때문에 상당히 앞뒤로 이동합니다. 훈련된 모델은 전적으로 비전문가의 시연을 관찰하면서 안정성을 유지하면서 카트를 목표 위치로 빠르게 이동시키는 제어 정책을 학습했습니다.

 정리

이 워크플로에 사용된 리소스를 삭제하려면 Amazon CloudFormation 스택의 리소스 섹션으로 이동하여 S3 버킷과 IAM 역할을 삭제합니다. 그런 다음 CloudFormation 스택 자체를 삭제합니다.

결론

오프라인 강화 학습은 산업 기업이 과거 데이터를 사용하여 안전을 훼손하지 않고 최적의 정책 검색을 자동화하는 데 도움이 될 수 있습니다. 운영에 이 접근 방식을 구현하려면 상태 결정 시스템을 구성하는 측정값, 제어할 수 있는 작업, 원하는 성능을 나타내는 측정항목을 식별하는 것부터 시작하세요. 그런 다음 액세스 이 GitHub 저장소 Ray 및 Amazon SageMaker를 사용하여 자동 엔드투엔드 솔루션을 구현합니다.

이 게시물은 Amazon SageMaker RL로 수행할 수 있는 작업의 표면적인 부분에 불과합니다. 한번 사용해 보시고 피드백을 보내주세요. Amazon SageMaker 토론 포럼 또는 일반적인 AWS 연락처를 통해.


저자에 관하여

월트 메이필드 AWS의 솔루션스 아키텍트이며 에너지 회사가 보다 안전하고 효율적으로 운영되도록 돕습니다. AWS에 합류하기 전에 Walt는 Hilcorp Energy Company에서 운영 엔지니어로 근무했습니다. 그는 여가 시간에 정원 가꾸기와 제물 낚시를 좋아합니다.

펠리페 로페즈 그는 석유 및 가스 생산 운영을 전문으로 하는 AWS의 수석 솔루션 아키텍트입니다. AWS에 합류하기 전에 Felipe는 GE Digital 및 Schlumberger에서 근무하면서 산업용 애플리케이션을 위한 모델링 및 최적화 제품에 주력했습니다.

유 잉웨이 AWS Generative AI Incubator의 응용 과학자입니다. 그는 자연어 처리, 시계열 분석 및 예측 유지 관리를 포함하여 기계 학습의 다양한 개념 증명에 대해 업계 전반의 여러 조직과 협력한 경험이 있습니다. 여가 시간에는 수영, 그림 그리기, 하이킹을 즐기고 가족 및 친구들과 시간을 보냅니다.

왕하오주 Amazon의 Titan 기반 모델 구축에 주력하는 Amazon Bedrock의 연구 과학자입니다. 이전에는 Amazon ML Solutions Lab에서 강화 학습 분야의 공동 리더로 근무했으며 강화 학습, 자연어 처리 및 그래프 학습에 대한 최신 연구를 통해 고객이 고급 ML 솔루션을 구축하도록 도왔습니다. Haozhu는 미시간 대학교에서 전기 및 컴퓨터 공학 박사 학위를 받았습니다.

spot_img

최신 인텔리전스

spot_img