Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного логического вывода Amazon SageMaker.

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

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

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

Вы можете создавать модели суммирования текста с помощью нескольких сред глубокого обучения, таких как TensorFlow, PyTorch и Apache MXNet. Эти модели обычно имеют большую входную полезную нагрузку из нескольких текстовых документов разного размера. Расширенные модели глубокого обучения требуют предварительной обработки с интенсивными вычислениями перед выводом модели. Время обработки может составлять несколько минут, что исключает возможность запуска логического вывода в реальном времени путем передачи полезных данных через HTTP API. Вместо этого вам нужно асинхронно обрабатывать входные данные из хранилища объектов, например Простой сервис хранения Amazon (Amazon S3) с автоматическим созданием очередей и предопределенным порогом параллелизма. Система должна иметь возможность получать уведомления о состоянии и сокращать ненужные расходы за счет очистки ресурсов по завершении задач.

SageMaker помогает специалистам по данным и разработчикам быстро подготавливать, создавать, обучать и развертывать высококачественные модели машинного обучения (ML), объединяя широкий набор возможностей, специально созданных для ML. SageMaker предоставляет самые передовые контейнеры для обслуживания моделей с открытым исходным кодом для XGBoost (контейнер, SDK), Scikit-Learn (контейнер, SDK), ПиТорч (контейнер, SDK), ТензорФлоу (контейнер, SDK) и Apache MXNet (контейнер, SDK).

SageMaker предоставляет четыре варианта развертывания обученных моделей машинного обучения для создания выводов на основе новых данных.
  1. Вывод в реальном времени конечные точки подходят для рабочих нагрузок, которые необходимо обрабатывать с низкими требованиями к задержке в порядке от миллисекунд до секунд.
  2. Пакетное преобразование идеально подходит для автономных прогнозов на больших пакетах данных.
  3. Бессерверный инференс Amazon SageMaker (в режиме предварительного просмотра и не рекомендуется для рабочих нагрузок на момент написания этой статьи) — это специально созданный параметр логического вывода, который упрощает развертывание и масштабирование моделей машинного обучения. Serverless Inference идеально подходит для рабочих нагрузок, которые имеют периоды простоя между скачками трафика и допускают холодный запуск.
  4. Асинхронный вывод конечные точки ставят в очередь входящие запросы. Они идеально подходят для рабочих нагрузок с большими размерами запросов (до 1 ГБ) и временем обработки логических выводов порядка нескольких минут (до 15 минут). Асинхронный вывод позволяет сократить расходы за счет автоматического масштабирования количества экземпляров до нуля при отсутствии запросов для обработки.

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

В этом посте мы развертываем модель ПЕГАС который был предварительно обучен для суммирования текста из Обнимая лицо в Услуги хостинга SageMaker. Мы используем модель как есть из Hugging Face для простоты. Однако вы можете тонкая настройка модели на основе пользовательского набора данных. Вы также можете попробовать другие модели, доступные в Обнимающая модель лица Hub. Мы также предоставляем конечную точку асинхронного вывода, в которой размещается эта модель, из которой вы можете получать прогнозы.

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

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

Мы также используем Amazon CloudWatch метрики для отслеживания размера очереди, общего времени обработки и обработанных вызовов.

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

Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

  1. Наши предварительно обученные PEGASUS Модель машинного обучения сначала размещается на конечной точке масштабирования.
  2. Пользователь загружает статью для обобщения во входную корзину S3.
  3. Конечная точка асинхронного вывода вызывается с помощью API.
  4. После завершения вывода результат сохраняется в выходной корзине S3.
  5. An Amazon Простая служба уведомлений (Amazon SNS) уведомление отправляется пользователю, уведомляя его об успешном завершении или неудаче.

Создание конечной точки асинхронного вывода

Мы создаем конечную точку асинхронного вывода, аналогичную размещенной в реальном времени конечной точке. Шаги включают создание модели SageMaker с последующей настройкой конечной точки и развертыванием конечной точки. Разница между двумя типами конечных точек заключается в том, что конфигурация конечной точки асинхронного вывода содержит AsyncInferenceConfig раздел. Здесь мы указываем выходной путь S3 для результатов вызова конечной точки и дополнительно включаем темы SNS для уведомлений об успехе и неудаче. Мы также указываем максимальное количество одновременных вызовов на один экземпляр, определяемое заказчиком. См. следующий код:

AsyncInferenceConfig={ "OutputConfig": { "S3OutputPath": f"s3://{bucket}/{bucket_prefix}/output", # Optionally specify Amazon SNS topics for notifications "NotificationConfig": { "SuccessTopic": success_topic, "ErrorTopic": error_topic, } }, "ClientConfig": { "MaxConcurrentInvocationsPerInstance": 2 #increase this value up to throughput peak for ideal performance } }

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

Вызвать конечную точку асинхронного вывода

На следующем снимке экрана показана краткая статья, которую мы используем в качестве входной полезной нагрузки:
Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Следующий код загружает статью как input.json файл на Amazon S3:

sm_session.upload_data( input_location, bucket=sm_session.default_bucket(), key_prefix=prefix, extra_args={"ContentType": "text/plain"})

Мы используем URI Amazon S3 для входного файла полезной нагрузки, чтобы вызвать конечную точку. Объект ответа содержит выходное местоположение в Amazon S3 для получения результатов после завершения:

response = sm_runtime.invoke_endpoint_async(EndpointName=endpoint_name, InputLocation=input_1_s3_location)
output_location = response['OutputLocation']

На следующем снимке экрана показано обобщение выходных данных примера:
Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

Ставьте запросы на вызов в очередь с определяемым пользователем параллелизмом.

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

Автоматическое масштабирование экземпляров в конечной точке асинхронного вывода

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

client = boto3.client('application-autoscaling') # Common class representing Application Auto Scaling for SageMaker amongst other services resource_id='endpoint/' + endpoint_name + '/variant/' + 'variant1' # This is the format in which application autoscaling references the endpoint response = client.register_scalable_target(
ServiceNamespace='sagemaker', #
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=0,
MaxCapacity=5
) response = client.put_scaling_policy(
PolicyName='Invocations-ScalingPolicy',
ServiceNamespace='sagemaker', # The namespace of the AWS service that provides the resource.
ResourceId=resource_id, # Endpoint name
ScalableDimension='sagemaker:variant:DesiredInstanceCount', # SageMaker supports only Instance Count
PolicyType='TargetTrackingScaling', # 'StepScaling'|'TargetTrackingScaling'
TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [{'Name': 'EndpointName', 'Value': endpoint_name }], 'Statistic': 'Average',
}, 'ScaleInCooldown': 120, # ScaleInCooldown - The amount of time, in seconds, after a scale-in activity completes before another scale in activity can start. 'ScaleOutCooldown': 120 # ScaleOutCooldown - The amount of time, in seconds, after a scale-out activity completes before another scale out activity can start.
# 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled.
# If the value is true, scale-in is disabled and the target tracking policy won't remove capacity from the scalable resource.
}
)

Дополнительные сведения об API для автоматического масштабирования конечной точки асинхронного вывода см. Автомасштабирование конечной точки асинхронного вывода.

Настройка уведомлений от конечной точки асинхронного вывода

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

sns_client = boto3.client('sns')
response = sns_client.create_topic(Name="Async-Demo-ErrorTopic2")
error_topic = response['TopicArn']
response = sns_client.create_topic(Name="Async-Demo-SuccessTopic2")
success_topic = response['TopicArn']

Другие варианты уведомлений включают периодическую проверку выходных данных корзины S3 или использование уведомлений корзины S3 для инициализации AWS Lambda функция загрузки файла. Уведомления SNS включены в раздел конфигурации конечной точки, как описано ранее.

Дополнительные сведения о настройке уведомлений от конечной точки асинхронного вывода см. Проверить результаты прогноза.

Мониторинг конечной точки асинхронного вывода

Мы отслеживаем конечную точку асинхронного вывода с помощью встроенных дополнительных метрик CloudWatch, характерных для асинхронного вывода. Например, мы отслеживаем длину очереди в каждом экземпляре с помощью ApproximateBacklogSizePerInstance и общая длина очереди с ApproximateBacklogSize.

Полный список показателей см. Мониторинг конечных точек асинхронного вывода.

Мы можем оптимизировать конфигурацию конечной точки, чтобы получить наиболее экономичный экземпляр с высокой производительностью. Например, мы можем использовать инстанс с Amazon Elastic Inference или AWS Inferentia. Мы также можем постепенно увеличивать уровень параллелизма до пика пропускной способности, настраивая другие параметры сервера модели и контейнера.

Графики CloudWatch

Мы смоделировали трафик из 10,000 XNUMX запросов на вывод, поступающих за период к конечной точке асинхронного вывода, включенной с помощью политики автоматического масштабирования, описанной в предыдущем разделе.

На следующем снимке экрана показаны показатели экземпляра до того, как начали поступать запросы. Мы начинаем с работающей конечной точки с нулевым числом запущенных экземпляров:
Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

На следующем графике показано, как BacklogSize и BacklogSizePerInstance метрики изменяются по мере запуска автоматического масштабирования, и нагрузка на конечную точку распределяется между несколькими экземплярами, которые были подготовлены как часть процесса автоматического масштабирования.
Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Как показано на следующем снимке экрана, количество экземпляров увеличивалось по мере увеличения количества выводов:
Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

На следующем снимке экрана показано, как масштабирование возвращает конечную точку в исходное состояние нулевых запущенных экземпляров:
Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Убирать

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

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

response = client.deregister_scalable_target(ServiceNamespace='sagemaker',ResourceId='resource_id',ScalableDimension='sagemaker:variant:DesiredInstanceCount')

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

sm_client.delete_endpoint(EndpointName=endpoint_name)

Вам также необходимо удалить объекты S3 и темы SNS. Если вы создали какие-либо другие ресурсы AWS для использования и обработки уведомлений SNS, вы также можете удалить их.

Заключение

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

Чтобы начать работу с асинхронным выводом SageMaker, ознакомьтесь с Асинхронный вывод.


Об авторах

Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Динеш Кумар Субрамани является старшим архитектором решений в команде UKIR SMB, базирующейся в Эдинбурге, Шотландия. Он специализируется на искусственном интеллекте и машинном обучении. Динешу нравится работать с клиентами из разных отраслей, помогая им решать проблемы с сервисами AWS. Вне работы он любит проводить время со своей семьей, играть в шахматы и наслаждаться музыкой разных жанров.

Улучшайте ценные исследования с помощью Hugging Face и конечных точек асинхронного вывода Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Рагху Рамеша является архитектором решений машинного обучения в команде Amazon SageMaker Service. Он фокусируется на помощи клиентам в создании, развертывании и переносе производственных рабочих нагрузок машинного обучения в SageMaker в любом масштабе. Он специализируется на машинном обучении, искусственном интеллекте и компьютерном зрении, а также имеет степень магистра компьютерных наук UT Dallas. В свободное время любит путешествовать и фотографировать.

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

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