Шаблоны проектирования для последовательного вывода в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Шаблоны проектирования для последовательного вывода в Amazon SageMaker

По мере того как машинное обучение (ML) становится все более популярным и получает все более широкое распространение, приложения на основе ML становятся все более распространенными для решения ряда сложных бизнес-задач. Решение этих сложных бизнес-задач часто требует использования нескольких моделей машинного обучения. Эти модели можно последовательно комбинировать для выполнения различных задач, таких как предварительная обработка, преобразование данных, выбор модели, генерация выводов, консолидация выводов и постобработка. Организациям нужны гибкие возможности для организации этих сложных рабочих процессов ML. Конвейеры последовательного вывода — это один из таких шаблонов проектирования, позволяющий разделить эти рабочие процессы на ряд шагов, при этом каждый шаг обогащает или дополнительно обрабатывает выходные данные, сгенерированные предыдущими шагами, и передает выходные данные на следующий шаг конвейера.

Кроме того, эти конвейеры последовательного вывода должны обеспечивать следующее:

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

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

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

Кейсы Описание варианта использования Основные соображения Общая сложность реализации Рекомендуемые варианты реализации Примеры артефактов кода и блокноты
Конвейер последовательного вывода (включая этапы предварительной и постобработки) Конвейер вывода должен предварительно обработать входящие данные перед вызовом обученной модели для генерации выводов, а затем выполнить постобработку сгенерированных выводов, чтобы их можно было легко использовать последующими приложениями. Простота реализации Низкий Контейнер вывода с использованием набора инструментов вывода SageMaker. Развертывание обученной модели PyTorch
Конвейер последовательного вывода (включая этапы предварительной и постобработки) Конвейер вывода должен предварительно обработать входящие данные перед вызовом обученной модели для генерации выводов, а затем выполнить постобработку сгенерированных выводов, чтобы их можно было легко использовать последующими приложениями. Разделение, упрощенное развертывание и обновления Medium Конвейер логического вывода SageMaker Конвейер вывода с пользовательскими контейнерами и xgBoost
Серийный модельный ансамбль Конвейер вывода должен последовательно размещать и упорядочивать несколько моделей, чтобы каждая модель улучшала вывод, сгенерированный предыдущей, прежде чем генерировать окончательный вывод. Разделение, упрощенное развертывание и обновление, гибкость в выборе структуры модели. Medium Конвейер логического вывода SageMaker Конвейер вывода с Scikit-learn и Linear Learner
Последовательный конвейер вывода (с целевым вызовом модели из группы) Конвейер вывода должен вызывать конкретную настроенную модель из группы развернутых моделей на основе характеристик запроса или для оптимизации затрат в дополнение к задачам предварительной и постобработки. Оптимизация затрат и персонализация High Конвейер вывода SageMaker с многомодельными конечными точками (MME) Многомодельные конечные точки Amazon SageMaker с использованием линейного обучения

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

Последовательный конвейер вывода с использованием контейнеров вывода

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

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

SageMaker MMS ожидает, что скрипт Python, реализующий следующие функции, будет загружать модель, предварительно обрабатывать входные данные, получать прогнозы из модели и постобрабатывать выходные данные:

  • input_fn () – Отвечает за десериализацию и предварительную обработку входных данных.
  • model_fn () – Отвечает за загрузку обученной модели из артефактов в Простой сервис хранения Amazon (Амазон С3)
  • predict_fn () – Отвечает за создание выводов из модели.
  • output_fn () – Отвечает за сериализацию и постобработку выходных данных (выводы).

Подробные инструкции по настройке контейнера вывода см. Адаптация собственного контейнера логических выводов.

Контейнеры вывода — это идеальный шаблон проектирования для случаев использования конвейера последовательного вывода со следующими основными соображениями:

  • Высокая сплоченность – Логика обработки и соответствующая модель управляют единой бизнес-функцией и должны быть размещены совместно.
  • Низкая общая задержка – Прошедшее время между отправкой запроса на вывод и получением ответа.

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

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

Последовательный конвейер вывода с использованием конвейера вывода SageMaker

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

  • Развязка – Различные этапы конвейера имеют четко определенную цель и должны выполняться в отдельных контейнерах из-за задействованных базовых зависимостей. Это также помогает поддерживать хорошую структуру пайплайна.
  • Рамки – На различных этапах конвейера используются специальные специализированные платформы (например, scikit или Spark ML), поэтому их необходимо запускать в отдельных контейнерах.
  • Изоляция ресурсов – Различные этапы конвейера имеют разные требования к потреблению ресурсов и поэтому должны выполняться в отдельных контейнерах для большей гибкости и контроля.

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

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

ml9154-конвейер вывода

Конвейер вывода SageMaker состоит из линейной последовательности из 2–15 контейнеров, которые обрабатывают запросы на выводы по данным. Конвейер вывода предоставляет возможность использовать предварительно обученные встроенные алгоритмы SageMaker или пользовательские алгоритмы, упакованные в контейнеры Docker. Контейнеры размещаются в одном базовом экземпляре, что помогает снизить общую задержку и минимизировать затраты.

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

Мы начнем с создания и определения моделей на основе Spark ML и XGBoost, которые мы собираемся использовать как часть конвейера:

from sagemaker.model import Model
from sagemaker.pipeline_model import PipelineModel
from sagemaker.sparkml.model import SparkMLModel
sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
sparkml_model = SparkMLModel(model_data=sparkml_data)
xgb_model = Model(model_data=xgb_model.model_data, image=training_image)

Затем модели располагаются последовательно в определении модели конвейера:

model_name = 'serial-inference-' + timestamp_prefix
endpoint_name = 'serial-inference-ep-' + timestamp_prefix
sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model])

Затем конвейер вывода развертывается за конечной точкой для вывода в реальном времени путем указания типа и количества экземпляров хоста ML:

sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)

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

Конвейеры вывода SageMaker полностью управляемы. При развертывании конвейера SageMaker устанавливает и запускает все определенные контейнеры на каждом из Эластичное вычислительное облако Amazon Экземпляры (Amazon EC2), подготовленные как часть задания конечной точки или пакетного преобразования. Более того, поскольку контейнеры размещаются совместно и размещаются в одном экземпляре EC2, общая задержка конвейера снижается.

Ансамбль серийных моделей с использованием конвейера вывода SageMaker

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

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

  • Модель 1 – Принимает изображение в качестве входных данных и оценивает качество изображения на основе разрешения изображения, ориентации и т. д. Затем эта модель пытается повысить качество изображения и отправляет обработанные изображения, соответствующие определенному порогу качества, следующей модели (Модель 2).
  • Модель 2 – Принимает изображения, проверенные с помощью Модели 1, и выполняет распознавание изображений идентифицировать объекты, места, людей, текст и другие пользовательские действия и понятия на изображениях. Выходные данные модели 2, содержащие идентифицированные объекты, отправляются в модель 3.
  • Модель 3 – Принимает выходные данные Модели 2 и выполняет задачи обработки естественного языка (NLP), такие как тематическое моделирование для группировки изображений на основе тем. Например, изображения могут быть сгруппированы по местоположению или идентифицированным людям. Выходные данные (группировки) отправляются обратно в клиентское приложение.

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

ml9154-модель-ансамбль

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

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

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

Последовательный конвейер вывода (с целевым вызовом модели из группы) с использованием конвейера вывода SageMaker

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

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

ml9154-мме

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

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

Одним из ключевых моментов при использовании MME является понимание поведения задержки при вызове модели. Как обсуждалось ранее, модели динамически загружаются в память контейнера экземпляра, на котором размещена конечная точка, при вызове. Таким образом, вызов модели может занять больше времени при первом вызове. Когда модель уже находится в памяти контейнера экземпляра, последующие вызовы выполняются быстрее. Если использование памяти экземпляра высокое и необходимо загрузить новую модель, неиспользуемые модели выгружаются. Если объем хранилища экземпляра заполнен, неиспользуемые модели удаляются из объема хранения. SageMaker полностью управляет загрузкой и выгрузкой моделей без необходимости предпринимать какие-либо конкретные действия. Однако важно понимать такое поведение, поскольку оно влияет на задержку вызова модели и, следовательно, на общую сквозную задержку.

Варианты хостинга конвейера

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

Теперь вы можете использовать сервер вывода NVIDIA Triton для предоставления моделей для вывода в SageMaker для гетерогенных вычислительных требований. Проверить Развертывайте быстрый и масштабируемый ИИ с помощью NVIDIA Triton Inference Server в Amazon SageMaker для получения дополнительной информации.

Заключение

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

Мы с нетерпением ждем вашего ответа о том, какие варианты использования вы создаете с помощью конвейеров последовательного вывода. Если у вас есть вопросы или отзывы, поделитесь ими в комментариях.


Об авторах

Шаблоны проектирования для последовательного вывода в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Рахул Шарма — старший архитектор решений в AWS Data Lab, помогающий клиентам AWS проектировать и создавать решения AI/ML. До прихода в AWS Рахул несколько лет проработал в секторе финансов и страхования, помогая клиентам создавать платформы данных и аналитики.

Шаблоны проектирования для последовательного вывода в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Ананд Пракаш — старший архитектор решений в AWS Data Lab. Ананд фокусируется на том, чтобы помогать клиентам проектировать и создавать решения AI/ML, анализа данных и баз данных, чтобы ускорить их путь к производству.

Шаблоны проектирования для последовательного вывода в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Дхавал Патель является главным архитектором машинного обучения в AWS. Он работал с организациями, начиная от крупных предприятий и заканчивая стартапами среднего размера, над проблемами, связанными с распределенными вычислениями и искусственным интеллектом. Он специализируется на глубоком обучении, включая домены NLP и Computer Vision. Он помогает клиентам добиться высокопроизводительного логического вывода модели в SageMaker.

Шаблоны проектирования для последовательного вывода в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Саураб Триканде является старшим менеджером по продуктам Amazon SageMaker Inference. Он увлечен работой с клиентами и делает машинное обучение более доступным. В свободное время Саураб любит ходить в походы, узнавать об инновационных технологиях, следить за TechCrunch и проводить время со своей семьей.

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

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