Ускорение BERT на CPU в 7 раз: оптимизация инференса на современных процессорах

Инженеры Hugging Face показали, как ускорить инференс BERT-подобных моделей на современных CPU в 7 раз без потери качества. Рассказываем, какие техники оптимизации для этого используются и как это повлияет на развертывание ИИ-моделей.

Ускорение BERT на CPU в 7 раз: оптимизация инференса на современных процессорах

Инференс BERT-подобных моделей на CPU — одна из самых горячих тем в мире искусственного интеллекта. Многие компании, особенно в банковской сфере и ритейле, не могут использовать GPU из-за стоимости и требований к безопасности, поэтому вынуждены запускать модели на обычных процессорах. Команда Hugging Face опубликовала вторую часть своего исследования, посвященного масштабированию инференса BERT на современных CPU, и результаты впечатляют: производительность выросла в 7 раз по сравнению с базовым вариантом.

Как Hugging Face ускорила инференс BERT на CPU в 7 раз

В статье, опубликованной в официальном блоге Hugging Face, инженеры описывают набор техник, которые позволили достичь значительного ускорения. Ключевые методы включают использование интринсик Intel AMX, оптимизацию памяти, компиляцию с помощью IPEX (Intel Extension for PyTorch) и применение блочного квантования. Эти подходы позволяют эффективно использовать возможности современных процессоров, таких как Intel Xeon Scalable, и сократить время выполнения задач NLP.

В ходе экспериментов использовалась модель BERT-base, одна из самых популярных для задач классификации текста и поиска. Базовый вариант, запущенный без оптимизаций, показал задержку около 10 миллисекунд на один запрос. После применения всех оптимизаций задержка сократилась до 1,4 миллисекунды — это в 7 раз быстрее. Такое улучшение делает возможным использование BERT для высоконагруженных систем реального времени, где раньше приходилось выбирать между скоростью и качеством.

Предыстория и контекст: почему оптимизация CPU-инференса стала критически важной

Интерес к CPU-инференсу объясняется рядом факторов. Во-первых, GPU-кластеры дороги и требуют значительных капитальных затрат. Во-вторых, многие организации обрабатывают чувствительные данные, которые нельзя отправлять в облако. Поэтому локальное развертывание на CPU-серверах остается привлекательным, но до недавнего времени производительность оставляла желать лучшего.

Первая часть исследования, опубликованная ранее, заложила основу: было показано, что с помощью IPEX и динамического квантования можно ускорить инференс в 2-3 раза. Вторая часть развивает эти идеи, добавляя новые техники и более глубокую оптимизацию. Это часть более широкого тренда в индустрии: компании, такие как Intel и Google, активно работают над тем, чтобы сделать ИИ доступным на обычном оборудовании.

Какие техники оптимизации использовались и как они работают?

Основной прирост производительности дало использование интринсик Intel AMX (Advanced Matrix Extensions) — набора инструкций для ускорения матричных операций, которые лежат в основе нейронных сетей. AMX позволяет выполнять операции с матрицами в 8 раз быстрее, чем традиционные AVX-512. Однако для их применения требуется специальная компиляция и поддержка со стороны библиотек, таких как oneDNN.

Вторым важным фактором стала оптимизация памяти. Авторы использовали технику, называемую "fusion" — объединение нескольких операций в одну, чтобы уменьшить количество обращений к памяти. Это особенно важно для CPU, где пропускная способность памяти часто является узким местом. Также применялось блочное квантование, которое уменьшает размер модели в памяти без значительной потери точности.

Наконец, ключевую роль сыграла компиляция с помощью IPEX. Intel Extension for PyTorch автоматически применяет оптимизации, такие как замена операторов на более эффективные реализации, и обеспечивает поддержку AMX. В сочетании с другими методами это дало синергетический эффект.

Технические подробности: как измерили ускорение и что влияет на результат

Для оценки производительности использовался стандартный бенчмарк из библиотеки Optimum Intel, который измеряет задержку и пропускную способность. Тесты проводились на сервере с процессором Intel Xeon 8480+ (Sapphire Rapids) с 56 ядрами. Модель BERT-base была запущена в двух режимах: с батчем 1 (для задач реального времени) и с батчем 128 (для пакетной обработки). В обоих случаях оптимизированная версия показала значительное превосходство.

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

Кого затронет это ускорение и как оно изменит практику

Разработчики, использующие BERT-подобные модели в производстве, получат возможность значительно сократить затраты на инфраструктуру. Вместо того чтобы арендовать GPU-инстансы, можно будет использовать обычные CPU-серверы, которые уже есть в наличии. Это особенно актуально для компаний в России и СНГ, где доступ к GPU может быть ограничен из-за санкций и логистических сложностей.

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

Кроме того, эти техники могут быть применены к другим моделям, таким как RoBERTa, DistilBERT и даже некоторым вариантам GPT, что расширяет область применения.

Что дальше: развитие оптимизаций и открытые вопросы

Авторы планируют продолжить работу в нескольких направлениях. Во-первых, они хотят исследовать возможность использования AMX для других архитектур, таких как модели с длинным контекстом. Во-вторых, планируется интеграция этих оптимизаций в библиотеку Transformers, чтобы разработчики могли получить ускорение "из коробки" без дополнительных усилий.

Также остаются открытые вопросы: как эти техники поведут себя на процессорах AMD, и насколько они масштабируются на кластерах из нескольких узлов. Вероятно, в ближайших версиях IPEX и Optimum Intel мы увидим новые инструменты для автоматической оптимизации, которые сделают высокую производительность доступной даже неспециалистам.

Итог

Оптимизация инференса BERT на CPU — это не просто техническое достижение, а шаг к демократизации ИИ. Благодаря работе Hugging Face и Intel, теперь возможно запускать сложные модели на обычном оборудовании с приемлемой скоростью. Это открывает новые возможности для бизнеса и разработчиков, которые ищут баланс между производительностью и стоимостью. Следите за обновлениями библиотек — в ближайшем будущем эти ускорения станут доступны каждому.