Intel Sapphire Rapids ускоряет PyTorch Transformers: новые методы оптимизации для CPU

Intel выпустила вторую часть технической серии в блоге HuggingFace, посвящённую ускорению инференса моделей PyTorch Transformers на серверных процессорах Intel Xeon Scalable 4-го поколения (Sapphire Rapids). В статье описываются новые методы оптимизации, включая использование наборов инструкций AVX-

Intel Sapphire Rapids ускоряет PyTorch Transformers: новые методы оптимизации для CPU

Intel выпустила вторую часть технической серии в блоге HuggingFace, посвящённую ускорению инференса моделей PyTorch Transformers на серверных процессорах Intel Xeon Scalable 4-го поколения (Sapphire Rapids). В статье описываются новые методы оптимизации, включая использование наборов инструкций AVX-512 и AMX (Advanced Matrix Extensions), а также интеграцию с библиотекой Intel Extension for PyTorch (IPEX). Эти улучшения позволяют значительно повысить производительность при работе с трансформерными моделями на CPU, что особенно актуально для сред без GPU или при стремлении сократить затраты на инфраструктуру.

Почему оптимизация инференса на CPU важна для PyTorch Transformers

С ростом популярности больших языковых моделей (LLM) и моделей на основе Transformer, эффективный инференс на CPU становится критически важным для развёртывания в средах без GPU или для экономии затрат. Многие компании не могут позволить себе дорогие GPU-кластеры, поэтому оптимизация на CPU позволяет демократизировать доступ к NLP-моделям. Intel Sapphire Rapids с новыми инструкциями AMX обеспечивает значительное ускорение матричных операций, лежащих в основе трансформеров. Оптимизации Intel позволяют снизить задержки и увеличить пропускную способность, что делает серверы на Sapphire Rapids конкурентоспособными для задач NLP. Кроме того, использование CPU упрощает развёртывание в существующих инфраструктурах, не требуя дополнительных инвестиций в GPU.

Какие методы оптимизации предлагает Intel для PyTorch Transformers

В статье рассмотрены конкретные техники, которые можно применить для ускорения инференса. Во-первых, использование BF16 и INT8 точности с помощью AMX. AMX — это набор инструкций, специально разработанный для ускорения матричных умножений, которые являются основой операций attention в трансформерах. Переход на пониженную точность позволяет увеличить пропускную способность без существенной потери качества. Во-вторых, оптимизация операций attention через слияние ядер. Вместо того чтобы выполнять отдельные шаги attention последовательно, Intel предлагает объединить их в одно ядро, что уменьшает накладные расходы на вызовы функций и перемещение данных. В-третьих, настройка планировщика PyTorch для эффективного использования многопоточности. Sapphire Rapids поддерживает до 60 ядер на процессор, и правильная настройка планировщика позволяет загрузить все ядра, минимизируя простои. Приводятся бенчмарки, показывающие ускорение до 3x по сравнению с предыдущим поколением Xeon (Ice Lake) для моделей BERT и GPT-2. Код примеров доступен в репозитории Intel на GitHub, что позволяет разработчикам легко воспроизвести результаты и адаптировать их под свои задачи.

Как внедрить эти оптимизации в свой проект PyTorch

Для использования этих оптимизаций разработчикам необходимо установить Intel Extension for PyTorch (IPEX) и настроить модель на работу с ним. IPEX автоматически заменяет стандартные операции PyTorch на оптимизированные для Intel CPU версии. Также важно включить поддержку AMX в BIOS и убедиться, что используется последняя версия драйверов. Intel предоставляет подробные инструкции в репозитории GitHub, а также примеры кода для распространённых моделей, таких как BERT и GPT-2. Разработчики могут легко интегрировать эти оптимизации в существующие пайплайны, изменив всего несколько строк кода. Например, достаточно обернуть модель в ipex.optimize() и указать тип данных (BF16 или INT8). Дополнительно можно настроить количество потоков и применить слияние ядер для attention. Эти шаги не требуют глубоких знаний аппаратного обеспечения и доступны даже начинающим пользователям PyTorch.

Кого затронут эти улучшения Intel Sapphire Rapids

Разработчиков, использующих PyTorch для инференса Transformer-моделей на CPU, администраторов серверных кластеров, стремящихся к оптимизации затрат, а также исследователей, работающих над развёртыванием NLP-моделей в продакшене. Особенно полезны эти оптимизации для компаний, которые развёртывают модели на собственных серверах или в облачных средах с CPU-инстансами. Например, в сценариях реального времени, таких как чат-боты или системы рекомендаций, снижение задержки имеет решающее значение. Кроме того, оптимизации помогают снизить энергопотребление, так как более эффективное использование CPU позволяет выполнять больше запросов при той же мощности. Администраторы кластеров могут ожидать улучшения общей пропускной способности системы без дополнительных затрат на оборудование.

Что пока неизвестно об оптимизациях Intel для PyTorch Transformers

В статье не раскрываются детали производительности для самых больших моделей, например, GPT-3 масштаба, и не приводится сравнение с GPU-решениями. Также отсутствует информация о поддержке других фреймворков, таких как TensorFlow. Однако, учитывая, что PyTorch является одним из самых популярных фреймворков для NLP, эти оптимизации покрывают значительную часть потребностей рынка. Для пользователей TensorFlow Intel предлагает аналогичные инструменты, но в данной статье они не рассматриваются. Также не указано, как оптимизации влияют на точность моделей при использовании INT8. Обычно понижение точности приводит к небольшой потере качества, но Intel утверждает, что с помощью калибровки можно минимизировать этот эффект. В будущем можно ожидать расширения поддержки на другие модели и фреймворки, а также появления бенчмарков для более крупных моделей.

Заключение

Оптимизации Intel для PyTorch Transformers на Sapphire Rapids открывают новые возможности для развёртывания NLP-моделей на CPU. Использование AMX, слияние ядер и настройка многопоточности позволяют достичь ускорения до 3x по сравнению с предыдущим поколением. Это делает CPU-инференс конкурентоспособным для многих задач, особенно в условиях ограниченного бюджета. Разработчики могут легко внедрить эти оптимизации с помощью IPEX и примеров из репозитория Intel. Несмотря на некоторые нераскрытые вопросы, текущие результаты впечатляют и обещают дальнейшее развитие в области CPU-инференса для трансформеров.