ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

ByteDance экономит до 60 % на затратах на логические выводы, сокращая задержку и увеличивая пропускную способность с помощью AWS Inferentia.

Это гостевой пост в блоге, написанный в соавторстве с Минхуэй Ю и Цзянжэ Сяо из Bytedance.

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

Команда ByteDance AML (прикладное машинное обучение) предоставляет высокопроизводительные, надежные и масштабируемые системы машинного обучения и комплексные услуги машинного обучения для бизнеса компании. Мы искали способы оптимизировать наши системы логического вывода ML, чтобы снизить затраты без увеличения времени отклика. Когда AWS запустили Вывод AWS, высокопроизводительный чип логического вывода машинного обучения, специально созданный AWS, мы обратились к нашей команде по работе с клиентами AWS, чтобы проверить, может ли AWS Inferentia решить наши задачи по оптимизации. Мы провели несколько проверок концепции, что привело к снижению стоимости логического вывода на 60 % по сравнению с инстансами EC4 G2dn на базе графического процессора T4 и уменьшению задержки логического вывода на 25 %. Чтобы реализовать эту экономию средств и повышение производительности, мы решили развернуть модели на базе AWS Inferentia. Эластичное вычислительное облако Amazon (Amazon EC2) Экземпляры Inf1 в производстве.

На следующей диаграмме показано уменьшение задержки для одной из наших моделей распознавания лиц, которая ранее была развернута на графических процессорах с Tensor RT. Средняя задержка уменьшилась на 20% (с 50 миллисекунд до 40 миллисекунд), а задержка p99 уменьшилась на 25% (с 200 миллисекунд до 150 миллисекунд).

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

В поисках высокопроизводительных и экономичных вычислений

Команда ByteDance AML занимается исследованием и внедрением передовых систем машинного обучения и необходимых им разнородных вычислительных ресурсов. Мы создаем крупномасштабные системы обучения и логического вывода для широкого спектра рекомендательных моделей, моделей обработки естественного языка (NLP) и компьютерного зрения (CV). Эти модели очень сложны и обрабатывают огромное количество данных со многих контентных платформ, на которых работает ByteDance. Для развертывания этих моделей требуются значительные ресурсы графического процессора, будь то в облаке или локально. Следовательно, затраты на вычисления для этих систем логического вывода довольно высоки.

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

Наша команда AWS узнала, что инстансы EC2 Inf1 на базе AWS Inferentia обеспечивают высокопроизводительный вывод машинного обучения при самой низкой цене за вывод в облаке. Нам было любопытно изучить их, и мы обнаружили, что они хорошо подходят для нашего варианта использования, потому что мы запускаем существенное машинное обучение на больших объемах изображений, объектов, речи и текстовых данных. Они определенно хорошо подходили для наших целей, потому что мы могли добиться значительной экономии средств, учитывая сложность наших моделей и объем ежедневных прогнозов. Кроме того, AWS Inferentia имеет большой объем встроенной памяти, которую можно использовать для кэширования больших моделей вместо их хранения вне микросхемы. Мы признали, что это может значительно снизить задержку логического вывода, поскольку вычислительные ядра AWS Inferentia, называемые NeuronCores, имеют высокоскоростной доступ к моделям, которые хранятся во встроенной памяти и не ограничены внешней памятью. пропускная способность.

В конечном счете, после оценки нескольких вариантов, мы выбрали инстансы EC2 Inf1 из-за их лучшего соотношения производительности и цены по сравнению с инстансами G4dn и локальными инстансами NVIDIA T4. Вместе с командой AWS мы провели цикл непрерывной итерации, чтобы раскрыть преимущества цены и производительности Inf1.

Развертывание рабочих нагрузок логического вывода на AWS Inferentia

Начало работы с AWS Inferentia с помощью AWS Neuron SDK включало два этапа: компиляцию кода модели и развертывание на инстансах Inf1. Как это обычно бывает при перемещении моделей машинного обучения в любую новую инфраструктуру, мы столкнулись с некоторыми проблемами. Мы смогли преодолеть эти трудности благодаря усердию и поддержке со стороны нашей команды AWS. В следующих разделах мы поделимся несколькими полезными советами и наблюдениями, основанными на нашем опыте развертывания рабочих нагрузок вывода на AWS Inferentia.

Конформная модель для OCR

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

  • Оптимизация компилятора – По умолчанию Inferentia лучше всего работает с входными данными с фиксированной длиной последовательности, что представляет собой проблему, поскольку длина текстовых данных не является фиксированной. Чтобы преодолеть это, мы разделили нашу модель на две части: кодер и декодер. Мы скомпилировали эти две подмодели отдельно, а затем объединили их в одну модель с помощью TorchScript. Благодаря запуску потока управления циклом for на ЦП этот подход обеспечил поддержку переменных длин последовательностей в Inferentia.
  • Производительность глубокой свертки – Мы столкнулись с узким местом прямого доступа к памяти в операции глубокой свертки, которая активно используется в нашей модели конформера. Мы тесно сотрудничали с командой AWS Neuron, чтобы определить и устранить узкое место в производительности доступа DMA, что позволило повысить производительность этой операции и повысить общую производительность нашей модели OCR.

ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Мы создали два новых варианта модели, чтобы оптимизировать наше развертывание в Inferentia:

  • Комбинированный и развернутый кодер/декодер — Вместо того, чтобы использовать независимо скомпилированные энкодер и декодер, мы объединили энкодер и полностью развернутый декодер в единую модель и скомпилировали эту модель как единый NEFF. Развертывание декодера позволяет запустить весь поток управления декодером в Inferentia без использования каких-либо операций ЦП. При таком подходе каждая итерация декодера использует ровно столько вычислительных ресурсов, сколько необходимо для этого токена. Этот подход повышает производительность, потому что мы значительно сокращаем избыточные вычисления, которые ранее были связаны с заполнением входных данных. Кроме того, нет необходимости передавать данные из Inferentia в ЦП между итерациями декодера, что значительно сокращает время ввода-вывода. Эта версия модели не поддерживает раннюю остановку.
  • Разделенный развернутый декодер – Подобно комбинированной полностью развернутой модели, этот вариант модели развертывает несколько итераций декодера и компилирует их как одно выполнение (но не включает кодировщик). Например, для максимальной длины последовательности 75 мы можем развернуть декодер на 3 раздела, которые вычисляют токены 1–25, 26–50 и 51–75. С точки зрения ввода-вывода это также значительно быстрее, потому что нам не нужно передавать выходные данные кодировщика один раз за каждую итерацию. Вместо этого выходные данные передаются только один раз для каждого раздела декодера. Эта версия модели поддерживает раннюю остановку, но только на границах раздела. Границы разделов можно настроить для каждого конкретного приложения, чтобы обеспечить выполнение большинства запросов только одним разделом.

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

  • Тензорная дедупликация и уменьшенные копии — Это оптимизация компилятора, которая значительно уменьшает размер развернутых моделей и количество инструкций/доступа к памяти за счет повторного использования тензоров для повышения эффективности использования пространства.
  • Сокращенные инструкции – Это оптимизация компилятора, которая используется с версией декодера без дополнений, чтобы значительно сократить общее количество инструкций.
  • Многоядерная дедупликация — Это оптимизация времени выполнения, которая является альтернативой тензорной дедупликации. С этой опцией все многоядерные модели будут значительно эффективнее использовать пространство.

Модель ResNet50 для классификации изображений

ResNet-50 — это предварительно обученная модель глубокого обучения для классификации изображений. Это сверточная нейронная сеть (CNN или ConvNet), которая чаще всего применяется для анализа визуальных образов. Мы использовали следующие методы, чтобы улучшить производительность этой модели на Inferentia:

  • Преобразование модели – Многие модели ByteDance экспортируются в формат ONNX, который Inferentia в настоящее время изначально не поддерживает. Для обработки этих моделей ONNX команда AWS Neuron предоставила сценарии для преобразования наших моделей из формата ONNX в модели PyTorch, которые можно напрямую скомпилировать для Inferentia с помощью torch-neuron.
  • Оптимизация производительности – Мы тесно сотрудничали с АВС Нейрон команда по настройке эвристики планирования в компиляторе для оптимизации производительности наших моделей ResNet-50.

Мультимодальная модель модерации контента

Наша мультимодальная модель глубокого обучения представляет собой комбинацию нескольких отдельных моделей. Размер этой модели относительно велик, что привело к сбоям при загрузке модели в Inferentia. Команда AWS Neuron успешно решила эту проблему, используя распределение веса для уменьшения использования памяти устройства. Команда Neuron выпустила эту функцию дедупликации веса в библиотеке Neuron libnrt, а также улучшила Neuron Tools для более точных показателей. Функцию дедупликации весов во время выполнения можно включить, задав следующую переменную среды перед запуском логического вывода:

NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1

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

Перенос большего количества моделей в AWS Inferentia

В ByteDance мы продолжаем развертывать инновационные модели глубокого обучения, чтобы предоставить восхитительный пользовательский опыт почти 2 миллиардам активных пользователей в месяц. Учитывая огромные масштабы нашей деятельности, мы постоянно ищем способы сократить расходы и оптимизировать производительность. Мы продолжим перенос моделей на AWS Inferentia, чтобы воспользоваться его высокой производительностью и экономичностью. Мы также хотим, чтобы AWS запускала больше типов инстансов на основе AWS Inferentia, например инстансов с большим количеством виртуальных ЦП для задач предварительной обработки. В будущем ByteDance надеется увидеть больше кремниевых инноваций от AWS, чтобы обеспечить лучшее соотношение цены и качества для приложений машинного обучения.

Если вам интересно узнать больше о том, как AWS Inferentia может помочь вам сократить расходы и оптимизировать производительность ваших приложений для логического вывода, посетите веб-сайт Инстансы Amazon EC2 Inf1 странице продукта.


Об авторах

ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Минхуэй Ю является старшим руководителем группы машинного обучения в ByteDance. В сферу его интересов входит ускорение вычислений с использованием искусственного интеллекта и система машинного обучения. Он очень интересуется гетерогенными вычислениями и компьютерной архитектурой в эпоху после Мура. В свободное время любит баскетбол и стрельбу из лука.

ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Цзянжэ Сяо является старшим инженером-программистом, руководителем группы AML в ByteDance. Его текущая работа сосредоточена на том, чтобы помочь бизнес-группе ускорить процесс развертывания модели и повысить производительность логического вывода модели. Вне работы любит играть на фортепиано.

ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Тянь Ши является старшим архитектором решений в AWS. Его основная сфера деятельности — аналитика данных, машинное обучение и бессерверные решения. Он увлечен тем, что помогает клиентам разрабатывать и создавать надежные и масштабируемые решения в облаке. В свободное время любит плавать и читать.

ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Цзя Донг является менеджером по работе с клиентами в AWS. Ей нравится узнавать об сервисах AWS AI/ML и помогать клиентам добиваться результатов в бизнесе, создавая для них решения. Вне работы Джиа любит путешествовать, заниматься йогой и смотреть фильмы.

ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Джонатан Лант — инженер-программист в Amazon, специализирующийся на разработке платформ машинного обучения. За свою карьеру он работал на всех должностях в области науки о данных, включая разработку моделей, развертывание инфраструктуры и оптимизацию аппаратного обеспечения.

ByteDance экономит до 60 % на затратах на логические выводы, сокращая при этом задержку и увеличивая пропускную способность с помощью AWS Inferentia PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Джошуа Ханнан — инженер по машинному обучению в Amazon. Он работает над оптимизацией моделей глубокого обучения для крупномасштабных приложений компьютерного зрения и обработки естественного языка.

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

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

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