Шаблоны размещения моделей в SageMaker: лучшие практики тестирования и обновления моделей в SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Шаблоны размещения моделей в SageMaker: рекомендации по тестированию и обновлению моделей в SageMaker

Создатель мудреца Амазонки — это полностью управляемая служба, которая предоставляет разработчикам и специалистам по данным возможность быстро создавать, обучать и развертывать модели машинного обучения (ML). С помощью SageMaker вы можете развернуть свои модели машинного обучения на размещенных конечных точках и получать результаты логических выводов в режиме реального времени. Вы можете легко просмотреть показатели производительности для ваших конечных точек в Amazon CloudWatch, автоматически масштабировать конечные точки в зависимости от трафика и обновляйте свои модели в рабочей среде без потери доступности. SageMaker предлагает широкий спектр вариантов развертывания моделей машинного обучения для получения логических выводов любым из следующих способов, в зависимости от вашего варианта использования:

  • Для синхронных прогнозов, которые должны обслуживаться в порядке миллисекунд, используйте SageMaker. вывод в реальном времени
  • Для рабочих нагрузок, которые имеют периоды простоя между скачками трафика и допускают холодный запуск, используйте Бессерверный вывод
  • Для запросов с большими размерами полезной нагрузки до 1 ГБ, длительным временем обработки (до 15 минут) и требованиями к задержке, близкой к реальному времени (от секунд до минут), используйте SageMaker. Асинхронный вывод
  • Чтобы получить прогнозы для всего набора данных, используйте SageMaker. пакетное преобразование

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

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

В этом посте мы обсудим многовариантные конечные точки SageMaker и рекомендации по оптимизации.

Сравнение параметров логического вывода SageMaker в реальном времени

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

Конечная точка с одной моделью позволяет развернуть одну модель в контейнере, размещенном на выделенных экземплярах или без сервера, для низкой задержки и высокой пропускной способности. Вы можете создать модель и извлекать a Образ, поддерживаемый SageMaker для популярных фреймворков, таких как TensorFlow, PyTorch, Scikit-learn и других. Если вы работаете с пользовательской структурой для своей модели, вы также можете принесите свой собственный контейнер который устанавливает ваши зависимости.

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

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

  • Размещение моделей в разных средах (таких как TensorFlow, PyTorch и Scikit-learn), у которых недостаточно трафика для насыщения полной емкости экземпляра.
  • Размещение моделей из одной платформы с разными алгоритмами машинного обучения (такими как рекомендации, прогнозирование или классификация) и функциями обработчика.
  • Сравнение похожих архитектур, работающих на разных версиях фреймворка (например, TensorFlow 1.x и TensorFlow 2.x) для таких сценариев, как A/B-тестирование.

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

Обзор многовариантных конечных точек SageMaker

В производственных рабочих процессах машинного обучения специалисты по данным и инженеры по машинному обучению уточняют модели с помощью различных методов, таких как переобучение на основе смещения данных/модели/концепции, настройка гиперпараметров, выбор функций, выбор фреймворка и многое другое. Выполнение A/B-тестирования между новой моделью и старой моделью с рабочим трафиком может стать эффективным завершающим шагом в процессе проверки новой модели. При A/B-тестировании вы тестируете различные варианты своих моделей и сравниваете, как каждый вариант работает по сравнению друг с другом. Затем вы выбираете наиболее производительную модель, чтобы заменить предыдущую модель новой версией, которая обеспечивает более высокую производительность, чем предыдущая версия. Используя производственные варианты, вы можете тестировать эти модели машинного обучения и разные версии моделей за одной и той же конечной точкой. Вы можете обучать эти модели машинного обучения, используя разные наборы данных, разные алгоритмы и платформы машинного обучения; развертывать их на разных типах инстансов; или любую комбинацию этих вариантов. Балансировщик нагрузки, подключенный к конечной точке SageMaker, позволяет распределять запросы на вызовы по нескольким производственным вариантам. Например, вы можете распределять трафик между производственными вариантами, указав распределение трафика для каждого варианта, или вы можете вызывать конкретный вариант непосредственно для каждого запроса.

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

На следующей диаграмме более подробно показано, как работает MVE.

Многовариантная конечная точка SageMaker

Развертывание MVE также очень просто. Все, что вам нужно сделать, это определить объекты модели с изображением и данными модели, используя create_model создать из SageMaker Python SDK и определить конфигурации конечной точки с помощью production_variant конструкции для создания производственных вариантов, каждый со своей собственной моделью и требованиями к ресурсам (тип экземпляра и количество). Это позволяет также тестировать модели на различных типах экземпляров. Для развертывания используйте endpoint_from_production_variant конструкция для создания конечной точки.

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

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

В предыдущем примере мы создали два варианта, каждый со своей собственной моделью (у них также могут быть разные типы экземпляров и количество). Мы устанавливаем initial_weight 1 для обоих вариантов: это означает, что 50% наших запросов направляются на Variant1, а остальные 50% Variant2. Сумма весов обоих вариантов равна 2, и каждому варианту присвоен вес 1. Это означает, что каждый вариант получает 50% всего трафика.

Вызов конечной точки аналогичен обычной конструкции SageMaker. invoke_endpoint; вы можете напрямую вызвать конечную точку с данными в качестве полезной нагрузки:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

SageMaker выдает такие показатели, как Latency и Invocations для каждого варианта в CloudWatch. Полный список метрик, которые создает SageMaker, см. Мониторинг Amazon SageMaker с помощью Amazon CloudWatch. Вы можете запросить CloudWatch, чтобы получить количество вызовов для каждого варианта, чтобы увидеть, как вызовы распределяются между вариантами по умолчанию.

Чтобы вызвать конкретную версию модели, укажите вариант в качестве TargetVariant в призыве к invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

Вы можете оценить производительность каждого производственного варианта, просмотрев такие показатели, как точность, воспроизводимость, отзыв, оценка F1 и рабочие характеристики/область приемника под кривой для каждого варианта, используя Монитор моделей Amazon SageMaker. Затем вы можете решить увеличить трафик до лучшей модели, обновив веса, присвоенные каждому варианту, позвонив ОбновлениеEndpointWeightsAndCapacities. Это изменяет распределение трафика на ваши рабочие варианты, не требуя обновлений вашей конечной точки. Таким образом, вместо 50% трафика из первоначальной настройки мы переводим 75% трафика на Variant2 путем присвоения каждому варианту нового веса с помощью UpdateEndpointWeightsAndCapacities, Смотрите следующий код:

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

Когда вы удовлетворены эффективностью варианта, вы можете направить 100 % трафика на этот вариант. Например, вы можете установить вес для Variant1 до 0 и вес для Variant2 до 1. Затем SageMaker отправляет 100 % всех запросов на вывод в Variant2. Затем вы можете безопасно обновить свою конечную точку и удалить Variant1 от вашей конечной точки. Вы также можете продолжать тестировать новые модели в рабочей среде, добавляя новые варианты на свою конечную точку. Вы также можете настроить эти конечные точки для автоматического масштабирования в зависимости от трафика, получаемого конечными точками.

Преимущества многовариантных конечных точек

SageMaker MVE позволяет делать следующее:

  • Разверните и протестируйте несколько вариантов модели, используя одну и ту же конечную точку SageMaker. Это полезно для тестирования вариантов модели в производстве. Например, предположим, что вы развернули модель в рабочей среде. Вы можете протестировать вариант модели, направив небольшой объем трафика, скажем, 5%, на новую модель.
  • Оценивайте производительность модели в рабочей среде, не прерывая трафик, отслеживая операционные показатели для каждого варианта в CloudWatch.
  • Обновляйте модели в производстве без потери доступности. Вы можете изменить конечную точку, не выводя модели, которые уже развернуты в рабочей среде, из эксплуатации. Например, вы можете добавить новые варианты модели, обновить конфигурации вычислительных экземпляров машинного обучения для существующих вариантов модели или изменить распределение трафика между вариантами модели. Для получения дополнительной информации см. Обновить конечную точку и ОбновлениеEndpointWeightsAndCapacities.

Проблемы при использовании многовариантных конечных точек

SageMaker MVE сталкивается со следующими проблемами:

  • Усилия по нагрузочному тестированию – Вам нужно приложить немало усилий и ресурсов для тестирования и сравнения матриц моделей для каждого варианта. Чтобы A/B-тест считался успешным, вам необходимо выполнить статистический анализ метрик, собранных в результате теста, чтобы определить, есть ли статистически значимый результат. Может стать сложно свести к минимуму изучение неэффективных вариантов. Вы могли бы потенциально использовать многорукий бандит метод оптимизации, чтобы избежать отправки трафика на эксперименты, которые не работают, и оптимизировать производительность во время тестирования. Для нагрузочного тестирования вы также можете изучить Рекомендатор выводов Amazon SageMaker для проведения обширных тестов на основе производственных требований к задержке и пропускной способности, пользовательских шаблонов трафика и экземпляров (до 10), которые вы выбираете.
  • Тесная связь между вариантом модели и конечной точкой – Это может быть сложно в зависимости от частоты развертывания модели, потому что конечная точка может оказаться в updating статус для каждого обновляемого производственного варианта. SageMaker также поддерживает ограждения развертывания, который можно использовать для легкого переключения с текущей модели в производстве на новую контролируемым образом. Этот вариант вводит канарейка и линейный режимы переключения трафика, чтобы вы могли детально контролировать переключение трафика с текущей модели на новую в ходе обновления. Благодаря встроенным средствам защиты, таким как автоматический откат, вы можете выявлять проблемы на ранней стадии и автоматически предпринимать корректирующие действия до того, как они окажут существенное влияние на производительность.

Лучшие практики для многовариантных конечных точек

При размещении моделей с помощью SageMaker MVE учитывайте следующее:

  • SageMaker отлично подходит для тестирования новых моделей, потому что вы можете легко развернуть их в среде A/B-тестирования и платить только за то, что используете. Плата взимается за каждый инстанс-час, использованный для каждого инстанса во время работы конечной точки. Когда вы закончите свои тесты и больше не будете использовать конечную точку или варианты, вы должны удалить ее, чтобы сэкономить деньги. Вы всегда можете воссоздать ее, когда она вам снова понадобится, потому что модель хранится в Простой сервис хранения Amazon (Amazon S3).
  • Для развертывания моделей следует использовать наиболее оптимальный тип и размер экземпляра. В настоящее время SageMaker предлагает Вычислительные экземпляры машинного обучения на различных семействах экземпляров. Экземпляр конечной точки работает все время (пока экземпляр находится в обслуживании). Таким образом, выбор правильного типа экземпляра может существенно повлиять на общую стоимость и производительность моделей машинного обучения. Тестирование нагрузки рекомендуется определить подходящий тип инстанса и размер группы с автоматическим масштабированием для вашей активной конечной точки или без него, чтобы избежать избыточного выделения ресурсов и дополнительной платы за емкость, которая вам не нужна.
  • Вы можете отслеживать производительность модели и использование ресурсов в CloudWatch. Вы можете настроить ProductionVariant использовать Автоматическое масштабирование приложения. Чтобы указать метрики и целевые значения для политики масштабирования, вы настраиваете политику масштабирования с отслеживанием целей. Вы можете использовать либо предустановленную метрику, либо пользовательскую метрику. Дополнительные сведения о синтаксисе конфигурации политики см. Таргеттрекингскалингполициконфигуратион. Сведения о настройке автоматического масштабирования см. Автоматическое масштабирование моделей Amazon SageMaker. Чтобы быстро определить политику масштабирования с отслеживанием целей для варианта, вы можете выбрать определенную метрику CloudWatch и установить пороговые значения. Например, используйте метрику SageMakerVariantInvocationsPerInstance чтобы отслеживать среднее количество раз в минуту, когда каждый экземпляр для варианта вызывается, или использовать метрику CPUUtilization для мониторинга суммы работы, выполняемой процессором. В следующем примере используется SageMakerVariantInvocationsPerInstance предопределенная метрика для настройки количества экземпляров вариантов, чтобы каждый экземпляр имел InvocationsPerInstance метрика 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • Изменение или удаление артефактов модели или изменение кода логического вывода после развертывания модели приводит к непредсказуемым результатам. Перед развертыванием моделей в рабочей среде рекомендуется проверить успешность размещения модели в локальном режиме после достаточной отладки фрагментов кода вывода (например, model_fn, input_fn, predict_fnи output_fn) в локальной среде разработки, такой как экземпляр ноутбука SageMaker или локальный сервер. Если вам нужно изменить или удалить артефакты модели или изменить код логического вывода, измените конечную точку, предоставив новую конфигурацию конечной точки. После предоставления новой конфигурации конечной точки можно изменить или удалить артефакты модели, соответствующие старой конфигурации конечной точки.
  • Вы можете использовать Sage Maker пакетное преобразование для тестирования производственных вариантов. Пакетное преобразование идеально подходит для получения выводов из больших наборов данных. Вы можете создать отдельное задание преобразования для каждого нового варианта модели и использовать проверочный набор данных для тестирования. Для каждого задания преобразования укажите уникальное имя модели и местоположение выходного файла в Amazon S3. Для анализа результатов используйте журналы и метрики конвейера логического вывода.

Заключение

SageMaker позволяет легко проводить A/B-тестирование моделей машинного обучения в производственной среде, запуская несколько производственных вариантов на конечной точке. Вы можете использовать возможности SageMaker для тестирования моделей, обученных с использованием различных обучающих наборов данных, гиперпараметров, алгоритмов или платформ машинного обучения; как они работают с разными типами инстансов; или сочетание всего вышеперечисленного. Вы можете предоставить распределение трафика между вариантами на конечной точке, и SageMaker разделит трафик логического вывода на варианты на основе указанного распределения. В качестве альтернативы, если вы хотите протестировать модели для определенных сегментов клиентов, вы можете указать вариант, который должен обрабатывать запрос на вывод, предоставив TargetVariant заголовок, и SageMaker направит запрос на указанный вами вариант. Дополнительные сведения об A/B-тестировании см. Безопасное обновление моделей в производстве.

Рекомендации


Об авторах

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

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

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

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

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