Fpga ускоряет обработку естественного языка

Понимание архитектуры FPGA для ускорения ИИ

Полевые программируемые воротные массивы (FPGA) представляют собой интегральные схемы, функциональность которых определяется после изготовления через конфигурацию. В отличие от специализированных интегральных схем (ASIC), которые фиксируются на заводе, FPGA содержит плотную матрицу настраиваемых логических блоков (CLB), связанных программируемыми межсоединениями. Инженеры используют языки описания аппаратного обеспечения, такие как VHDL или Verilog, наряду с современными инструментами для описания пользовательских цифровых схем (HLS), чтобы отображать пользовательские цифровые схемы непосредственно на эти аппаратные ресурсы. Эта реконфигурируемость позволяет организациям создавать вычислительные трубопроводы, которые точно соответствуют шаблонам потока данных алгоритмов обработки естественного языка (NLP), обеспечивая ткань, которая предлагает высокую пропускную способность, низкую задержку и выдающуюся энергоэффективность - требования, теперь критически важные для развертывания языковых моделей в масштабе.

Фундаментальные строительные блоки включают в себя таблицы поиска (LUT) для произвольных булевых функций, флип-флопы для государственного хранения и специализированные срезы DSP для арифметики. Современные FPGA интегрируют закаленные блоки памяти, высокоскоростные приемопередатчики и даже ядра процессора на одном кристалле. Эта гетерогенная архитектура позволяет одному FPGA действовать как реконфигурируемый ускоритель, так и системный контроллер, уменьшая потребность в нескольких дискретных компонентах в краевых развертываниях. Для рабочих нагрузок NLP тот же чип, который обрабатывает токенизацию и встраивание поиска, также может управлять сетевыми коммуникациями и протоколами интерфейса хоста.

Почему FPGA Excel в NLP Workloads

Обработка естественного языка требует массивного параллелизма и предсказуемой реакции в реальном времени, особенно для таких задач, как токенизация, маркировка последовательностей и трансформаторный вывод. Традиционные процессоры борются с объемом умножения матриц и расчетов внимания, в то время как графические процессоры, хотя и мощные, часто сталкиваются с узкими местами пропускной способности памяти и потребляют значительную мощность. FPGA заполняют этот пробел, позволяя архитекторам проектировать пути данных, которые минимизируют движение данных и постоянно питают вычислительные единицы. Следующие характеристики делают их особенно подходящими для NLP:

Последние достижения показали, что FPGA-ускоренный BERT-база вывод, достигающий задержки до 2 мс на запрос на таких устройствах, как Xilinx Alveo U280 . В производстве компании сообщают о поддержании тысяч одновременных сеансов NLP на одной карте FPGA без ухудшения задержки хвоста.

Ускорение основных примитивов НЛП

Чтобы понять, как FPGA ускоряют NLP, он помогает разбить типичный конвейер на его вычислительно-интенсивные примитивы. Каждый из них может быть отображен на выделенные аппаратные блоки, и эти отображения показывают, почему FPGA превосходят процессоры общего назначения для этих конкретных задач.

Токенизация и предварительная обработка

Перед тем как модель увидит текст, строки ввода должны быть сегментированы на токены, нормализованы и преобразованы в целые идентификаторы. Токенизация традиционно связана с ЦП, но FPGA может реализовать высокоскоростную машину с конечным состоянием (FSM), которая параллелизует нормализацию Unicode и поиск словаря. Для крупномасштабных обслуживающих систем, обрабатывающих миллионы запросов в секунду, перемещение токенизации в ткань FPGA устраняет узкое место ЦП и уменьшает накладные расходы на передачу данных между хостом и ускорителем. Расширенные токенизаторы FPGA обрабатывают несколько символов за тактовый цикл с использованием параллельных компараторов, достигая пропускной способности, превышающей 10 ГБ / с для ввода текста.

Подход FSM распространяется на алгоритмы подслов, такие как BPE и WordPiece. Эти алгоритмы требуют повторных пропусков по входу для объединения наиболее частых пар, процесс, который может быть построен на аппаратном обеспечении. Реализуя очередь приоритета слияния в качестве систолического массива, FPGA завершают токенизацию BPE в микросекундах, а не миллисекундах, что делает предварительную обработку эффективно невидимой в сквозном бюджете задержки.

Встраивание Lookups

Таблицы встраивания слов и позиций для современных моделей НЛП могут содержать миллионы параметров. Вытаскивание этих векторов из DRAM сопряжено со значительной задержкой. Дизайнеры FPGA хранят наиболее часто используемые встраивания в память на чипе, создавая кэширующий слой, который поражает более 90% времени. С помощью таблицы, разделенной на несколько банков BRAM, FPGA может извлекать встраиваемые векторы для целой партии в одном цикле, питая последующие вычислительные блоки без остановки. Эта архитектура использует способность FPGA создавать истинные воспоминания с двумя портами с одновременным чтением и записью без спора.

Для размеров лексики, превышающих память на чипе, FPGA реализуют иерархические схемы поиска. Небольшой кэш общих токенов находится в BRAM, в то время как больший резервный магазин в HBM или DDR обслуживает редкие токены. Скорость попадания кэша улучшается еще больше благодаря изученным политикам замены, реализованным непосредственно в аппаратном обеспечении, адаптируясь к распределению токенов развернутой рабочей нагрузки. Этот подход сохраняет среднюю задержку поиска ниже 10 наносекунд даже для словарей 128K токенов или более.

Механизмы внимания

Операция самовнимания, лежащая в основе трансформаторных моделей, как известно, связана с памятью, поскольку требует вычисления оценок QK^T softmax по длинным последовательностям. На FPGA пользовательская схема вычисляет оценки внимания потоковым способом, повторно используя запросы и ключевые векторы из локальных буферов. Инженеры часто реализуют систолический массив элементов обработки (PEs) для последовательного выполнения умножений матриц, сохраняя промежуточные значения близко к PEs, чтобы избежать круговых поездок к нехиповой памяти. Этот подход сокращает время, затрачиваемое на внимание, от доминирующей доли общей задержки вывода до незначительных накладных расходов.

Сама функция softmax требует экспоненциации и нормализации по размеру последовательности. FPGA реализуют поштучно линейное приближение exp(x) с использованием только аддиторов и компараторов, избегая площади и стоимости мощности полной экспоненциации с плавающей точкой. В сочетании с конвейерным деревом сокращения для суммы нормализации softmax завершает в O(log N) тактовых циклах для последовательности длины N. Для длинных последовательностей, превышающих 4096 токенов, этот аппаратно-ускоренный softmax может быть в 10-20 раз быстрее, чем реализация GPU, которая должна считывать и записывать промежуточные значения из глобальной памяти.

Нормализация уровня и функции активации

Нормализация и функции активации, такие как GELU (Gaussian Error Linear Unit) или ReLU, не являются вычислительно тяжелыми по отдельности, но они появляются после каждого подслоя в трансформаторе. Накопление этих небольших задержек на десятках слоев может замедлить сеть. FPGA сливаются с операциями нормализации и активации непосредственно в вычислительный конвейер, применяя их на лету, когда данные покидают матричный двигатель. Этот синтез устраняет необходимость записывать промежуточные тензоры обратно в память, сохраняя полосу пропускания и уменьшая задержку.

Для GELU, включающего функцию ошибки erf(x), FPGA используют рациональное приближение, требующее только трёх умножений и одного дополнения, точного в пределах 0,1% от истинного математического значения. Это приближение потребляет всего несколько срезов DSP и может быть проложено по трубопроводу для получения одного результата за тактовый цикл. Нормализация уровня, требующая вычисления среднего и дисперсии скрытых состояний каждого токена, реализуется с использованием двухпропускной потоковой архитектуры, которая накапливает статистику по мере прохождения данных по вычислительному конвейеру, завершая нормализацию с нулевым дополнительным трафиком памяти.

Картографирование моделей трансформаторов на FPGA Fabric

Архитектура трансформатора является основой практически всех современных моделей НЛП, от BERT до вариантов GPT. Внедрение полного трансформатора на FPGA требует тщательного разделения конструкции. Как правило, стек кодера или декодера разворачивается на плане пола чипа, так что один физический элемент обработки обрабатывает один или несколько слоев модели. Следующие стратегии доказали свою эффективность:

Такие компании, как Intel и Microsoft продемонстрировали ускоренные трансформаторы FPGA в производстве для поиска Bing в реальном времени и когнитивных услуг Azure. Microsoft Project Brainwave развернула FPGA в своем глобальном парке центров обработки данных для ускорения вывода о глубоком обучении, включая модели на основе BERT для ранжирования поиска и понимания естественного языка.

Сравнение FPGA, GPU и ASIC для NLP

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

FPGA против GPU

GPU обеспечивают огромную вычислительную производительность с грубой силой и зрелую экосистему программного обеспечения (CUDA, cuDNN, TensorRT). Они преуспевают в обучении моделей с большим объемом текста и строгих требований к задержке хвоста. Однако для однопоточных запросов и строгих требований к задержке хвоста GPU могут быть неоптимальными, поскольку они планируют работу в деформациях и страдают от накладных расходов. FPGA обеспечивают более последовательную задержку и часто потребляют на 60-80% меньше энергии на вывод на компактных моделях. Усилия по программированию выше, но для приложений с чувствительной к задержке, таких как виртуальные помощники, преимущества перевешивают затраты. GPU также сталкиваются с тепловыми ограничениями в плотных развертываниях центров обработки данных, в то время как FPGA обычно работают в более плотных тепловых оболочках, позволяя более высокую плотность стойки без специализированного охлаждения.

В сценариях многопользовательского обслуживания графические процессоры борются с помехами между одновременными рабочими нагрузками из-за общей пропускной способности памяти и вычислительных ресурсов. Логика разделов FPGA в изолированных вычислительных доменах, каждый из которых имеет выделенные ресурсы памяти и обработки, обеспечивая истинную изоляцию на уровне оборудования между арендаторами. Это делает FPGA привлекательными для облачных провайдеров, предлагающих ускорение NLP в качестве управляемой службы, где согласованная производительность между арендаторами является ключевым требованием SLA.

FPGA против ASIC

Пользовательские ASIC (например, TPU от Google) предлагают максимальную эффективность и скорость для конкретной архитектуры модели. Но им не хватает программируемости: если модель изменяется или появляется новый оператор, ASIC может устареть. FPGA могут быть перенастроены для поддержки новых операторов, квантований или совершенно других семейств моделей без кремниевого разворота. Для исследовательских лабораторий и быстро развивающихся производственных услуг FPGA обеспечивают баланс производительности и маневренности. Проект Адаптивные ускорители для глубокого обучения показал, что FPGA могут соответствовать энергоэффективности ASIC в 2 раза при сохранении полной реконфигурируемости.

Общая стоимость владения ASIC должна учитывать риск архитектурных изменений в модельном ландшафте. Переход от LSTM к трансформаторам, а затем от архитектуры только кодера к архитектуре только декодера сделал многие пользовательские ASIC устаревшими. FPGA, напротив, были перенастроены для поддержки этих новых моделей в течение нескольких недель после публикации. Для организаций, развертывающих NLP в масштабе, но не имеющих объема для оправдания набора масок ASIC, FPGA предлагают наиболее привлекательную скорректированную на риск отдачу.

Практический рабочий процесс внедрения

Интеграция FPGA в трубопровод НЛП не является подключаемой и воспроизводимой. Систематический подход обеспечивает успех. В результате многочисленных производственных развертываний был усовершенствован следующий рабочий процесс:

  1. Модельный отбор и квантирование:] Выберите модель, которая соответствует памяти FPGA на чипе. Квантируйте веса и активации до INT8 или даже INT4, чтобы уменьшить затраты на хранение и арифметику. После обучения квантованию или квантованию-осознанное обучение сохраняет точность при сокращении площади модели. Для квантования INT4 такие методы, как групповое квантование и плавное квантование, поддерживают точность в пределах 0,5% от базового уровня FP32 для моделей до 7B параметров.
  2. Программно-аппаратное разделение: Определите, какие части конвейера работают на главном процессоре (например, пред-/пост-обработка, редкие операции) и какие на FPGA (например, основной график модели). Общие разветвления помещают кодер/декодер полностью на устройство. Такие операции, как поиск луча или выборка top-k, могут быть реализованы на FPGA или оставлены на процессоре в зависимости от бюджета задержки и аппаратных ресурсов.
  3. Дизайн ускорителя: Использование инструментов HLS, таких как Vitis HLS или Intel oneAPI, для описания вычислительных блоков в C/C++. Эти инструменты синтезируют RTL из высокоуровневого кода, резко сокращая время разработки. Ключевые оптимизации включают в себя раскрутку петли для выявления параллелизма, пиплайнинг для достижения интервалов инициации 1, и разделение массивов для параллельного доступа к памяти.
  4. Оптимизация памяти: Профилирование потока данных для выделения критических тензоров в памяти на чипе. Применение двойного буферинга для перекрытия передачи данных с вычислениями. Для моделей с рабочими наборами, превышающими емкость на чипе, реализовать стратегию наклона, которая разделяет вычисления на блоки, соответствующие BRAM, минимизируя трафик вне чипа. Оптимальный размер плитки зависит от соотношения вычислений к пропускной способности и обнаруживается с помощью анализа на крыше.
  5. Интеграция хоста: Напишите драйвер или используйте время выполнения, подобное XRT (Xilinx Runtime), для управления перемещением данных между хостом и FPGA. Обеспечить чистый API, который вызывает сервер приложений. API должен поддерживать как синхронный, так и асинхронный режимы выполнения, позволяя хосту перекрывать предварительную обработку с вычислениями FPGA для максимальной пропускной способности.
  6. Проверка и настройка: Тестирование с реальными рабочими нагрузками, измерением задержки, пропускной способности и мощности. Итерационное на HLS-прагмах (раскрутка петли, трубопроводирование, разделение массива) для закрытия времени и достижения целевых показателей производительности. Используйте логические анализаторы на чипе, такие как Xilinx ILA, для захвата времени аппаратного уровня и идентификации киосков трубопровода, не видимых в моделировании.

В недавней демонстрации инженерная команда ускорила генерацию токенов Mistral-7B с использованием Intel Agilex 7 FPGA, достигнув 12 токенов в секунду с мощностью менее 25 Вт. Команда реализовала механизм внимания группового запроса, который снижает требования к пропускной способности памяти в 8 раз по сравнению со стандартным многоголовым вниманием.

Случаи использования NLP в реальном времени

Ускорение FPGA сияет в сценариях, где каждый миллисекундный счет и энергетический бюджет напряжены. Сочетание детерминированной задержки, программируемости и энергоэффективности открывает приложения, которые были бы непрактичны с другими ускорителями:

Для каждого из этих приложений сочетание детерминированной задержки, программируемости и энергоэффективности делает FPGA привлекательной альтернативой как процессорам, так и графическим процессорам. Растущая доступность экземпляров FPGA в облачных сервисах демократизирует доступ, позволяя командам развертывать NLP с ускорением FPGA без предварительных инвестиций в оборудование.

Преодоление сложности развития

Одним из наиболее часто упоминаемых препятствий для внедрения FPGA является воспринимаемая сложность разработки аппаратного обеспечения. Хотя это и верно, когда HDL были единственным вариантом, ландшафт резко изменился. Экосистема созрела до такой степени, что инженер-программист без аппаратного обеспечения может разумно развернуть ускоритель FPGA в спринт-цикле:

По мере развития этих абстракций разрыв в навыках между инженерами-программистами и разработчиками аппаратного обеспечения продолжает сокращаться. Во многих современных проектах НЛП вся реализация FPGA осуществляется программно ориентированными инженерами ML с использованием потоков Python-to-RTL. Рост инфраструктуры компиляторов MLIR и CIRCT обещает еще больше автоматизировать отображение из описаний моделей высокого уровня для оптимизированных конфигураций FPGA, потенциально полностью исключая ручную оптимизацию HLS для архитектур стандартных моделей.

Пример: ускоренный BERT для ответа на вопросы

Заметный пример ускорения FPGA NLP приходит от команды крупного облачного провайдера. Они намеревались достичь задержки p99 менее 3 мс для экстрактивной модели QA на базе BERT на наборе данных SQuAD. Целью развертывания был двухсеконный сервер с картой Alveo U250. Команда квантовала модель с INT8, обрезала 70% головок внимания с минимальной потерей точности и нанесла на карту кодер на пользовательский систолический массив с 2048 многократно накапливаемыми блоками. На чипе HBM FPGA хранились все веса моделей и промежуточные активации для партии из 16 последовательностей. Результат: медианная задержка 1,8 мс, p99 2,9 мс, при этом потреблялось только 45 ватт для карты FPGA. Это представляло собой улучшение задержки в 4,2 раза и снижение мощности в 3,5 раза по сравнению с базовым GPU (NVIDIA T4), работающим по той же модели с TensorRT.

В рамках проекта были выделены несколько уроков, которые позволили учесть последующие развертывания НЛП ФПГА:

Такие тематические исследования теперь влияют на дизайн NLP-ускорителей следующего поколения на основе FPGA, которые направлены на обработку таких моделей, как Llama и Falcon, с десятками миллиардов параметров. Эти новые проекты используют модельный параллелизм между несколькими FPGA, с высокоскоростными межсоединениями, такими как Aurora или GTH, разделяющие промежуточные активации между устройствами.

Будущие направления

Заглядывая вперед, можно увидеть несколько тенденций, которые будут определять, как FPGA используются для задач НЛП. Эти разработки обещают сократить оставшийся разрыв в производительности с графическими процессорами, сохраняя при этом реконфигурируемость, которая делает FPGA уникальными:

По мере того, как языковые модели продолжают расти, индустрия признает, что универсальные графические процессоры не могут оптимально обслуживать весь спектр приложений NLP. FPGA выделяют постоянную нишу в чувствительных к задержкам, ограниченных по мощности и быстро развивающихся средах. Их способность превращаться из ускорителя BERT в движок вывода Llama в одночасье не имеет себе равных. Перенастройка, когда-то рассматриваемая как компромисс по отношению к ASIC, теперь признана стратегическим преимуществом в области, где состояние техники меняется каждые несколько месяцев.

Для практиков НЛП сейчас самое время исследовать ускорение FPGA. С надежными инструментами высокого уровня, облачной доступностью и растущим хранилищем IP с открытым исходным кодом барьер для входа никогда не был ниже. Путь от алгоритма к пользовательскому оборудованию больше не предназначен для разработчиков чипов - он становится стандартным навыком в инструментальном наборе инженера машинного обучения. Приняв FPGA, команды могут предоставлять в режиме реального времени опыт НЛП, который быстр, эффективен и готов к тому, что приносит следующее поколение языковых моделей. Сочетание детерминированной производительности, энергоэффективности и архитектурной гибкости делает FPGA не просто альтернативой существующим ускорителям, но основополагающей технологией для следующего поколения интеллектуальных, отзывчивых и сохраняющих конфиденциальность систем НЛП.