Як Amazon Search зменшив витрати на ML на 85% за допомогою AWS Inferentia

Пошукова система продуктів Amazon індексує мільярди продуктів, обслуговує сотні мільйонів клієнтів у всьому світі та є однією з найбільш використовуваних послуг у світі. Команда Amazon Search розробляє технологію машинного навчання (ML), яка забезпечує Amazon.com пошукову систему та допомагає клієнтам шукати без зусиль. Щоб забезпечити чудовий досвід клієнтів і працювати у великих масштабах, необхідних для Amazon.com пошукової системи, ця команда завжди шукає шляхи створення більш економічно ефективних систем із затримкою в реальному часі та вимогами до пропускної здатності. Команда постійно досліджує апаратне забезпечення та компілятори, оптимізовані для глибокого навчання, щоб пришвидшити навчання моделі та логічний висновок, одночасно знижуючи операційні витрати в усіх напрямках.

У цій публікації ми описуємо, як використовує Amazon Search AWS Inferentia, високопродуктивний прискорювач, створений компанією AWS для прискорення робочих навантажень глибокого навчання. Команда проводить логічний висновок із низькою затримкою за допомогою моделей NLP на основі Transformer на базі AWS Inferentia Обчислювальна хмара Amazon Elastic (Amazon EC2) Інстанси Inf1 і заощаджує до 85% витрат на інфраструктуру, зберігаючи високу пропускну здатність і затримку.

Поглиблене навчання для передбачення дублікатів і запитів

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

  • Прогнози, що сприймаються клієнтами – Щоб показати найбільш релевантний список продуктів, які відповідають запиту користувача, важливо визначити продукти, які клієнтам важко розрізнити
  • Прогноз намірів запиту – Щоб адаптувати сторінку пошуку та макет продукту відповідно до того, що шукає клієнт, важливо передбачити намір і тип запиту користувача (наприклад, запит, пов’язаний із медіа, запит довідки та інші типи запитів)

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

Повторюване передбачення використовує різні текстові функції для пари оцінюваних продуктів як вхідні дані (наприклад, тип продукту, назву, опис тощо) і періодично обчислюється для великих наборів даних. Ця модель тренується від кінця до кінця в багатозадачному режимі. Завдання обробки Amazon SageMaker використовуються для періодичного запуску цих пакетних робочих навантажень, щоб автоматизувати їх запуск і платити лише за використаний час обробки. Для цього випадку використання пакетного робочого навантаження вимога до пропускної здатності висновку становила 8,800 загальних TPS.

Передбачення намірів приймає текстовий запит користувача як вхідні дані та потрібне в режимі реального часу для динамічного обслуговування щоденного трафіку та покращення взаємодії з користувачем на Amazon Marketplace. Модель навчається на меті багатокласової класифікації. Потім цю модель розгортають Служба еластичних контейнерів Amazon (Amazon ECS), що забезпечує швидке автоматичне масштабування та легке визначення та керування розгортанням. Оскільки це випадок використання в режимі реального часу, вимагалося, щоб затримка P99 була менше 10 мілісекунд, щоб забезпечити чудову взаємодію з користувачем.

AWS Inferentia та AWS Neuron SDK

Екземпляри EC2 Inf1 працюють на базі AWS Inferentia, першого прискорювача ML, створеного AWS для прискорення робочих навантажень глибокого навчання. Екземпляри Inf1 забезпечують у 2.3 рази вищу пропускну здатність і до 70% нижчу вартість одного висновку, ніж аналогічні екземпляри EC2 на основі GPU. Ви можете продовжувати тренувати свої моделі за допомогою вибраного фреймворку (PyTorch, TensorFlow, MXNet), а потім легко розгортати їх на AWS Inferentia, щоб скористатися перевагами вбудованої оптимізації продуктивності. За допомогою екземплярів Inf1 можна розгортати широкий діапазон типів моделей, від розпізнавання зображень, виявлення об’єктів, обробки природної мови (NLP) до сучасних моделей рекомендацій.

AWS нейрон це набір для розробки програмного забезпечення (SDK), що складається з компілятора, середовища виконання та інструментів профілювання, які оптимізують продуктивність логічного висновку екземплярів EC2 Inf1. Neuron інтегровано з популярними фреймворками ML, такими як TensorFlow і PyTorch. Таким чином, ви можете розгортати моделі глибокого навчання на AWS Inferentia за допомогою тих самих знайомих API, які надає обраний вами фреймворк, і отримати вигоду від підвищення продуктивності та найнижчої ціни за висновок у хмарі.

З моменту запуску Neuron SDK продовжував розширювати спектр моделей, які він підтримує, продовжуючи покращувати продуктивність і зменшувати витрати на логічні висновки. Це включає моделі NLP (BERT), моделі класифікації зображень (ResNet, VGG) і моделі виявлення об’єктів (OpenPose і SSD).

Розгортайте на примірниках Inf1 для низької затримки, високої пропускної здатності та економії коштів

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

Прогнози, що сприймаються клієнтами

До використання Inf1 спеціальний файл Amazon EMR кластер працював з використанням екземплярів на основі ЦП. Не покладаючись на апаратне прискорення, потрібна була велика кількість екземплярів, щоб задовольнити вимогу щодо високої пропускної здатності 8,800 транзакцій за секунду. Команда перейшла на екземпляри inf1.6xlarge, кожен з яких мав 4 прискорювачі AWS Inferentia та 16 NeuronCores (4 ядра на чіп AWS Inferentia). Вони простежили модель на основі Transformer для одного NeuronCore і завантажили один режим на NeuronCore, щоб максимізувати пропускну здатність. Використовуючи переваги 16 доступних NeuronCores, вони зменшили витрати на логічні висновки на 85% (виходячи з поточної загальнодоступної ціни Amazon EC2 on-demand).

Прогноз намірів запиту

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

Почніть із зразка компіляції та коду розгортання

Нижче наведено зразок коду, який допоможе вам розпочати роботу з екземплярами Inf1 і реалізувати продуктивність і економічні переваги, як команда Amazon Search. Ми показуємо, як компілювати та виконувати висновки за допомогою моделі PyTorch, використовуючи Нейрон 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 спосіб, див PyTorch-Neuron trace Python API. Як ви можете бачити, аргументи компілятора можна передати в torch.neuron API безпосередньо. Усі оператори FP32 приводяться до BF16 with --fp32-cast=all, забезпечуючи найвищу продуктивність зі збереженням динамічного діапазону. Доступно більше параметрів кастингу, які дозволяють контролювати продуктивність для компромісу з точністю моделі. Моделі, використані для обох варіантів використання, були скомпільовані для одного NeuronCore (№ трубопроводи).

Потім ми завантажуємо модель на Inferentia за допомогою torch.jit.load, і використовувати його для передбачення. The Час роботи нейрона автоматично завантажує модель у 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.

Ви можете розблокувати ефективність і економічні переваги, розпочавши роботу зі зразком коду, наданим у цій публікації. Також перевірте наскрізність навчальні посібники для запуску моделей ML на Inferentia PyTorch та TensorFlow.


Про авторів

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Жоао Моура є архітектором спеціалістів із штучного інтелекту та ML в Amazon Web Services. Він здебільшого зосереджений на випадках використання НЛП і допомагає клієнтам оптимізувати навчання та розгортання моделі глибокого навчання. Він також є активним прихильником апаратного забезпечення, спеціалізованого на ML, і рішень ML з низьким кодом.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Вейці Чжан є менеджером з розробки програмного забезпечення в Search M5, де він працює над створенням великомасштабних моделей для програм машинного навчання Amazon. Його інтереси включають пошук інформації та інфраструктуру машинного навчання.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Джейсон Карлсон є інженером-програмістом для розробки конвеєрів машинного навчання, щоб допомогти зменшити кількість вкрадених пошукових показів через дублікати, які сприймаються клієнтами. Він здебільшого працює з Apache Spark, AWS і PyTorch, щоб допомогти розгорнути та подавати/обробляти дані для моделей ML. У вільний час любить читати та бігати.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Шаохуей Сі є SDE у команді Search Query Understanding Infra. Він очолює роботу зі створення широкомасштабних онлайн-сервісів глибокого навчання з низькою затримкою та високою доступністю. Поза роботою він любить кататися на лижах і вивчати смачну їжу.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Чжуоці Чжан є інженером із розробки програмного забезпечення в команді Search Query Understanding Infra. Він працює над розробкою фреймворків обслуговування моделей для покращення затримки та пропускної здатності для сервісів онлайн-логічного висновку глибокого навчання. Поза роботою він любить грати в баскетбол, кататися на сноуборді та їздити.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Haowei Sun є інженером-програмістом у команді Search Query Understanding Infra. Вона працює над розробкою API та інфраструктури для підтримки онлайн-сервісів глибокого навчання. Її інтереси включають проектування API сервісу, налаштування інфраструктури та обслуговування. Поза роботою вона захоплюється бігом, походами та подорожами.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Джасприт Сінгх є прикладним науковцем у команді M5, де він працює над великомасштабними моделями основи для покращення досвіду покупців. Його наукові інтереси включають багатозадачне навчання, пошук інформації та репрезентативне навчання.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Шруті Копаркар є старшим менеджером з маркетингу продуктів в AWS. Вона допомагає клієнтам вивчити, оцінити та застосувати прискорену обчислювальну інфраструктуру EC2 для потреб машинного навчання.

Часова мітка:

Більше від AWS Машинне навчання