EXPEDIA GROUP ТЕХНОЛОГИИ — ДАННЫЕ
Ускорение вывода моделей НЛП с помощью DistillBERT и ONNX
Баланс скорости и точности
Expedia Group™️ выступает в качестве агента по бронированию всех видов путешествий. Проблема, с которой мы боролись, заключается в том, что отель (или аренда жилья на время отпуска, деятельность и т. д.) публикует общедоступную контактную информацию через нашу платформу, которая позволяет осуществлять прямое бронирование. Это действие нарушает наши соглашения об обслуживании, и мы должны обнаружить, если это произойдет. Кроме того, этот механизм необходимо масштабировать для просмотра постоянного потока данных, генерируемых бронированиями, обновлениями веб-сайтов, обновлениями клиентов и т. д.
Это не уникальная проблема в индустрии туризма. Его можно обобщить для проверки целого класса финансовых и юридических соглашений на постоянной основе. Скорость имеет существенное значение; быстрое обнаружение нарушений защищает жизнеспособность платформы и предотвращает возможное мошенничество.
Нам нужны решения в режиме реального времени на основе неструктурированных данных, но подойдет ли для этой задачи большая языковая модель? Мы начали с BERT [1], модели машинного обучения на основе преобразователя с открытым исходным кодом для обработки естественного языка (NLP). После запуска выборочных данных мы обнаружили, что они могут надежно давать нам выводы, но слишком медленно.
На самом деле не было никакого способа получить результаты в рамках ограничений нашего соглашения об уровне обслуживания (SLA). Имитация каждого звонка со списком описаний из 500 и более слов модели занимала до 2 секунд. Скорость была слишком низкой для вышестоящих сервисов и не соответствовала обещанному нами соглашению об уровне обслуживания 250 миллисекунд.
Именно тогда мы отправились на путь повышения скорости при сохранении надежности логического вывода. Мы сразу перешли к стандартным методам сжатия моделей, которые легко доступны и с которыми мы уже были знакомы:
- Дистилляция знаний (KD) Передача знаний от учителя к ученику позволяет уменьшить размер модели.
- Сжатие графов с помощью Open Neural Network Exchange (ONNX) позволяет передавать данные во множество различных сред. Он также имеет возможности обучения.
- Использование специализированного оборудования, такого как процессоры GPU/Xeon, посредством обмена AWS.
Мы использовали эти методы для повышения скорости без существенного влияния на точность модели.
Немного о дистилляции знаний (KD)
В машинном обучении дистилляция знаний относится к переносу знаний из большой модели в меньшую. Конечная цель состоит в том, чтобы разработать точные модели, которые более эффективны в вычислительном отношении.
Короче говоря, мы хотим перенести знания из более крупных моделей (например, глубоких нейронных сетей) в более мелкие модели (например, неглубокие нейронные сети).
Одним из решений является использование техники, называемой дистилляцией знаний. Это включает в себя «перегонку» знаний из вашей большой модели в новую, меньшую по размеру, более управляемую и с которой легче работать.
Общая идея выполнения КД заключается в следующем.
- Используйте предварительно обученную модель учителя
- Возьмите некоторые обучающие данные, на которых вы хотите обучить модель Student.
- Передача данных через модель учителя для создания мягких меток (фактические метки являются «жесткими» метками)
- Обучить модель Student на данных + программные метки
Существует несколько способов преобразовать знания модели Учителя в более простую модель Ученика. Основными методами являются Multi-teacher, Offline и Online.
Подходы с участием нескольких учителей выигрывают от более разнообразных источников данных и, в некоторых случаях, от менее предвзятых данных. Для офлайн-КД обучается Учитель, а затем модель передается непосредственно Ученику. И наоборот, онлайн-KD использует результат ансамбля из нескольких программных целевых моделей Student для создания модели Student.
Метод № 1: Используйте DistilBERT вместо BERT
- DistilBERT [2] имеет ту же общую архитектуру, что и BERT, но только половину уровней BERT.
- Обучение DistilBERT на восьми графических процессорах V100 емкостью 16 ГБ заняло около 90 часов.
- KD выполняется на этапе предварительной подготовки, уменьшая размер BERT на 40 %, сохраняя при этом точность 97 % и ускоряясь на 60 %.
Метод № 2: Преобразование модели в ONNX
- Преобразуйте модель DistilBERT в формат ONNX.
- Фактически это сериализованный формат для представления модели, который дополнительно функционирует как метод сжатия модели [3].
Метод № 3: используйте подходящий тип экземпляра AWS
- Используйте тип экземпляра inf1.6xlarge, чтобы еще больше снизить задержку (опубликованное улучшение в 2,3 раза).
- 24 виртуальных процессора, 48 ГБ памяти
- 4 микросхемы AWS Inferentia, предназначенные для логического вывода, с большим объемом встроенной кэш-памяти и скоростью 128 TOPS.
- Гораздо лучше, чем типы инстансов g4dn.2xlarge (GPU) и c5–9xlarge (интенсивные вычисления).
Наш запрос/ответ
Запрос
{ "transactionContext": { "transactionId": "123456" }, "attributes": { "listingDescription": "Near Xel Casino and the Cosmo Casino, the Tenebian Resort Las Vegas provides a casino, a nightclub, and a grocery/convenience store. For those looking to try their luck, this resort boasts a sportsbook, 137 casino gaming tables, and 7 casino VIP rooms. Indulge in a hot stone massage, a manicure/pedicure, and hydrotherapy at City Ranch Spa + Fitness, the onsite spa. Be sure to enjoy a meal at any of the 21 onsite restaurants, which feature Asian cuisine and happy hour. Yoga classes and aerobics classes are offered at the gym." } }
Ответ
{ "modelCode": "DistilBertNLPSupplyListingDescHA", "modelVersion": "1.0", "refreshVersion": "v20211220", "probabilityScore": "1.02e-10", "modelSegment": "SUPPLY", "topContributor": "listingDescription", "scoreDetails": { "label": "NonFraud" } }
Numbers
Примечания:
- Усреднено более 12 различных прогонов с использованием Apache Jmeter, бесплатного программного обеспечения Java с открытым исходным кодом для нагрузочного тестирования.
- Служба Predictor, работающая на AWS ECS с 1 экземпляром Fargate
Больше номеров
- Используемый тип экземпляра: inf1.6xlarge
- Каждый входной запрос: 512 токенов
Суть в том, что наша работа удалась. Мы достигли как наших целей по точности, так и наших целей по задержке. Нам удалось уменьшить задержку на 95 % (с 2 секунд до 110 миллисекунд) и уменьшить размер модели на27 %, при этом понизив точность всего на1 %. сильный>.
Следование этой общей процедуре должно работать для многих общих задач НЛП. Что касается нас, мы планируем использовать трехэтапную технику, описанную выше, для различных вариантов использования, которые у нас есть сегодня. Затем он переходит к следующему вызову.
Библиография
[3] Сжатие и оптимизация модели: зачем мыслить масштабнее, если можно мыслить меньше?