Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon

Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon

Эффективная политика контроля позволяет промышленным компаниям повысить свою прибыльность за счет максимизации производительности при одновременном сокращении внеплановых простоев и энергопотребления. Поиск оптимальной политики управления является сложной задачей, поскольку физические системы, такие как химические реакторы и ветряные турбины, часто трудно моделировать, а также потому, что дрейф в динамике процесса может со временем привести к ухудшению производительности. Офлайн-обучение с подкреплением — это стратегия управления, которая позволяет промышленным компаниям строить политику управления полностью на основе исторических данных без необходимости использования явной модели процесса. Этот подход не требует взаимодействия с процессом непосредственно на этапе исследования, что устраняет одно из препятствий для внедрения обучения с подкреплением в критически важных для безопасности приложениях. В этом посте мы создадим комплексное решение для поиска оптимальных политик управления, используя только исторические данные о Создатель мудреца Амазонки используя Рэя RLlib библиотека. Чтобы узнать больше об обучении с подкреплением, см. Используйте обучение с подкреплением с Amazon SageMaker.

Use cases

Промышленный контроль предполагает управление сложными системами, такими как производственные линии, энергосети и химические заводы, для обеспечения эффективной и надежной работы. Многие традиционные стратегии управления основаны на заранее определенных правилах и моделях, которые часто требуют ручной оптимизации. В некоторых отраслях стандартной практикой является мониторинг производительности и корректировка политики контроля, когда, например, оборудование начинает ухудшаться или изменяются условия окружающей среды. Перенастройка может занять несколько недель и может потребовать введения внешних возбуждений в систему для регистрации ее реакции методом проб и ошибок.

Обучение с подкреплением возникло как новая парадигма управления процессами, позволяющая изучить оптимальные политики управления посредством взаимодействия с окружающей средой. Этот процесс требует разбивки данных на три категории: 1) измерения, доступные в физической системе, 2) набор действий, которые можно предпринять с системой, и 3) числовые показатели (вознаграждение) производительности оборудования. Политика обучена находить при заданном наблюдении действие, которое с большой вероятностью принесет наибольшую будущую выгоду.

При автономном обучении с подкреплением можно обучить политику на исторических данных перед ее развертыванием в производстве. Алгоритм, обученный в этом сообщении блога, называется «Консервативное Q-обучение(ККЛ). CQL содержит модель «актера» и модель «критика» и предназначен для консервативного прогнозирования собственной производительности после выполнения рекомендуемого действия. В этом посте процесс демонстрируется на примере иллюстративной задачи управления тележкой. Цель состоит в том, чтобы научить агента балансировать на тележке с шестом, одновременно перемещая тележку к назначенной цели. Процедура обучения использует офлайн-данные, позволяя агенту учиться на уже существующей информации. Этот пример использования тележки демонстрирует процесс обучения и его эффективность в потенциальных реальных приложениях.

Обзор решения

Решение, представленное в этом посте, автоматизирует развертывание сквозного рабочего процесса для автономного обучения с подкреплением на исторических данных. На следующей диаграмме описана архитектура, используемая в этом рабочем процессе. Данные измерений производятся на границе промышленного оборудования (здесь моделируются с помощью AWS Lambda функция). Данные помещаются в Амазонка Кинезис Data Firehose, который хранит их в Простой сервис хранения Amazon (Амазонка 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. Используйте следующие команды для вызова сценария bash, который генерирует фиктивные данные с помощью функции AWS Lambda.
    1. sudo yum install jq
    2. cd utils
    3. sh generate_mock_data.sh

Пошаговое руководство по решению

Сформулировать проблему

Наша система, описанная в этом посте, представляет собой тележку с балансиром наверху. Система работает хорошо, когда штанга находится в вертикальном положении, а положение тележки близко к целевому положению. На предварительном этапе мы сгенерировали исторические данные из этой системы.

В следующей таблице показаны исторические данные, собранные из системы.

Положение корзины Скорость тележки Угол полюса Угловая скорость полюса Позиция цели Внешняя сила Предложение Время
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, чтобы выполнить преобразование и сохранить объекты JSON в Amazon S3. Алгоритм обучения с подкреплением использует структуру этих объектов JSON, чтобы понять, на каких значениях основывать рекомендации и на каких результатах основывать действия на исторических данных.

Поездной агент

Теперь мы можем начать обучение, чтобы создать обученную модель рекомендаций по действиям. Amazon SageMaker позволяет быстро запускать несколько заданий обучения, чтобы увидеть, как различные конфигурации влияют на полученную обученную модель. Вызовите функцию Lambda с именем TuningJobLauncherFunction чтобы начать работу по настройке гиперпараметров, которая экспериментирует с четырьмя различными наборами гиперпараметров при обучении алгоритма.

Выберите лучший тренировочный забег

Чтобы определить, какое из обучающих заданий создало лучшую модель, изучите кривые потерь, полученные во время обучения. Критическая модель CQL оценивает эффективность актера (так называемое значение Q) после выполнения рекомендованного действия. Часть функции потерь критика включает ошибку временной разницы. Этот показатель измеряет точность значения Q критика. Ищите обучающие прогоны с высоким средним значением Q и низкой ошибкой временной разницы. Эта бумага, Рабочий процесс автономного роботизированного обучения с подкреплением без использования моделей, подробно описано, как выбрать лучший тренировочный забег. В репозитории кода есть файл /utils/investigate_training.py, который создает графическое изображение в формате HTML, описывающее последнее задание по обучению. Запустите этот файл и используйте выходные данные, чтобы выбрать лучший тренировочный прогон.

Мы можем использовать среднее значение Q для прогнозирования производительности обученной модели. Значения Q обучены консервативному прогнозированию суммы дисконтированных будущих значений вознаграждения. Для длительных процессов мы можем преобразовать это число в экспоненциально взвешенное среднее, умножив значение Q на (1 – «ставка дисконтирования»). Лучший тренировочный прогон в этом наборе достиг среднего значения Q, равного 539. Наша ставка дисконтирования равна 0.99, поэтому модель прогнозирует не менее 5.39 среднего вознаграждения за временной шаг. Вы можете сравнить это значение с исторической производительностью системы, чтобы определить, превзойдет ли новая модель историческую политику управления. В этом эксперименте среднее вознаграждение за исторические данные за шаг по времени составило 4.3, поэтому модель CQL предсказывает производительность на 25 процентов выше, чем система, достигнутая исторически.

Развернуть модель

Конечные точки Amazon SageMaker позволяют обслуживать модели машинного обучения несколькими различными способами для различных вариантов использования. В этом посте мы будем использовать тип бессерверной конечной точки, чтобы наша конечная точка автоматически масштабировалась в зависимости от спроса, и мы платим за использование вычислений только тогда, когда конечная точка генерирует вывод. Чтобы развернуть бессерверную конечную точку, включите ProductionVariantServerlessConfig в производственный вариант из SageMaker конфигурация конечной точки. В следующем фрагменте кода показано, как в этом примере развертывается бессерверная конечная точка с помощью пакета разработки программного обеспечения Amazon SageMaker для Python. Найдите пример кода, используемый для развертывания модели, по адресу sagemaker-offline-reinforcement-learning-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 процентов случайных действий. Обученная модель полностью освоила политику управления, которая быстро перемещает тележку в целевое положение, сохраняя при этом стабильность, полностью благодаря наблюдениям за демонстрациями, выполненными неспециалистами.

Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

 Убирать

Чтобы удалить ресурсы, используемые в этом рабочем процессе, перейдите в раздел ресурсов стека Amazon CloudFormation и удалите корзины S3 и роли IAM. Затем удалите сам стек CloudFormation.

Заключение

Офлайн-обучение с подкреплением может помочь промышленным компаниям автоматизировать поиск оптимальных политик без ущерба для безопасности за счет использования исторических данных. Чтобы реализовать этот подход в своей деятельности, начните с определения показателей, составляющих систему, определяемую состоянием, действий, которыми вы можете управлять, и показателей, указывающих желаемую производительность. Затем доступ этот репозиторий GitHub за внедрение автоматического комплексного решения с использованием Ray и Amazon SageMaker.

Этот пост лишь поверхностно описывает то, что можно сделать с помощью Amazon SageMaker RL. Попробуйте и пришлите нам отзыв либо в Дискуссионный форум Amazon SageMaker или через ваши обычные контакты AWS.


Об авторах

Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Уолт Мэйфилд является архитектором решений в AWS и помогает энергетическим компаниям работать более безопасно и эффективно. До прихода в AWS Уолт работал инженером по эксплуатации в компании Hilcorp Energy. В свободное время он любит заниматься садоводством и ловить рыбу.

Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Фелипе Лопес — старший архитектор решений в AWS, специализирующийся на операциях по добыче нефти и газа. До прихода в AWS Фелипе работал в компаниях GE Digital и Schlumberger, где занимался продуктами моделирования и оптимизации для промышленных приложений.

Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Инвэй Ю — учёный-прикладник в Generative AI Incubator, AWS. У него есть опыт работы с несколькими организациями в разных отраслях над различными проверками концепции машинного обучения, включая обработку естественного языка, анализ временных рядов и прогнозное обслуживание. В свободное время он любит плавать, рисовать, ходить в походы и проводить время с семьей и друзьями.

Оптимизируйте производительность оборудования с помощью исторических данных, Ray и Amazon SageMaker | Веб-сервисы Amazon PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Хаочжу Ван — научный сотрудник Amazon Bedrock, занимающийся созданием моделей фундамента Amazon Titan. Ранее он работал в лаборатории решений Amazon ML в качестве соруководителя подразделения обучения с подкреплением и помогал клиентам создавать передовые решения машинного обучения с использованием новейших исследований в области обучения с подкреплением, обработки естественного языка и обучения графам. Хаочжу получил докторскую степень в области электротехники и вычислительной техники в Мичиганском университете.

Отметка времени:

Больше от Машинное обучение AWS