Прогнозирование устойчивых временных рядов с использованием MLOps на Amazon SageMaker

Прогнозирование устойчивых временных рядов с помощью MLOps на Amazon SageMaker

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

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

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

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

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

Это решение показывает обучение модели прогнозирования временных рядов, специально разработанной для обработки выбросов и изменчивости данных с использованием Temporal Convolutional Network (TCN) with a Spliced Binned Pareto (SBP) distribution. Для получения дополнительной информации о многомодальной версии этого решения обратитесь к . Для дальнейшего иллюстрирования эффективности распределения Spliced Binned Pareto приводим сравнение его с той же моделью TCN, но с использованием нормального распределения.

В этом процессе значительную роль играют возможности MLOps SageMaker, которые оптимизируют процесс научных исследований, используя мощную облачную инфраструктуру AWS. В нашем решении мы используем Amazon SageMaker Automatic Model Tuning для поиска гиперпараметров, Amazon SageMaker Experiments для управления экспериментами, Amazon SageMaker Model Registry для управления версиями модели и Amazon SageMaker Pipelines для оркестрации процесса. Затем мы развертываем нашу модель в конечной точке SageMaker для получения прогнозов в реальном времени.

Ниже приведена схема архитектуры конвейера обучения.

На следующей диаграмме показана структура процесса вывода.

Вы можете найти полный код в репозитории GitHub. Чтобы реализовать решение, выполните ячейки в файлах SBP_main.ipynb.

Щелкните здесь, чтобы открыть консоль AWS и следовать инструкциям.

Самаркерная конвейеризация

SageMaker Pipelines предлагает простой в использовании Python SDK для создания интегрированных рабочих процессов машинного обучения (ML). Эти рабочие процессы представлены в виде ориентированных ациклических графов (DAG), состоящих из этапов с различными типами и зависимостями. С помощью SageMaker Pipelines вы можете оптимизировать полный процесс обучения и оценки моделей, повышая эффективность и воспроизводимость ваших рабочих процессов ML.

Рабочий процесс обучения начинается с генерации синтетического набора данных, который разделен на обучающий, проверочный и тестовый наборы. Обучающий набор данных используется для обучения двух моделей TCN, одна из которых использует сплайд-прерывистое распределение Парето, а другая – гауссово распределение. Обе модели проходят настройку гиперпараметров с использованием проверочного набора для оптимизации каждой модели. Затем выполняется оценка на тестовом наборе для определения модели с наименьшей среднеквадратичной ошибкой (RMSE). Модель с лучшей метрикой точности загружается в реестр моделей.

На следующей диаграмме показаны шаги конвейера.

Давайте подробнее рассмотрим каждый шаг.

Генерация данных

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

Этот задание по обработке данных выполняется с помощью PyTorchProcessor, который запускает код PyTorch (generate_data.py) в контейнере, управляемом SageMaker. Данные и другие связанные артефакты для отладки находятся в хранилище Amazon Simple Storage Service (Amazon S3), связанном с учетной записью SageMaker. Журналы для каждого шага в конвейере можно найти в Amazon CloudWatch.

Следующая фигура представляет собой образец данных, сгенерированных конвейером.

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

Обучение модели

После генерации данных мы обучаем две TCN: одну, используя SBP-распределение, и другую, используя гауссовское распределение. SBP-распределение использует дискретное дискретное распределение в качестве прогностической базы, где реальная ось разделена на дискретные ячейки, и модель прогнозирует вероятность наблюдения, попадающего в каждую ячейку. Эта методология позволяет учесть асимметрии и множественные моды, поскольку вероятность каждой ячейки независима. Пример дискретного распределения показан на следующей фигуре.

Прогностическое дискретное распределение слева является надежным для экстремальных событий, потому что логарифмическое правдоподобие не зависит от расстояния между предсказанным средним и наблюдаемой точкой и отличается от параметрических распределений, таких как гауссовское или t-Стьюдента. Поэтому экстремальное событие, представленное красной точкой, не повлияет на выученное среднее значение распределения. Однако экстремальное событие будет иметь нулевую вероятность. Для учета экстремальных событий мы создаем SBP-распределение, задавая нижний хвост на 5-м квантиле и верхний хвост на 95-м квантиле, заменяя оба хвоста взвешенными обобщенными распределениями Парето (GPD), которые могут количественно оценить вероятность события. TCN будет выводить параметры для базы дискретного распределения и хвостов GPD.

Для оптимального вывода мы используем автоматическую настройку модели, чтобы найти лучшую версию модели через настройку гиперпараметров. Этот шаг интегрирован в SageMaker Pipelines и позволяет параллельно выполнять несколько задач по обучению, используя различные методы и предопределенные диапазоны гиперпараметров. Результатом является выбор лучшей модели на основе заданной метрики модели, которая является RMSE. В нашем конвейере мы специально настраиваем коэффициент обучения и количество эпох обучения для оптимизации производительности нашей модели. Благодаря возможности настройки гиперпараметров в SageMaker, мы повышаем вероятность того, что наша модель достигнет оптимальной точности и обобщения для данной задачи.

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

Параметры, специфичные для SBP, остаются постоянными на основе обширных тестов авторами исходной статьи на различных наборах данных:

  • Количество ячеек (100) – Этот параметр определяет количество используемых ячеек для моделирования базы распределения. Он сохраняется равным 100, что показало себя наиболее эффективным в различных отраслях.
  • Перцентильный хвост (0.05) – Это определяет размер обобщенных распределений Парето на хвосте. Как и предыдущий параметр, он был тщательно протестирован и признан наиболее эффективным.

Эксперименты

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

Оценка модели

Модели проходят обучение и настройку гиперпараметров, а затем оцениваются с помощью скрипта evaluate.py. Этот шаг использует тестовый набор, отличный от этапа настройки гиперпараметров, чтобы оценить точность модели в реальном мире. Для оценки точности прогнозов используется RMSE.

Для сравнения распределений мы используем график вероятности-вероятности (P-P), который оценивает соответствие между фактическим и предсказанным распределением. Близость точек к диагонали указывает на идеальное соответствие. Наши сравнения между фактическим распределением и предсказанным распределением SBP и Гаусса показывают, что предсказания SBP более точно соответствуют реальным данным.

Как мы можем видеть, SBP имеет более низкую среднеквадратическую ошибку на базе, нижнем хвосте и верхнем хвосте. Распределение SBP улучшило точность распределения Гаусса на 61% на базе, 56% в нижнем хвосте и 30% в верхнем хвосте. В целом, распределение SBP дает значительно лучшие результаты.

Выбор модели

Мы используем условный шаг в SageMaker Pipelines для анализа отчетов оценки модели, выбирая модель с наименьшей среднеквадратической ошибкой для улучшения точности распределения. Выбранная модель конвертируется в объект модели SageMaker, готовый для развертывания. Это включает создание пакета модели с важными параметрами и упаковку его в ModelStep.

Реестр моделей

Затем выбранная модель загружается в Реестр моделей SageMaker, который играет важную роль в управлении моделями, готовыми для использования в производстве. Он хранит модели, организует версии моделей, сохраняет важные метаданные и артефакты, такие как контейнерные образы, и управляет статусом одобрения каждой модели. Используя реестр, мы можем эффективно развертывать модели в доступных средах SageMaker и создавать основу для непрерывной интеграции и непрерывного развертывания (CI/CD) конвейеров.

Вывод

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

1-й процентиль 5-й процентиль Медиана 95-й процентиль 99-й процентиль
1.12 3.16 4.70 7.40 9.41

Очистка

После выполнения этого решения убедитесь, что вы очистили все ненужные ресурсы AWS, чтобы избежать неожиданных затрат. Вы можете очистить эти ресурсы, используя SageMaker Python SDK, который можно найти в конце записной книжки. Удаление этих ресурсов позволяет избежать дополнительной оплаты за ресурсы, которыми вы больше не пользуетесь.

Заключение

Точный прогноз может существенно повлиять на планирование будущего бизнеса и также предоставить решения для различных проблем в разных отраслях. Наше исследование устойчивого прогнозирования временных рядов с использованием MLOps на SageMaker продемонстрировало метод получения точного прогноза и эффективность упрощенного тренировочного конвейера.

Наша модель, основанная на Temporal Convolutional Network с Spliced Binned Pareto distribution, показала точность и адаптивность к выбросам, улучшив RMSE на 61% по сравнению с базовым вариантом, на 56% в нижнем хвосте и на 30% в верхнем хвосте по сравнению с той же самой TCN с нормальным распределением Гаусса. Эти цифры делают ее надежным решением для потребностей прогнозирования в реальном мире.

Этот конвейер демонстрирует ценность автоматизации функций MLOps. Это может сократить ручные усилия человека, обеспечить воспроизводимость и ускорить внедрение модели. Возможности SageMaker, такие как SageMaker Pipelines, автоматическая настройка модели, SageMaker Experiments, SageMaker Model Registry и конечные точки, делают это возможным.

Наше решение использует миниатюрную TCN, оптимизируя всего лишь несколько гиперпараметров с ограниченным количеством слоев, которые достаточны для эффективного выделения производительности модели. Для более сложных случаев использования рассмотрите возможность использования PyTorch или других библиотек, основанных на PyTorch, для создания более настраиваемой TCN, соответствующей вашим конкретным потребностям. Кроме того, было бы полезно изучить другие возможности SageMaker, чтобы дополнительно усилить функциональность вашего конвейера. Для полной автоматизации процесса развертывания вы можете использовать AWS Cloud Development Kit (AWS CDK) или AWS CloudFormation.

Для получения дополнительной информации о прогнозировании временных рядов на AWS обратитесь к следующим ресурсам:

Не стесняйтесь оставлять комментарии со своими мыслями или вопросами!