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

Первый вопрос, который приходит на ум, — зачем ПЛИС?

Таким образом, типичный ЦП может выполнять 10–100 GFLOP в секунду. Графический процессор обеспечивает пиковую производительность до 10 терафлопс/с. Таким образом, о процессорах не может быть и речи, поскольку они сильно проигрывают графическим процессорам. Но у графических процессоров по-прежнему есть недостаток с точки зрения энергоэффективности, и они по-прежнему универсальны для оптимизации под конкретную задачу.
Все мы знаем, что ASIC — это чипы, используемые для конкретных задач, но проблема с кремниевыми мозгами заключается в том, что когда-то микросхема разработана и сожжена, ее нельзя перепроектировать повторно. А вот и FPGA, перепрограммируемые ASIC, вот как я люблю их называть.
С этой перепрограммируемостью приходит возможность разрабатывать чипы с учетом стратегий высокого параллелизма (что плохо процветает нейронным сетям) и выполнять вычисления. нагрузка и эффективность по сравнению с графическими процессорами.

Текущие проблемы с ПЛИС

  • рабочая частота ПЛИС составляет порядка 100–300 МГц, что значительно меньше, чем у CPU и GPU.
  • Реализация нейронных сетей на FPGA намного сложнее, чем на CPU и GPU.

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

Слои свертки и FC

  • На слои свертки и FC приходится большая часть вычислительной нагрузки нейронной сети. Существуют и другие типы слоев, например, слой пула, уровень пакетной нормализации, concat и т. д., но большинство весов сосредоточено на уровне свертки и FC, которые включают операции умножения и накопления (MAC).

Обзор ускорителя на базе FPGA

  • Система состоит из центрального процессора и части FPGA. Чистая микросхема FPGA обычно работает с хост-компьютером/сервером через соединения PCIe. И хост, и FPGA могут работать со своей собственной внешней памятью и получать доступ к памяти друг друга через соединение.
  • Микросхемы FPGA имеют большие встроенные блоки памяти, такие как регистры и SRAM, но все же слишком малы по сравнению с моделями NN. Параметры нейронной сети по-прежнему малы, и поэтому для этого пробела требуется внешняя память, такая как DDR SDRAM. Пропускная способность и энергопотребление DDR ограничивают производительность системы.

Методология и критерии проектирования

  • В общем, цель проектирования ускорителя вывода нейронной сети включает в себя два аспекта (i) высокая скорость (высокая пропускная способность и низкая задержка) (ii) высокая энергоэффективность.

Скорость

  • Ресурс на кристалле определенной ПЛИС может быть увеличен за счет увеличения количества вычислительных блоков на нем, которое может быть увеличено за счет уменьшения размера каждого из вычислительных блоков. Этого можно достичь за счет снижения точности представления данных, т. е. использования 16-битного или 8-битного представления с фиксированной точкой, а не представления с плавающей запятой в нейронной сети.
  • Во-вторых, за счет увеличения рабочей частоты чипа, что может быть достигнуто за счет тщательной разработки чипа в том смысле, что обрабатываемые данные могут быть размещены в непосредственной близости от чипа. Высокая загрузка чипа коэффициент обеспечивается реализацией параллелизма и эффективной системой памяти. Шаблон доступа к данным и коэффициент вычисления данных также влияют на то, используется ли аппаратное обеспечение полностью или нет.

где OPSact -› количество операций, выполняемых ускорителем в секунду во время работы.
W -› общая теоретическая нагрузка сети.
OPSpeak -› максимальное количество операций, которое может быть обработано за секунд.
n -> коэффициент использования вычислительных блоков, измеряемый средним коэффициентом использования вычислительных блоков во всех вычислительных блоках при каждом выводе.
f -› рабочая частота вычислительных блоков.
P -› количество вычислительных единиц.

  • Большинство ускорителей нейронных сетей на основе ПЛИС обрабатывают разные входные данные один за другим, в то время как некоторые конструкции обрабатывают разные входные данные параллельно. Таким образом, задержка ускорителя выражается как:

где L – › задержка обработки вывода
C – › параллелизм акселератора, измеряемый количеством параллельно обработанных выводов.
IPS – › пропускная способность системы, измеряемая количеством обработанных выводов. каждую секунду.

Энергоэффективность

  • Каждая операция выполняется блоком DSP, который имеет определенную транзисторную логику, потребляющую некоторое электрическое напряжение для выполнения задачи. Следовательно, энергия, необходимая для выполнения общего количества операций в сети, — это то, что мы рассматриваем вместо количества выводов, как в случае со скоростью вывода.
  • Если рабочая нагрузка сети фиксирована, повышение энергоэффективности ускорителя нейронной сети означает снижение общей стоимости энергии.

Eff -> энергоэффективность системы, измеряемая количеством операций, которые могут быть обработаны в пределах единицы энергии.
W -> рабочая нагрузка для каждого вывода, измеряемая количеством операций в сети, в основном сложение и умножение для нейронная сеть.
Etotal состоит из компонента энергии доступа к статическому ОЗУ + компонента энергии доступа к динамическому ОЗУ + статической энергии.

Мы разделяем энергию доступа к памяти на часть DRAM и часть SRAM. Nx acc можно уменьшить за счет квантования, разрежения, эффективной системы встроенной памяти и метода планирования. Таким образом, эти методы помогают уменьшить энергию динамической памяти.

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

Проектирование оборудования: эффективная архитектура

Проекты вычислительных блоков

Меньший вычислительный блок означает, что в чип можно встроить большее количество вычислительных блоков, что означает более высокую пиковую производительность. Тщательно спроектированный массив вычислительных блоков может увеличить рабочую частоту системы и, таким образом, улучшить пиковую производительность.

  • Вычислительная единица с низкой разрядностью:
    Уменьшение разрядности уменьшает размер вычислительной единицы, что увеличивает возможности добавления дополнительных вычислительных единиц в массив. Более современные разработки заменяют 32-битные блоки с плавающей запятой на блоки с фиксированной запятой. 16-битное и 12-битное представление с фиксированной точкой используется для встраивания эффективного массива вычислительных блоков в ПЛИС. Бинаризованная нейронная сеть превосходит ЦП и ГП по производительности, но уступает по точности.
    Ниже приведена сравнительная таблица для различных представлений данных на разных микросхемах ПЛИС.

  • Метод быстрой свертки:
    Операция свертки на DSP-устройстве может быть ускорена при использовании дискретного преобразования Фурье (ДПФ). Для фильтра FxF, свернутого с фильтром KxK, DFT преобразует умножения (F-K + 1)^2 * ^2 в пространственной области в комплексные умножения F² в частотной области. Для слоя CONV с M входным каналом и N выходным каналом требуется MN раз умножения в частотной области и ¹M + Nº раз DFT/IDFT.
    Теоретический прирост производительности от быстрой свертки зависит от размера свертки. Текущие разработки, ограниченные встроенными ресурсами и соображениями гибкости, не выбирают большие размеры свертки. Существующие работы показывают, что теоретический прирост производительности до 4 раз может быть достигнут за счет быстрой свертки с помощью FFT или Winograd с разумными размерами ядра.
  • Метод частотной оптимизации:
    Новейшие FPGA поддерживают теоретическую пиковую рабочую частоту DSP 700–900 МГц. Но существующая конструкция обычно работает на частотах 100–400 МГц. Рабочая частота ограничена маршрутизацией между встроенной SRAM и модулями DSP.
    Соседние слайсы для каждого модуля DSP используются как локальные RAM для разделения домена синхронизации.
    Конструкция прототипа обеспечивает пиковую рабочую частоту DSP на уровне 741 МГц и 891 МГц на микросхемах FPGA с различными классами скорости. Xilinx также предложила CHaiDNN-v2 и xfDNN с этой техникой и достигает рабочей частоты DSP до 700 МГц. По сравнению с существующими конструкциями, у которых частота находится в пределах 300 МГц, этот метод обеспечивает как минимум двукратный прирост пиковой производительности.

Стратегии развертывания цикла

Как мы зацикливаем слои conv и FC для операций свертки и умножения-накопления, также является важным вопросом исследования. Неэффективная стратегия зацикливания может занять много времени и снизить эффективность обработки системы.

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

  • Выбор параметров развертывания
    Количество параллельных итераций на оборудовании называется параметром развертывания. Неправильный выбор параметра развертывания может привести к серьезной недостаточной загрузке оборудования.
    Предположим, что счетчик циклов равен M, а параллелизм равен m. Коэффициент использования оборудования - это обработка уровня NN, общий коэффициент использования будет произведением коэффициента использования для каждого цикла.
    Помимо проблемы недостаточной загрузки, развертывание цикла также влияет на путь передачи данных и на кристалле. дизайн памяти. Таким образом, стратегия развертывания цикла является ключевой особенностью дизайна нейронной сети.
  • Передача данных и конструкция встроенной памяти
    Система встроенной памяти должна эффективно предлагать необходимые данные каждому вычислительному блоку в каждом цикле. Для реализации высокого параллелизма ускорители нейронных сетей обычно повторно используют данные между большое количество вычислительных блоков. Простая передача данных на разные вычислительные блоки приводит к большому разветвлению и высокой стоимости маршрутизации и, таким образом, к снижению рабочей частоты.
    Общие данные передаются от одного вычислительного блока к другому в цепном режиме. Таким образом, данные не транслируются, и необходимы только локальные соединения между различными вычислительными блоками. Недостатком является увеличение задержки. Порядок выполнения цикла запланирован соответственно, чтобы покрыть задержку

Системный дизайн

  • Логическая часть всей системы обозначена синими прямоугольниками. Центральный процессор хоста выдает рабочую нагрузку или команды логической части FPGA и контролирует ее рабочее состояние. В логической части FPGA обычно реализуется контроллер для связи с хостом и генерации управляющих сигналов для всех других модулей на FPGA. Контроллер может быть FSM или декодером команд.
  • Логическая часть «на лету» реализуется для определенных проектов, если данные, загружаемые из внешней памяти, требуют предварительной обработки. Этот модуль может быть модулем размещения данных, устройством сдвига данных, модулем быстрого преобразования Фурье и т. д. Встроенная SRAM
    микросхемы FPGA слишком ограничена по сравнению с большими моделями NN. Таким образом, для обычных конструкций используется двухуровневая иерархия памяти с DDR и встроенной памятью.
  • Модель линии крыши:

Соотношение вычислений и связи (CTC) по оси X и производительности оборудования
по оси Y. CTC — это количество операций, которые могут быть выполнены при единичном размере доступа к памяти. Каждую аппаратную конструкцию можно рассматривать как точку на рисунке. Таким образом, y/x соответствует требованиям к пропускной способности, предусмотренным проектом.
Фактический потолок пропускной способности ниже теоретического, поскольку достижимая пропускная способность DDR зависит от шаблона доступа к данным. Последовательный доступ DDR обеспечивает гораздо более высокую пропускную способность, чем произвольный доступ. Другая крыша — это крыша вычислений, которая ограничена доступными ресурсами на FPGA.

  • Разбиение и обмен циклами:

Стратегии развертывания цикла для увеличения параллелизма при одновременном снижении потерь вычислений для определенной сети. Когда стратегия развертывания цикла определена, планирование оставшейся части циклов определяет, как аппаратное обеспечение может повторно использовать данные с буфером на кристалле. Это включает в себя разбиение циклов и стратегию обмена циклами.
Разбиение циклов — это более высокий уровень развертывания циклов. Все входные данные тайла цикла будут храниться на кристалле, и аппаратное ядро ​​развертывания цикла будет работать с этими данными. Больший размер тайла цикла означает, что каждый тайл будет загружаться из внешней памяти во встроенную память меньше раз. Стратегия обмена циклами
определяет порядок обработки фрагментов цикла.
Расположение данных во встроенных буферах управляется с помощью инструкций, чтобы соответствовать разным размерам карты объектов. Это означает, что аппаратное обеспечение всегда может полностью использовать буфер на кристалле, чтобы использовать наибольший размер листов в соответствии с размером буфера на кристалле. В этой работе также предлагается порядок выполнения цикла «туда-сюда», чтобы избежать полного обновления данных на кристалле после завершения самого внутреннего цикла.

  • Межуровневое планирование:
    проблема доступа к внешней памяти из-за объединения двух соседних слоев во избежание передачи промежуточных результатов между двумя уровнями
    . Эта стратегия помогает сократить объем передаваемых данных на 95 % при дополнительных 20 % затрат на встроенную память. Даже программа получает ускорение в 2 раза благодаря этой стратегии планирования.
  • Регуляризация шаблона доступа к данным.
    Помимо увеличения CTC, увеличение фактической пропускной способности помогает улучшить достижимую производительность при определенном коэффициенте CTC. Это достигается за счет упорядочения шаблона доступа DDR. Общие форматы карт объектов во внешней памяти включают NCHW или CHWN, где N означает пакетное измерение, C означает измерение канала, H и W означает измерение y и x карты объектов. Используя любой из этих форматов, плитку карты объектов можно разрезать на небольшие блоки данных, хранящиеся в дискретных адресах.

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

До следующего раза, продолжайте читать и расти :)

Ссылка: https://arxiv.org/pdf/1712.08934.pdf