канд. техн. наук, доц., кафедра «Программирование», Пензенский государственный технологический университет, РФ, г. Пенза
ОРГАНИЗАЦИЯ ВЫЧИСЛЕНИЙ В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ В НЕЙРОННЫХ СЕТЯХ, РЕАЛИЗУЕМЫХ НА ПЛИС
АННОТАЦИЯ
При переносе моделей машинного обучения, в том числе нейросетевых, на встраиваемые системы, а также при увеличении размеров нейронных сетей актуальна задача экономии вычислительных ресурсов. Одним из путей ее решения является сокращение разрядности вычислений. В настоящей работе предложена схема, выполняющая линейную часть вычислений в нейронах (умножение с накоплением) при поступлении входных сигналов и весовых коэффициентов, представленных в формате FP16 – 16-разрядном формате с плавающей запятой. Схема предназначена для использования в нейронных сетях, реализуемых на ПЛИС архитектуры FPGA, имеющих в составе блоки цифровой обработки сигналов. В статье оценены ресурсоемкость предложенной схемы и максимальные размеры использующих ее нейронных сетей. Оценены также временные характеристики предложенной схемы; показано, что максимальная тактовая частота ограничивается вспомогательными блоками, анализирующими экспоненты обрабатываемых чисел.
ABSTRACT
When transferring machine learning models, including those based on neural networks, into embedded systems, as well as when scaling up the size of neural networks, it is crucial to utilize hardware resources efficiently. One way to conserve hardware resource capacity is to reduce the bit widths of the numbers being processed. This paper proposes a circuit that performs the linear part of computations in neurons (i.e., multiplication with accumulation), where the numbers arriving at the circuit are represented in 16-bit floating-point format. The circuit is intended for use in neural networks being implemented on FPGAs, which contain digital signal processing blocks. In the paper, the resource capacity of the proposed circuit and the maximum sizes of neural networks that can be implemented using the circuit are assessed. The timing characteristics of the proposed circuit are also assessed and it is shown that the maximum clock frequency of the proposed circuit is limited by its auxiliary blocks analyzing the processing numbers’ exponents.
Ключевые слова: нейронная сеть, формат FP16, ПЛИС, умножение с накоплением, вспомогательные блоки, форматирование.
Keywords: neural network, FP16 format, FPGA, multiplication with accumulation, auxiliary blocks, formatting.
Исследование выполнено за счет гранта Российского научного фонда и Пензенской области № 24-21-20100, https://rscf.ru/project/24-21-20100/
Введение
В настоящее время одной из тенденций развития систем машинного обучения является перенос моделей, в том числе нейросетевых, на встраиваемые устройства [1-3]. Для развертывания и обучения нейронных сетей могут использоваться различные аппаратные платформы – специализированные микросхемы (ASIC), ПЛИС архитектуры FPGA, микроконтроллеры, и др. [2,3]. ПЛИС доступны по цене, и при этом позволяют реализовать для нейронной сети архитектуру, распараллеливающую значительную часть вычислений.
Тем не менее, ПЛИС, как и другие платформы для встраиваемых систем, жестко ограничена в ресурсах, и актуальна задача снижения их вычислительной нагрузки. Эта задача может решаться сокращением размеров сети или снижением разрядности вычислений, а также использованием формата с фиксированной запятой, который проще реализуется аппаратно [1-6].
Требуемый формат и разрядность представления чисел в нейронной сети зависят от ее типа и размеров, а также от того, требуется ли обучение нейронной сети или только ее развертывание. Так, в [4] показано, что нейронные сети небольших размеров могут развертываться и даже обучаться при представлении чисел в формате с фиксированной запятой; при этом результаты будут сопоставимы с полученными для нейронных сетей тех же размеров, использовавших 32-разрядное представление чисел в формате с плавающей запятой. С другой стороны, в обзоре, приведенном в [5], показано, что глубокие нейронные сети лучше обучаются при использовании как минимум 16-разрядного представления чисел в формате с плавающей запятой. Дальнейшее снижение разрядности касается, в первую очередь, хранения весов, активаций и градиентов: для этих целей широко используются 8-битные форматы E4M3 и E5M2 [6]. При этом умножение, сложение и вычисление активаций в таких форматах обычно не проводится из-за малых диапазонов представления чисел.
Вычисления в формате с плавающей запятой на большинстве современных ПЛИС не поддерживаются, тогда как для умножения с накоплением в формате с фиксированной запятой предназначены блоки цифровой обработки сигналов (ЦОС) ПЛИС. Тем не менее, при дополнении блоков ЦОС схемами на базе программируемой логики общего назначения ПЛИС можно реализовать вычисления и в формате с плавающей запятой.
В настоящей работе предложен вариант схемы умножения с накоплением, работающей с 16-разрядными числами в формате с плавающей запятой FP16. Для развертывания и обучения нейронных сетей на ПЛИС она может использоваться как базовая, так как умножение с накоплением или умножение с последующим сложением используются при расчете выходных сигналов нейронов, а также при вычислении локальных градиентов и обновлении весовых коэффициентов в процессе обучения [7]. В данном случае схема реализована на ПЛИС [8], но может быть перенесена на многие другие ПЛИС, так как использует их типовые ресурсы.
Для предложенной схемы выполнена оценка ее ресурсоемкости, а также выявлен фактор, ограничивающий ее максимальную тактовую частоту.
Материалы и методы исследования
Формат FP16. Представление чисел в формате FP16 предполагает использование одного знакового разряда S; пяти разрядов экспоненты (E) и десяти разрядов дробной части мантиссы (М). Формат FP16 соответствует стандарту IEEE754 и представлен формулой (1), где b – смещение (bias), для нормальных чисел равное 15, а для субнормальных, то есть при
– 14. Целая часть мантиссы, равная единице для нормальных чисел и нулю для субнормальных, не хранится, но восстанавливается при расчетах. С учетом субнормальных чисел, формат FP16 может представить числа от
до
.
(1)
Последовательно-параллельная архитектура нейронной сети. Предлагаемая схема умножения с накоплением соответствует последовательно-параллельной архитектуре нейронной сети «многослойный персептрон» в виде массива вычислительных блоков (ВБ) (рисунок 1), описанной в [9] для нейронных сетей, работающих в формате с фиксированной запятой. Каждый ВБ содержит одну схему умножения с накоплением и вычислитель функции активации, что соответствует одному нейрону. Количество ВБ в массиве K определяется слоем нейронной сети с максимальным количеством нейронов. В каждый момент времени все ВБ принимают один из входных сигналов сети,
, или выходной сигнал одного из нейронов предыдущего слоя,
. По окончании вычислений в текущем слое сети массив ВБ используется для вычислений в следующем слое, и т.д. Схема умножения с накоплением в составе ВБ выполняет вычисление
(2) – суммы произведений входных сигналов
и весовых коэффициентов
, используемой затем как аргумент функции активации [7]. На рисунке 1 и в (2) также используются обозначения:
– выходной сигнал нейрона;
– соответственно номер слоя сети, номер входного сигнала и номер нейрона в слое;
– номер итерации;
– количество входных сигналов сети или нейронов в предыдущем слое; L – количество слоев.
(2)
/Ushenina.files/image015.jpg)
Рисунок 1. Последовательно-параллельная архитектура нейронной сети в виде массива вычислительных блоков
Схема умножения с накоплением. Предлагаемая схема принимает
и
в формате FP16, и в этом же формате вычислитель функции активации выдает
. Процедура умножения чисел с плавающей запятой представлена формулой (3). Для упрощения записи в (3) индексы
и
опущены. В (3) x и w соответствуют входному сигналу и весовому коэффициенту; wx – их произведение;
– нормализованная мантисса произведения wx;
– экспонента произведения wx;
– корректировка экспоненты, полученная после нормализации.
(3)
Схема умножения с накоплением представлена на рисунке 2. Она содержит два блока ЦОС, а также вспомогательные схемы
и
на основе программируемой логики общего назначения ПЛИС. На рисунке 2 ресурсы блоков ЦОС – умножители и сумматоры – закрашены серым цветом; элементы первого блока ЦОС расположены сверху, второго – снизу. Рассчитанные значения
поступают на блок вычисления функции активации AF.
При построении схемы были учтены особенности блоков ЦОС: 1) они рассматривают поступающие числа как целые, 2) доступ извне к умножителю и основному сумматору (на рисунке 2 основные сумматоры показаны справа) ограничен; некоторые их входы соединены только с выходами стоящих до них устройств и 3) результат вычислений в блоке ЦОС доступен только на выходе основного сумматора, даже если он не был задействован в текущей вычислительной операции. Так как
вычисляет основной сумматор блока ЦОС, работающий в режиме аккумулятора (2), и он должен хранить промежуточные результаты вычислений, для всех расчетов требуется как минимум два блока ЦОС. На некоторые входы устройств блоков ЦОС входные переменные поданы через мультиплексоры.
Первый блок ЦОС (на рисунке 2 сверху) выполняет вычисления над каждой парой
и
в два шага. Первый шаг – это вычисление умножителем произведения
, представленного 22 разрядами, где два старших относятся к целой части, а остальные – к дробной. Из-за ограниченной разрядности шин внутри блоков ЦОС представление
придется ограничить его 13 старшими разрядами, получив
.
/Ushenina.files/image030.jpg)
Рисунок 2. Схема умножения с накоплением
поступает на вспомогательный блок
(рисунок 3), который формирует слагаемое
для вычисления
. Блок построен исходя из того, что произведение мантисс, которое может быть представлено в формате FP16 как ненулевое, будет содержать единицу как минимум в разряде, соответствующем
. То есть
, а для формирования
нужны разряды
. Анализируя разряды целой части,
, можно определить знак
, а также то, какие разряды
должны формировать
–
, то есть целой части, или
, то есть дробной части. Разряды
и
обрабатываются отдельно таблицами истинности LUT10 и LUT2, в результате чего формируются два варианта
. Нужный вариант выбирается с помощью четырех мультиплексоров, а знаковый разряд равен
.
/Ushenina.files/image043.jpg)
Рисунок 3. Схема вспомогательного блока /Ushenina.files/image044.png)
Второй шаг – это вычисление
с использованием полученного значения
основным сумматором первого блока ЦОС. Распределение слагаемых по устройствам блока ЦОС показано на рисунке 2: на предварительный сумматор блока ЦОС поступают
и
, на основной сумматор –
, b и
. При этом, поскольку предварительный сумматор не может быть соединен с основным в обход умножителя,
умножается на единицу, поступающую на умножитель через мультиплексор, и лишь затем поступает на вход основного сумматора. Полученное значение
отправляется на вспомогательный блок sft (рисунок 4), где рассчитывается коэффициент s, масштабирующий произведение
.
Коэффициент s представляет собой двойку, возведенную в степень от 0 (при
) до 31 (при
). Умножение на s располагает разряды
в соответствии с их значимостью перед подачей на аккумулятор, то есть заменяет операцию сдвига
. Нормализацию каждого произведения
согласно стандарту IEEE754 делать нет смысла, так как далее следует сложение этих произведений (2), которое потребует выравнивания экспонент. Всего на расположение разрядов
доступно 44 разряда выходной шины умножителя, и 45-й (старший) ее разряд нужен для хранения знака произведения. Таким образом, минимальной экспоненте будет соответствовать
на младших разрядах шины, [12:0], а максимальной – на разрядах [43:31].
/Ushenina.files/image058.jpg)
Рисунок 4. Схема вспомогательного блока /Ushenina.files/image059.png)
Устройство вспомогательного блока sft, формирующего коэффициент s, представлено на рисунке 4. Блок представляет собой набор из тридцати двух 5-входовых таблиц истинности (LUT5), каждая из которых формирует один разряд s.
Второй блок ЦОС (на рисунке 2 внизу) выполняет масштабирование произведений
, поступающих от первого блока, коэффициентами s и их накопление согласно (2). Аккумулятор может работать как режиме сложения, так и в режиме вычитания: нужный режим определяется знаком поступающего произведения
. Выходная шина аккумулятора имеет разрядность 48 бит, из которых старший отводится под хранение знака, младшие 11 – на хранение дробной части, остальные – на хранение целой части суммы.
Возврат к формату FP16. Полученная сумма произведений
(рисунок 2) переводится в формат FP16 не сразу, а после вычисления функции активации. Выполняемые при этом операции зависят от выбранной функции активации (ReLU, сигмоида, гиперболический тангенс и др.) и способа ее вычисления. Так, в случае выбора ReLU при отрицательных аргументах
приравнивается к нулю, а при неотрицательных – к самому аргументу, то есть
. Для перевода неотрицательных
в формат FP16 можно использовать схему форматирования, представленную на рисунке 5. Она содержит сдвигающую цепочку из D-триггеров (D43:D0), на входы которых поступают соответствующие разряды
, и счетчик экспонент, работающий в режиме вычитания, в который на старте работы помещается значение 31. соответствующее единице в 43-м разряде
. Если этот разряд действительно равен единице, дробная часть мантиссы
принимается равной
, а его экспонента
приравнивается содержимому счетчика. Если
, в цепочке триггеров выполняется сдвиг, а из содержимого счетчика вычитается единица. После этого проверяется выход триггера D43 (разрешение счета), и т.д.
/Ushenina.files/image067.jpg)
Рисунок 5. Схема форматирования
Результаты и обсуждение
Важнейшими характеристиками представленных схем, предназначенных для использования во встраиваемых системах, являются их ресурсоемкость и производительность. Первая из характеристик ограничивает размеры нейронных сетей, реализуемых на ПЛИС, а вторая – тактовую частоту сети.
В таблице 1 приведены результаты оценки потребности схем умножения с накоплением и форматирования в различных видах ресурсов ПЛИС. В таблице 2 оценены максимальные размеры нейронных сетей, реализуемых на ПЛИС [8] при использовании предложенных схем (оценка делалась в предположении, что каждый ВБ содержит схему форматирования). Предполагалось также, что каждый ВБ использует один блок памяти, где размещаются весовые коэффициенты всех обслуживаемых нейронов (из разных слоев). Из таблиц 1 и 2 следует, что количество нейронов в слоях ограничивается (до 149) имеющимся у ПЛИС запасом блоков ЦОС. Количество слоев ограничивается (до 7) объемом памяти блока ОЗУ. Программируемая логика (4-входовые табличные преобразователи LUT4, регистры) не является в данном случае критическим ресурсом.
Результаты оценки скорости вычислений представлены в таблице 3. Оценка выполнялась с применением статического временного анализа, средства для которого встроены в среду проектирования. В результате для каждой вычислительной операции определено соответствующее ей время распространения сигналов от одного синхронного элемента (источника входных переменных) до другого (приемника результата вычислений). Из таблицы 3 видно, что максимальная тактовая частота ограничивается (до 156 МГц) операцией вычисления
в схеме умножения с накоплением. Схема форматирования в данном случае не влияет на максимальную тактовую частоту, так как пути между синхронными элементами в ней короткие.
Таблица 1.
Ресурсоемкость схем умножения с накоплением и форматирования
|
Схема |
Блоки ЦОС |
Блоки памяти |
LUT4 |
Регистры |
|
Умножения с накоплением |
2 |
1 |
361 |
0 |
|
Форматирования |
0 |
0 |
49 |
49 |
Таблица 2.
Оценка максимальных размеров нейронных сетей при использовании предложенных схем в составе каждого ВБ
|
Кол-во блоков ЦОС / Кол-во ВБ |
Емкость блока ОЗУ / Кол-во слоев сети |
Кол-во LUT / Кол-во ВБ |
Регистры / Кол-во ВБ |
|
298 / 149 |
18 кбит / 7 слоев |
138240 / 337 |
139140 / 2839 |
Таблица 3.
Время выполнения операций в схеме умножения с накоплением, нс
|
Операция |
Время выполнения, нс |
|
Первый блок ЦОС, вычисление |
3,138 |
|
Вспомогательный блок |
6,371 |
|
Первый блок ЦОС, вычисление |
3,686 |
|
Вспомогательный блок sft, вычисление s |
3,383 |
|
Второй блок ЦОС, масштабирование |
3,337 |
Заключение
Предложенная в работе схема умножения с накоплением, предназначенная для реализации на ПЛИС, позволяет выполнять вычисления в нейронных сетях в формате с плавающей запятой. Схема не содержит массивных комбинационных схем, значительно снижающих рабочую тактовую частоту, что может быть важно для встраиваемой системы. Подход, использованный при реализации схемы, позволяет перестроить ее под другие форматы представления чисел, но при этом должны быть учтены разрядности шин умножителей и аккумуляторов в блоках цифровой обработки сигналов ПЛИС.
Список литературы:
- Reddi V.J. Introduction to Machine Learning Systems. [Электронный ресурс]. – Режим доступа: https://www.mlsysbook.ai (дата обращения 14.11.2025).
- Zhang Z., Li J. A Review of Artificial Intelligence in Embedded Systems // Micromachines. – 2023. – Vol. 14. – No. 5.– P. 897.
- Seng K.P., Lee P.J., Ang L.M. Embedded intelligence on FPGA: Survey, Applications and Challenges // Electronics. – Vol. 10. – No. 8. – 2021. – P. 895.
- Holt J. L., Baker T. E. Back propagation simulations using limited precision calculations // Proceedings of the IJCNN-91-Seattle International Joint Conference on Neural Networks. – 1991. – Vol. 2. – P. 121-126.
- Wang N., Choi J., Brand D., Chen C. Y., Gopalakrishnan K. Training deep neural networks with 8-bit floating point numbers //Advances in neural information processing systems. – 2018. – Vol. 31. [Электронный ресурс]. – Режим доступа: https://proceedings.neurips.cc/paper/2018/file/ 335d3d1cd7ef05ec77714a215134914c-Paper.pdf (дата обращения: 14.11.2025)
- Micikevicius P. et al. Fp8 formats for deep learning //arXiv preprint arXiv:2209.05433. – 2022.
- Хайкин С. Нейронные сети: полный курс, 2-е изд.: Пер. с англ. // СПб.: ООО «Диалектика». – 2020. –1104 с.
- GW5AST series of FPGA Products. [Электронный ресурс]. – Режим доступа: https://cdn.gowinsemi.com.cn/DS1104E.pdf (дата обращения 14.11.2025).
- Ушенина И.В., Данилов Е.А. Реализация на ПЛИС модуля искусственного нейрона для последовательно-параллельных архитектур нейронных сетей с прямой связью // Цифровая обработка сигналов. – 2025. – №1. – С. 78-84.
/Ushenina.files/image069.png)
/Ushenina.files/image070.png)