Как Amazon Search сократила затраты на получение логических выводов на основе машинного обучения на 85 % с помощью AWS Inferentia

Система поиска продуктов Amazon индексирует миллиарды продуктов, обслуживает сотни миллионов клиентов по всему миру и является одним из наиболее активно используемых сервисов в мире. Команда Amazon Search разрабатывает технологию машинного обучения (ML), которая лежит в основе Amazon.com поисковая система и помогает клиентам искать легко. Чтобы обеспечить отличное качество обслуживания клиентов и работать в массовом масштабе, необходимом Amazon.com поисковая система, эта команда всегда ищет способы создания более экономичных систем с задержкой в ​​​​реальном времени и требованиями к пропускной способности. Команда постоянно исследует аппаратное обеспечение и компиляторы, оптимизированные для глубокого обучения, чтобы ускорить обучение моделей и логические выводы, одновременно снижая эксплуатационные расходы по всем направлениям.

В этом посте мы описываем, как Amazon Search использует Вывод AWS, высокопроизводительный ускоритель, специально созданный AWS для ускорения рабочих нагрузок логического вывода на основе глубокого обучения. Команда выполняет вывод ML с малой задержкой с моделями NLP на основе Transformer на базе AWS Inferentia. Эластичное вычислительное облако Amazon (Amazon EC2) Inf1 и экономит до 85 % затрат на инфраструктуру, сохраняя при этом высокие показатели пропускной способности и задержки.

Глубокое обучение для прогнозирования дублирования и намерения запроса

Поиск на Amazon Marketplace — это многозадачная, мультимодальная задача, связанная с несколькими входными данными, такими как ASIN (стандартный идентификационный номер Amazon, 10-значный буквенно-цифровой номер, который однозначно идентифицирует продукты), изображениями продуктов, текстовыми описаниями и запросами. Чтобы создать индивидуальный пользовательский опыт, прогнозы многих моделей используются для различных аспектов поиска. Это сложная задача, поскольку в поисковой системе есть тысячи моделей с десятками тысяч транзакций в секунду (TPS) при пиковой нагрузке. Мы сосредоточимся на двух компонентах этого опыта:

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

Оба этих прогноза сделаны с использованием архитектур моделей Transformer, а именно моделей на основе BERT. На самом деле, оба используют в качестве основы одну и ту же модель на основе BERT, и каждый из них накладывает головку классификации/регрессии поверх этой основы.

Предсказание дублирования использует в качестве входных данных различные текстовые характеристики для пары оцениваемых продуктов (например, тип продукта, название, описание и т. д.) и периодически вычисляется для больших наборов данных. Эта модель обучается от начала до конца в многозадачном режиме. Amazon SageMaker Обработка заданий используются для периодического запуска этих пакетных рабочих нагрузок для автоматизации их запуска и оплаты только за используемое время обработки. Для этого варианта использования пакетной рабочей нагрузки требование к пропускной способности логических выводов составляло 8,800 транзакций в секунду.

Предсказание намерений использует текстовый запрос пользователя в качестве входных данных и необходимо в режиме реального времени для динамического обслуживания повседневного трафика и улучшения взаимодействия с пользователем на Amazon Marketplace. Модель обучается на цели классификации нескольких классов. Затем эта модель развертывается на Amazon Elastic Контейнерный Сервис (Amazon ECS), который обеспечивает быстрое автоматическое масштабирование и простое определение развертывания и управление. Поскольку это вариант использования в режиме реального времени, требуется, чтобы задержка P99 составляла менее 10 миллисекунд, чтобы обеспечить восхитительное взаимодействие с пользователем.

AWS Inferentia и AWS Neuron SDK

Экземпляры EC2 Inf1 основаны на AWS Inferentia, первом ускорителе машинного обучения, созданном AWS для ускорения рабочих нагрузок логического вывода на основе глубокого обучения. Инстансы Inf1 обеспечивают в 2.3 раза более высокую пропускную способность и до 70 % более низкую стоимость вывода по сравнению с сопоставимыми инстансами EC2 на базе GPU. Вы можете продолжить обучение своих моделей с помощью выбранной вами платформы (PyTorch, TensorFlow, MXNet), а затем легко развернуть их на AWS Inferentia, чтобы воспользоваться встроенными оптимизациями производительности. С помощью экземпляров Inf1 можно развернуть широкий спектр типов моделей, от распознавания изображений до обнаружения объектов, обработки естественного языка (NLP) и современных рекомендательных моделей.

АВС Нейрон — это комплект для разработки программного обеспечения (SDK), состоящий из компилятора, среды выполнения и инструментов профилирования, которые оптимизируют производительность вывода машинного обучения для экземпляров EC2 Inf1. Neuron изначально интегрирован с популярными платформами машинного обучения, такими как TensorFlow и PyTorch. Таким образом, вы можете развертывать модели глубокого обучения в AWS Inferentia с теми же знакомыми API-интерфейсами, которые предоставляет выбранная вами платформа, и получать выгоду от повышения производительности и самой низкой стоимости вывода в облаке.

С момента своего запуска Neuron SDK продолжал расширять спектр поддерживаемых моделей, продолжая повышать производительность и снижать затраты на логические выводы. Сюда входят модели NLP (BERT), модели классификации изображений (ResNet, VGG) и модели обнаружения объектов (OpenPose и SSD).

Развертывание на инстансах Inf1 для низкой задержки, высокой пропускной способности и экономии средств

Команда Amazon Search хотела сократить расходы, соблюдая при этом высокие требования к пропускной способности при прогнозировании дублирования и требования к низкой задержке при прогнозировании намерений запроса. Они выбрали развертывание на инстансах Inf1 на базе AWS Inferentia и не только выполнили высокие требования к производительности, но и сэкономили до 85 % на затратах на логические выводы.

Воспринимаемые клиентами повторяющиеся прогнозы

До использования Inf1 выделенный Амазонка ЭМИ кластер работал с использованием экземпляров на базе ЦП. Не полагаясь на аппаратное ускорение, требовалось большое количество экземпляров, чтобы удовлетворить высокие требования к пропускной способности в 8,800 транзакций в секунду. Команда перешла на инстансы inf1.6xlarge, каждый из которых имеет 4 ускорителя AWS Inferentia и 16 нейронных ядер (по 4 ядра на чип AWS Inferentia). Они проследили модель на основе Transformer для одного ядра NeuronCore и загрузили один режим для каждого ядра NeuronCore, чтобы максимизировать пропускную способность. Воспользовавшись 16 доступными ядрами NeuronCores, они снизили затраты на логические выводы на 85 % (исходя из текущих общедоступных цен на Amazon EC2 по запросу).

Предсказание намерения запроса

Учитывая требование P99 к задержке в 10 миллисекунд или меньше, команда загрузила модель во все доступные экземпляры NeuronCore на экземплярах inf1.6xlarge. Вы можете легко сделать это с помощью PyTorch Neuron, используя torch.neuron.DataParallel API. При развертывании Inf1 задержка модели составляла 3 миллисекунды, сквозная задержка составляла примерно 10 миллисекунд, а максимальная пропускная способность при пиковой нагрузке достигала 16,000 XNUMX TPS.

Начните с примера кода компиляции и развертывания

Ниже приведен пример кода, который поможет вам приступить к работе с инстансами Inf1 и реализовать преимущества производительности и затрат, как команда Amazon Search. Мы покажем, как скомпилировать и выполнить вывод с помощью модели PyTorch, используя ПиТорч Нейрон.

Сначала модель компилируется с torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

Полный список возможных аргументов для trace метод, см. Python API трассировки PyTorch-Neuron. Как вы видете, аргументы компилятора может быть передан в torch.neuron API напрямую. Все операторы FP32 приводятся к BF16 with --fp32-cast=all, обеспечивая высочайшую производительность при сохранении динамического диапазона. Доступны дополнительные параметры приведения, позволяющие контролировать производительность для достижения компромисса в точности моделирования. Модели, используемые для обоих вариантов использования, были скомпилированы для одного NeuronCore (без конвейерная).

Затем мы загружаем модель в Inferentia с помощью torch.jit.loadи используйте его для предсказания. Нейронная среда выполнения автоматически загружает модель в NeuronCores.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

Заключение

Команде Amazon Search удалось сократить свои затраты на инференс на 85 % с помощью инстансов Inf1 на базе AWS Inferentia в условиях интенсивного трафика и высоких требований к производительности. AWS Inferentia и Neuron SDK предоставили команде возможность оптимизировать процесс развертывания отдельно от обучения, а также упростили процесс обучения с помощью комплексных инструментов и знакомых API-интерфейсов фреймворка.

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


Об авторах

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Жоао Моура является специалистом по архитектуре решений AI/ML в Amazon Web Services. Он в основном сосредоточен на примерах использования НЛП и помогает клиентам оптимизировать обучение и развертывание модели глубокого обучения. Он также является активным сторонником специализированного оборудования для машинного обучения и решений для машинного обучения с низким кодом.

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Вэйци Чжан является менеджером по разработке программного обеспечения в Search M5, где он работает над созданием крупномасштабных моделей для приложений машинного обучения Amazon. Его интересы включают поиск информации и инфраструктуру машинного обучения.

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Джейсон Карлсон — инженер-программист, занимающийся разработкой конвейеров машинного обучения, чтобы помочь сократить количество украденных результатов поиска из-за дубликатов, воспринимаемых клиентами. В основном он работает с Apache Spark, AWS и PyTorch, помогая развертывать и подавать/обрабатывать данные для моделей машинного обучения. В свободное время он любит читать и ходить на пробежки.

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Шаохуэй Си является SDE в команде Search Query Understanding Infra. Он возглавляет усилия по созданию крупномасштабных онлайн-сервисов логического вывода для глубокого обучения с низкой задержкой и высокой доступностью. Вне работы он любит кататься на лыжах и пробовать вкусные блюда.

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Чжуоци Чжан является инженером-разработчиком программного обеспечения в группе Search Query Understanding Infra. Он работает над созданием платформ обслуживания моделей, чтобы уменьшить задержку и пропускную способность для онлайн-сервисов глубокого обучения. Вне работы он любит играть в баскетбол, кататься на сноуборде и водить машину.

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Хаовэй Сан — инженер-программист в команде Search Query Understanding Infra. Она занимается разработкой API и инфраструктуры, поддерживающих онлайн-сервисы глубокого обучения. В круг ее интересов входит проектирование сервисных API, настройка инфраструктуры и техническое обслуживание. Вне работы она любит бегать, ходить в походы и путешествовать.

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Jaspreet Singh — ученый-прикладник в команде M5, где он работает над крупномасштабными базовыми моделями, чтобы улучшить покупательский опыт. Его исследовательские интересы включают многозадачное обучение, поиск информации и репрезентативное обучение.

Как Amazon Search сократил затраты на логические выводы ML на 85 % с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Шрути Копаркар является старшим менеджером по маркетингу продуктов в AWS. Она помогает клиентам исследовать, оценивать и внедрять инфраструктуру ускоренных вычислений EC2 для своих потребностей в машинном обучении.

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

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