Омский государственный технический университет
Кафедра информатики и вычислительной техники
Критический анализ различных архитектурных подходов к построению нейросред.
Руководитель работы
Борисов К.Е.
Нестерук В.Ф.
Данная работа имеет своей целью дать описание нейронных сетей с точки зрения микропроцессорной техники. Изложены некоторые общие положения теории нейронных сетей, необходимые для описания подходов к построению нейросред, отмечены особенности нейросред, важные для их аппаратной и программной реализаций. В работе описаны существующие системы, предназначенные для реализации нейроалгоритмов и проведено сравнение различных подходов к построению подобных систем.
Параллельно с прогрессом в нейроанатомии и нейрофизиологии психологами были созданы модели человеческого обучения. Одной из таких моделей, оказавшейся наиболее плодотворной, была модель Д. Хэбба, который в 1949г. предложил закон обучения, явившийся стартовой точкой для алгоритмов обучения искусственных нейронных сетей. Он продемонстрировал ученым того времени, как сеть нейронов может обучаться.
В середине 1958 г. Фрэнком Розенблатом была предложена модель электронного устройства, названного им перцептроном, которое должно было бы имитировать процессы человеческого мышления. Перцептрон должен был передавать сигналы от <<глаза>>, составленного из фотоэлементов, в блоки электромеханических ячеек памяти, которые оценивали относительную величину электрических сигналов. Эти ячейки соединялись между собой случайным образом в соответствии с господствующей тогда теорией, согласно которой мозг воспринимает новую информацию и реагирует на нее через систему случайных связей между нейронами. Два года спустя была продемонстрирована первая действующая машина <<Марк-1>>, которая могла научится распознавать некоторые из букв, написанных на карточках, которые подносили к его <<глазам>>, напоминающие кинокамеры.
Перцептрон Розенблата оказался наивысшим достижением нейромодельного метода создания искусственного интеллекта в то время, он реализовывал принцип отказа от программирования в пользу обучения, на котором построены все современные нейросети.
Однако возможности перцептрона были сильно ограниченными: машина не могла надежно распознавать частично закрытые буквы, а также буквы иного размера или рисунка, нежели те, которые использовались на этапе ее обучения. В 1969 году вышла критическая работа Марвина Минского, в которой математически доказывалась ограниченность перцептронов и принципиальная невозможность их использования для многих классов задач. Так как успехи перцептронов были весьма скромными, а традиционные алгоритмы все более совершенствовались, решая все более сложные задачи, то эта область науки стала непопулярной на многие годы.
Постепенно интерес к нейронным сетям восстанавливался. Это объясняется в основном появлением в разное время большого количества работ, в которых научно доказывается, что специальные нейросетевые алгоритмы могут эффективно решать задачи, традиционно считающиеся трудными для <<традиционного>> программирования. К тому же развитие вычислительной техники позволило моделировать работу сложных нейронных сетей с малыми затратами. Это вызвало второй бум нейронных сетей, когда нейроалгоритмы считались панацеей и применялись всеми и везде.
В настоящее время ажиотаж вокруг нейронных сетей утих, определились области, в которых целесообразно применение нейроалгоритмов, появились научные работы, позволяющие аргументировать применение нейросетей и точно вычислить некоторые их количественные характеристики.
Текущее состояние формального нейрона с n входными каналами определяется как взвешенная сумма его входов: s = еj = 1n wjxj, где x = < w1,ј, wn > есть входной сигнал.
Выходной сигнал формального нейрона есть функция его состояния: y = F(s). Функция F является внутренней характеристикой формального нейрона и называется активационной функцией. Отметим, что в случае булевых формальных нейронов часто используется пороговая функция с внутренней характеристикой q:
|
|
|
Нейронная сеть состоит из набора нейронов, связанных со входами, выходами и между собой. Формальные нейроны могут объединяться в сети различными способами, но самым распространенным видом нейросети стал многослойный перцептрон.
Сеть состоит из произвольного количества нейронов, разбитых на слои. Нейроны каждого слоя соединяются только с нейронами предыдущего и последующего слоев (в общем случае по принципу каждый с каждым). Отдельно выделяют входной и выходной слои, остальные слои называются внутренними или скрытыми. Каждый слой рассчитывает нелинейное преобразование от линейной комбинации сигналов предыдущего слоя. Отсюда видно, что линейная функция активации может применяться только для однослойной сети. Для многослойных сетей с линейной функцией активации можно построить эквивалентную однослойную сеть.
Многослойная сеть может формировать на выходе произвольную многомерную функцию при соответствующем выборе количества слоев, диапазона изменения сигналов и параметров нейронов.
Область | Определение нейрокомпьютера |
Математическая статистика | Вычислительная система, автоматически формирующая описание характеристик случайных процессов, имеющих сложные функции распределения |
Математическая логика | Вычислительная система, алгоритм работы которой представлен логической сетью элементов частного вида (нейронов) с полным отказом от булевых элементов |
Вычислительная техника | Вычислительная система, в которой процессорный элемент однородной структуры упрощен до уровня нейрона, резко усложнены связи между элементами и программирование перенесено на изменение весовых коэффициентов связей между процессорными элементами |
Медицина | Вычислительная система, представляющая собой модель биохимических процессов, протекающих в нервных тканях |
Для построения высокопроизводительных нейровычислителей все чаще используют специальные нейрочипы. Они специально разработаны для применения в нейросистемах. Большинство из них ориентированы на конкретные специализированные системы.
Нейрочипы отличаются очень большим разнообразием, поэтому перед анализом конкретных примеров целесообразно рассмотреть их общую классификацию, отраженную в таблице .
Цифровые | |
По типу логики | Аналоговые |
Гибридные | |
По типу реализации алгоритмов | С аппаратной реализацией |
С програмной реализацией | |
По типу нейронов и сети | С жесткой структурой |
С перенастраиваемой структурой |
Просчет вектора весов обычно должен быть выполнен один раз и в процессе функционирования нейросети этот вектор фиксирован. Но в некоторых случаях необходимо использовать самообучающуюся нейронную сеть, тогда выполняется динамический пересчет весов, а иногда и изменение структуры сети.
Обучение проводят по обучающему множеству, то есть на основе подготовленных ситуаций, аналогичных тем, с которыми нейросеть будет иметь дело в процессе своего функционирования. Для элементов обучающего множества должны быть известны выходы нейросети. В зависимости от разницы между ожидаемым и фактическим выходом нейросети проводится коррекция векторов весов каждого нейрона. После того, как обучение было закончено, то есть значение ошибки на всем обучающем множестве достигло приемлемого уровня, веса фиксируются, нейронная сеть считается готовой к работе.
Особый интерес представляет обучение <<без учителя>>, то есть создание нейросети, для которой заранее не известны выходные значения нейросети, но есть некоторые требования, которым они должны удовлетворять. При этом полученное решение будет зависеть от алгоритма обучения нейросети. Уже разработаны методы обучения <<без учителя>> для многих классов задач.
Работа каждого слоя нейронной сети описывается одной формулой:
|
Фактически вычислительных операций всего две: перемножение матриц XW и вычисление нелинейной функции F для каждого элемента вектора. Эта особенность позволяет, применив специализированные решения, сильно увеличить скорость работы нейросети.
Очень широко свойство устойчивости нейросети применяется при выборе представления чисел в нейросети. Существует возможность значительно уменьшать точность величин без ухудшения качества работы нейросети. Поэтому в нейросистемах часто применяют числа с фиксированной запятой малой разрядности, вместо чисел с плавающей запятой, занимающих много места в памяти и замедляющих вычисления.
DSP-процессоры в нейросистемах могут выполнять две функции: реализацию самой нейронной сети или реализацию контура логики общесистемного управления нейрокомпьютера.
Для реализации нейросреды может быть использован практически любой DSP, но наибольшее распространение получили семейство DSP TMS320C6xx компании Texas Instruments с фирменной архитектурой VelociTI и ADSP2106x компании Analog Devices с архитектурой SHARC. Эти цифровые сигнальные процессоры обладают достаточной производительностью для обработки сигналов в реальном времени, они ориентированы на использование в мультимикропроцессорных системах.
Рассмотрим архитектуру этих DSP с позиции применимости для построения сложных нейросистем.
Семейство цифровых сигнальных микропроцессоров ADSP-2116x является наиболее совершенным, тактовой частота этих микропроцессоров повышена до 100 МГц, что позволило увеличить производительность до 600 MFLOPS. Рассмотрим архитектуру этого семейства на примере ADSP-21161, его основные функциональные блоки показаны на рис. 4.
Для работы нейросети характерны операции с двумя операндами (например, самая часто используемая операция - умножение значения на входе нейрона и соответствующего ему весового коэффициента), поэтому возможность выборки двух операндов за один машинный цикл позволяет значительно увеличить скорость, эмуляции нейросети. Для этого, конечно, требуется распределение перемножаемых чисел по разным банкам внутренней памяти, но это ограничение для нейросети легко выполнить, так как операции с весами проводятся отдельно от операций с входными величинами. Кроме выборки операндов необходимо проводить выборку очередной инструкции. Если шина адреса команд (PM address bus) и шина команд (PM data bus) заняты, то выборка второго операнда в этом же цикле невозможна. Поэтому микропроцессор содержит кэш команд на 32 48-ми битных инструкции. Если текущая инструкция находится в кэше, то выборки из памяти команд не происходит и шины свободны для выбора второго операнда в этом же цикле.
Таким образом используемая модифицированная Гарвардская архитектура позволяет эффективно работать с большими объемами обрабатываемых данных с малыми потерями на обращение к памяти. Объем внутренней памяти 1 Мбит позволяет реализовывать нейросети, достаточно большие для широкого применения.
Система команд ADSP-21161 как и большинства других цифровых сигнальных микропроцессоров содержит арифметическую команду умножения с накоплением (C = A·B+C), причем можно указать число выполнений в цикле и правила изменения индексов для адресации A и B. Эта команда должна быть выполнена для каждого входа нейрона при просчете реакции сети. Данный микропроцессор поддерживает циклические буферы, при работе с которыми обеспечивается автоматическое изменение адресов.
Подобная работа обеспечивается наличием индексных регистров I, регистров модификации M, регистров длины буфера L и базовых регистров B. Всего существует по 16 регистров каждого из перечисленных типов, причем первые восемь (I0јI7, M0јM7, ј) связаны с DAG1, а вторые (I8јI15, M8јM15, ј) - с DAG2. При адресации с циклическим буфером регистр L инициализируется длиной буфера. Регистр L связан с соответствующим регистром I (I0 связан с L0 и т.д.). Каждый раз, когда выбирается регистр I, соответствующий регистр L обеспечивает устройство адресации по модулю информацией о длине буфера. Если сумма значений регистра M и регистра I пересекает границу буфера, модифицированное значение регистра I вычисляется логическим устройством адресации по модулю с использованием значения длины L.
В таблице описана работа циклического буфера.
M > 0 | I = I+M | При I+M < B + L |
I = I+M-L | При I+M і B + L | |
M < 0 | I = I+M | При I+M і B + L |
I = I+M+L | При I+M < B + L |
Подобная архитектура позволяет гибко управлять порядком обращения к элементам циклического буфера. На рис. refcycsamp показан пример программы, использующей циклический буфер и порядок выборки элементов из него.
Циклические буферы и автоматическое изменение индексных регистров в применении к нейронным сетям помогают упростить циклы и увеличить скорость работы сети. Например, взвешенное суммирование осуществляется циклическим повторением одной команды MR = MR+MX0*MY0(SS), MX0 = DM(I0,M0), MY0 = PM(I4,M5), при выполнении которой производится одновременное умножение с накоплением и выборка из памяти данных и памяти программ следующих операндов. Выполнение этой команды занимает всего лишь один цикл (если эта команда находится в кэше).
BIT SET MODE1 CBUFEN; | Разрешение использования циклических буферов (достаточно осуществить один раз в программе) |
B0=0X55000; | Загрузить базу циклического буфера |
L0=0XB; | Длина буфера - 11 |
M1=0X4; | Увеличение указателя на 4 при каждом обращении |
LCNTR=11, DO MY_CIR_BUFFER UNTIL LCE; | Цикл до метки MY_CIR_BUFFER |
R0 = DM(I0,M1); | Выборка из буфера |
... | Другие инструкции в цикле |
MY_CIR_BUFFER: NOP; | Конец цикла |
Вид конфигурации первого типа показан на рис. 6. В этом случае обмен информацией идет через два имеющихся 8-ми битных двунаправленных порта связи (link ports). Такая система позволяет пропускать поток данных через все микропроцессоры, осуществляя последовательную обработку. Применительно к нейросетям, таким образом значительно ускорить обработку, распределив слои сети по отдельным узлам. После того, как текущий узел рассчитал выход <<своих>> слоев он может передать его на дальнейшую обработку следующему процессору и принять следующие входные данные. Каждый порт может передавать до 8-ми бит данных за каждый такт.
Такое разбиение на последовательные блоки значительно ускоряет работу сети при наименьшем росте стоимости. Этот тип мультимикропроцессорных систем наиболее прост для построения и наиболее компактен при размещении на плате.
Кластерная система показана на рис. 7. Эта система более гибка, чем предыдущая, так как наращивание числа DSP и внешней памяти возможно без существенного изменения алгоритмов. Кластерная система включает несколько DSP, подключенных к общим шинам, с поддержкой межпроцессорного доступа к памяти и обращения к общей разделяемой памяти.
В кластерной конфигурации узким местом является общая шина, так как только два DSP могут участвовать в передаче информации в течение каждого цикла - остальные DSP ожидают освобождения шины. Поэтому в кластерной конфигурации задействованы порты связи для передачи данных без блокирования общей шины.
Часто применяется кольцевая топология, которая является частным случаем соединения <<точка-точка>>, и смешанная топология <<расширяемый кластер>> (Expanding Cluster), вид которых показан на рис. 7.
Структура обрабатывающего элемента показана на рис. 9. Данные для и их вычислительных блоков идут через регистровый файл. Регистровый файл подключен к шинам данных памяти программ и данных. Умножитель и АЛУ поддерживают следующие форматы обрабатываемых чисел:
Поддерживается два режима округления: округление к нулю, округление к ближайшему.
АЛУ поддерживает следующие арифметические и логические операции:
Умножитель может принимать в качестве операндов 32 или 40 битные числа с плавающей запятой и выдавать результат в формате 32 или 40 битного числа с плавающей запятой или принимать операнды в формате 32 битного числа с фиксированной запятой и выдавать 80 битный результат. Умножитель может выполнять следующие инструкции:
Отличительной особенностью обрабатывающего элемента является возможность параллельной работы АЛУ, регистрового файла и умножителя (блок сдвига в параллельных операциях не участвует). Параллельные вычисление занимают только один цикл, хотя задействуют несколько блоков. Таким образом, за один цикл можно выполнить инструкцию АЛУ и умножителя и даже две инструкции АЛУ. Параллельная работа накладывает ограничения на то, в каких регистрах находятся операнды. Рис. показывает это ограничение.
В обычном режиме SISD (Single Instruction, Single Data) DSP использует только PEx. В режиме SIMD DSP параллельно выполняет следующие операции:
Оба обрабатывающих элемента содержат идентичные блоки (АЛУ, умножитель, блок сдвига, регистровый файл), выполняемая инструкция также одинакова для PEx и PEy, отличаются лишь обрабатываемые данные. Большинство регистров в PEx имеют соответствующие им регистры в PEy, выполняя инструкцию, обрабатывающие элементы используют значения из <<своих>> регистров.
Таким образом, используя SIMD-команды DSP может удвоить скорость обработки данных. В нейроприложениях это особо актуально, так как для них характерно выполнение одинаковых операций для большого набора однородных данных.
Появление нейросигнальных процессоров связано с успешным применением цифровых сигнальных процессоров. Возможности DSP не полностью соответствуют задачам, которые возникают при моделировании нейронных сетей. Нейросигнальные процессоры в настоящее время являются наиболее быстродействующим средством построения нейросистем.
Ядро нейросигнальных процессоров представляет собой типовой сигнальный процессор, а реализованная на кристалле дополнительная логика обеспечивает выполнение нейросетевых операций. Примером нейросигналного процессора является NM6403, реализующий архитектуру NeuroMatrix.
Ядро nm6403 состоит из двух базовых блоков: 32-битного RISC процессора и 64 битного векторного процессора, обеспечивающего выполнение векторных операций над данными переменной разрядности. Имеются два идентичных программируемых интерфейса для работы с внешней памятью различного типа и два коммуникационных порта, аппаратно совместимых с портами DSP TMS320C4x, для построения многопроцессорных систем. Общая структура нейропроцессора показана на рис. refnm6403.
Нейропроцессор предназначен для обработки 32 разрядных скалярных данных и данных программируемой разрядности (с упаковкой в 64 разрядные слова). Основными узлами нейропроцессора являются:
Нейропроцессор содержит пять внутренних шин:
Структура ядра нейропроцессора представлена на рис. 13. Регистровое АЛУ (RALU) служит для оперативного хранения до восьми 32 разрядных скалярных данных и выполнения над ними операций сдвига, одно и двухоперандных арифметических и логических операций. При выполнении операций в RALU формируются признаки, которые используются при выполнении условных команд. Данные, хранящиеся в RALU, могут также использоваться в качестве адресов и смещений при выполнении команд обращения к памяти и команд управления.
RALU содержит:
DAG1 - первый генератор адресов данных служит для формирования адресов данных при выполнении команд обращения к памяти и адресов переходов при выполнении команд управления. Кроме того, DAG1 обеспечивает оперативное хранение и модификацию до четырех 32 разрядных адресов данных, адресов переходов или смещений адресов переходов. DAG1 содержит:
Второй генератор адресов данных DAG2 по своей структуре и выполняемым функциям аналогичен DAG1. Его специфика заключается в том, что один из его адресных регистров AR7(SP) дополнительно выполняет функции системного указателя стека.
Генератор адресов команд (PROGRAMM SEQUENCER), служит для формирования адреса очередной 64 разрядной команды или очередной пары 32 разрядных команд на линейных участках программы, когда вычисление адреса каждой следующей команды осуществляется путем инкремента адреса текущей команды.
Генератор адресов команд включает в себя следующие блоки:
Блок управления (CONTROL UNIT) выполняет предварительный анализ и дешифрацию команд, выбранных из внешней памяти, формирует сигналы управления всеми узлами нейропроцессора в процессе конвейерного выполнения команд, обрабатывает все запросы на внутренние и внешние прерывания, осуществляет арбитраж.
Векторный сопроцессор (VCP) является основным вычислительным узлом нейропроцессора особенно для нейросетевых приложений. VCP ориентирован на обработку данных произвольной разрядности от 1 до 64 разрядов, упакованных в 64 разрядные слова. Возможность выбора разрядности обрабатываемых данных является отличительной чертой нейропроцессора NM6403. Основными узлами VCP являются:
Функция активации применяется к входному вектору [(X)/vec] до выполнения операции.
Нейропроцессор NM6403 имеет следующие аппаратные средства, предназначенные для построения многопроцессорных систем на его основе:
Каждая из двух внешних шин поддерживает как однопроцессорный, так и многопроцессорный режим работы, если к общей памяти подключены два процессора, то арбитраж для доступа к ней осуществляется между ними без использования внешнего контроллера.
Возможны три типа конфигурации внешней шины для многопроцессорного режима:
Хотя возможности построения мультимикропроцессорных систем на базе NM6403 довольно ограничены (по сравнению с рассмотренным выше семейством цифровых сигнальных процессоров), но все же они являются вполне достаточными для создания нейроприложений повышенной производительности. Примеры мултимикропроцессорных структур приведены на рис. .
Обработка реакции сети на входное воздействие происходит в нейропроцессоре последовательно, слой за слоем. На рис. 20 показана модель нейронной сети, эмулируемой NM6403. В общем случае каждый слой нейросети имеет N нейронных входов и состоит из M нейронов. При этом каждый нейрон выполняет взвешенное суммирование с учетом смещения данного нейрона:
|
|
Процессор NM6403 создавался как универсальное средство для реализации нейросред. При его использовании пользователь может программно задавать множество параметров нейронной сети:
Для эмуляции нейронной сети каждый ее слой разбивается на последовательно обрабатываемые фрагменты. Данное разбиение осуществляется следующим образом. Множество нейронных входов слоя разбивается на группы входов так, чтобы суммарная разрядность данных, подаваемых на каждую группу входов, была равна разрядности нейропроцессора - 64. Множество нейронов слоя разбивается на группы нейронов так, чтобы суммарная разрядность результатов взвешенного суммирования для каждой группы также была равна 64. Таким образом выделяются фрагменты сети двух типов с разным функциональным назначением: первый тип фрагментов осуществляет взвешенное суммирование, а второй - вычисление функции активации.
Эмуляция слоя нейронной сети на нейропроцессоре NM6403 состоит из последовательно выполняемых макроопераций, каждая из которых эмулирует один фрагмент слоя. Число выполняемых макроопераций равно числу фрагментов в слое. Обработка данных ведется нейропроцессором в пакетном режиме - по T наборов входных данных в каждом пакете. Пакет данных, подаваемых на группу нейронных входов слоя нейронной сети представляет собой вектор Xn = < X1,ј, Xn > , каждый элемент которого является вектором упакованных данных. Разрядность каждой из упакованных величин может принимать любое четное значение в диапазоне от 2 до 64, то есть количество элементов вектора может быть любым от 1 до 32. Ограничением является то, что суммарная разрядность всех данных, упакованных в одном векторе, должна быть равна 64.
При эмуляции фрагмента первого типа нейропроцессор выполняет следующую операцию для каждого набора входных данных: Yn = Yn-1+Xn×Wn. В качестве Y0 выступает смещение V0.
64 разрядные выходные векторы содержат упакованные данные с разрядностью от Nmin до 64. Значение минимальной разрядности каждого элемента в этих векторах зависит от суммарного числа нейронных входов в слое и вытекает из необходимости избегать арифметического переполнения при сложении чисел:
|
Выполнение операции взвешенного суммирования над всеми векторами задается одной командой <<vsum>> нейропроцессора. Выполнение этой команды зависит от количества значений в обрабатываемом векторе, за один такт обрабатывается один компонент вектора.
При эмуляции фрагмента второго типа для группы нейронов процессор формирует вектор Xn = < OUT1,ј, OUTm > , каждый элемент которого является вектором упакованных данных. Компонентами вектора OUTi являются результаты вычисления функции насыщения над элементом Yi вектора Y:
|
Вычисление функций насыщения для всех элементов всех векторов задается одной командой <<activate>> нейропроцессора. Время выполнения этой команды также составляет один такт на компонент.
Ориентация нейропроцессоров на создание нейросред значительно упрощает создание высокопроизводительных нейросетевых приложений. Разработчики нейропроцессоров создают библиотеки алгоритмов для наиболее распространенных типов нейросетей, что делает их особенно привлекательными для построения нейросред.
Чип SAND (Simple Applicable Neural Device) разработан для применения в промышленных и исследовательских системах реального времени. Чип способен реализовывать нейросети с максимальным числом входов 512.
Принцип параллельной работы обрабатывающих элементов показан на рис. .
Вектор входных значений (vector of input activities) подается параллельно на все обрабатывающие элементы. Матрица весов (weight-matrix) разделена на m векторов-строк (line vector), каждый из которых обрабатывается собственным обрабатывающим элементом. В результате работы каждого элемента получается одна из m выходных величин. Таким образом, для слоя нейросети, состоящего из m нейронов, можно использовать m элементов, работающих в параллельном режиме, без обмена информацией.
Существенным недостатком этого решения является необходимость иметь m блоков памяти для матрицы весов (для каждого блока). Это приводит к большому числу компонентов и высокой стоимости схемы. Можно использовать один общий блок памяти, но тогда доступ к этому блоку должен происходить на крайне высокой скорости (в m раз больше, чем в предыдущем случае). Современные чипы памяти не способны обеспечить такие скорости.
Эффективное решение этой проблемы возможно, если количество весов равно количеству входных величин (длине входного вектора). При этом рассматривается не один входной вектор, а их последовательность. Входной вектор заменяется матрицей входных значений из m колонок.
На рис. 22 показан пример обработки данных для m = 4. Четыре обрабатывающих элемента производят обработку сразу четырех входных векторов. Значения, уже переданные в чип SAND показаны на рисунку заштрихованными. Четыре обрабатывающих элемента показаны кругом, пятиугольником, восьмиугольником и квадратом. За каждый цикл перемножаются два одинаково выделенных элемента. За каждый цикл из памяти необходимо передавать только один весовой коэффициент и одно входное значение (остальные значения уже выбирались ранее). Четыре цикла обрабатывающий элемент работает с одним и тем же весовым коэффициентом, каждый четвертый цикл вес обновляется. Таким образом на шине весов наблюдается непрерывный поток значений-весов. Входные значения передаются от одного обрабатывающего элемента к следующему через внутренние регистры. Каждый цикл происходит передача очередного входного значения, поэтому на входной шине также наблюдается непрерывный поток значений.
Архитектура кристалла SAND показана на рис. 23. Он содержит четыре параллельных обрабатывающих элемента PE (Processing Elements), каждый из которых снабжен АЛУ и блоками отсечения (auto-cut). АЛУ используется для умножения векторов. Так как АЛУ накапливает входные значения, выходная шина имеет разрядность 40 бит (это ограничивает число входных нейронов до 512). Блок отсечения приводит снижает разрядность до 16 с контролем переполнения и потери точности. Окно, выбирающее 16 бит из 40 может быть смещено пользователем по его усмотрению.
Для некоторых задач необходим модуль постобработки (Post-Processing Min-Max Search), который проводит поиск минимума или максимума. Функция активации реализована в виде внешнего чипа, содержащего таблицу поиска. Некоторые типы нейросетей нуждаются не только в нелинейной функции активации, но и в линейной функции f(x) = x. Поэтому чип имеет два выхода: address - адрес в таблице поиска и data - линейное выходное значение. Для более быстрого вычисления блоки сложения и умножения размещены последовательно, образуя конвейер. Входные значения вначале умножаются на соответствующие веса, а затем складываются с предыдущими значениями.
Данная архитектура разработана компанией Adaptive Solutions, она представляет собой SIMD мультипроцессор общего назначения, разработанный для нейроприложений. Так как чип представляет собой не узкоспециализированное устройство, а микропроцессор общего назначения, то становится возможным реализовать широкий спектр алгоритмов обучения и функционирования нейросети. Чип имеет действительно большую емкость памяти весов, позволяя хранить 2M 1 битных весов, или 256K 8 битных весов, или 128K 16 битных весов, поровну распределенных между 64 процессорами. Чипы могут образовывать мультимикропроцессорные системы различной конфигурации.
Базовым элементом системы CNAPS является чип N6400, который состоит из 64 обрабатывающих элементов, соединенных широковещательной шиной в режиме SIMD. Принципиальная структура системы CNAPS показана на рис. . Типовая система содержит управляющий чип (Sequencer) и четыре процессора N64000 (хотя есть системы с 8 процессорами).
Обрабатывающие элементы (Processing nodes, PN) разработаны как обычные цифровые сигнальные процессоры, включающие сумматор и умножитель, выполняющие арифметические операции над числами с фиксированной запятой. Структура обрабатывающего узла PN показана на рис. 25. Каждый PN содержит 4 Кбайта локальной статической памяти, которая используется для хранения весовых коэффициентов. Размер локальной памяти является узким местом для больших нейросетей, так как при нехватке памяти происходит обмен по широковещательной шине. Производительность падает катастрофически, когда 64 процессорных узла ведут обмен по общей шине.
Так как N64000 работает как микропроцессор общего назначения, то CNAPS может реализовать широкий класс нейросетевых алгоритмов. Для этой архитектуры создан инструментальный набор, который включает C-компилятор с надстройками, позволяющими получать код, использующий все преимущества параллельной архитектуры.
Приборы программируемой логики, представителями которых являются ПЛИС (Программируемые Логические Интегральные Схемы) применяются на протяжении нескольких десятилетий для построения разнообразных интерфейсных узлов, устройств управления и контроля и т.д. Однако, если еще 5 лет назад ПЛИС занимали весьма скромную нишу на рынке электронных компонентов (в первую очередь из-за небольшого быстродействия и малого количества эквивалентных логических вентилей), то сейчас ситуация кардинально изменилась. Раньше о ПЛИС говорили, в основном, как о чем-то, недостойном внимания серьезных разработчиков. Но с появлением быстродействующих ПЛИС сверхвысокой интеграции, работающих на высоких тактовых частотах, их ниша на мировом рынке значительно расширилась.
Современные образцы ПЛИС, выполненные по современной 0,22-микронной технологии, способны работать на частотах до 300 МГц и реализуют до 3 млн. эквивалентных логических вентилей. Компания Xilinx, один из мировых лидеров в данной области, уже объявила о выпуске ПЛИС в 10 млн. логических вентилей.
Столь резкое увеличение мощности ПЛИС позволяет использовать их не только для реализации простых контроллеров и интерфейсных узлов, но и для цифровой обработки сигналов, сложных интеллектуальных контроллеров и нейрочипов. Появление быстродействующих ПЛИС со сверхнизким уровнем энергопотребления открывает широкие возможности по их использованию в системах мобильной связи (в частности, непосредственно в сотовых телефонах и пейджерах), в портативных проигрывателях (например, в МР3-проигрывателях) и других автономных устройствах.
ПЛИС изготовляются многими производителями, среди которых основными являются Altera, Xilinx, Atmel, Csypres, Lattice, Lucent. Выделить продукцию какой-либо одной из этих фирм невозможно, так как по техническим характеристикам они различаются очень мало.
По принципу формирования требуемой структуры целевого цифрового устройства все основные современные ПЛИС подразделяются на две группы:
Рассмотрим структуру ПЛИС на примере семейства AT40K, выпускаемого компанией Atmel. Чипы этого семейства имеют следующие характеристики:
Основным архитектурным блоком является матрица одинаковых ячеек (рис. ). Массив однороден по всей площади, кроме шинных повторителей, отделяющих каждые четыре ячейки.
На пересечении вертикальных и горизонтальных линеек повторителей расположен блок RAM 32x4, доступный для смежных ячеек. Эта память может быть сконфигурирована для синхронного и асинхронного доступа и для одно- и двухпортового режима работы.
Сама концепция ПЛИС предполагает наличие возможности разнообразного соединения вычислительных ячеек. Весь кристалл охватывает пять идентичных плоскостей шин (рис. 27), каждая из которых содержит 2 плоскости express-шин и одну плоскость local-шин. Шины функционируют благодаря повторителям. Каждый повторитель имеет соединения с двумя соседними сегментами local-шины и двумя соседними сегментами express-шины. Повторители усиливают сигналы и могут соединять любые шины данной плоскости шин.
Ячейка может соединяться с любой из восьми соседних ячеек и любой из локальных шин (вертикальных или горизонтальных). Каждая ячейка может быть соединена только с одной шиной из шинной плоскости.
Основой ячейки FPGA является логическая таблица (LUT - look-up table), представляющая собой однобитное ОЗУ на 8 ячеек. Триггеры всех логических таблиц входят в состав программирующего регистра и их начальное состояние заполняется в период конфигурирования ПЛИС. Каждая ячейка содержит две логические таблицы.
В ПЛИС используются программируемые D-триггеры. При конфигурировании, обычно, можно задать такие режимы работы триггера, как триггер с начальным сбросом (R) или начальной установкой (S), с записью по фронту или спаду синхросерии, с разрешением или без разрешения записи. Различные варианты соединения логических таблиц и триггера позволяют создавать на базе ячеек различные устройства: регистры, сумматоры, умножители, счетчики.
Каждая ячейка FPGA содержит буфер с тремя состояниями. Применение шин с тремя состояниями - типичное схемное решение вычислительных устройств, реализованных на плате. Благодаря такому решению, легко достигается многомодульность и наращиваемость системы, низкие аппаратурные затраты и малые задержки в системе межсоединений. Внутри заказных СБИС редко применяются шины с тремя состояниями из-за технологических трудностей их безотказной реализации, а также увеличенной задержки на их переключение. Тем не менее, в ПЛИС широко применяются шины с тремя состояниями, хотя это существенно повышает их себестоимость. Применение шин с тремя состояниями дает следующие преимущества:
Для реализации в ПЛИС модулей ОЗУ предусмотрено две возможности. Первую возможность предоставляет каждая ЛТ, которая может быть сконфигурирована как ОЗУ. Для наращивания емкости памяти выходы нескольких ячеек с модулями ОЗУ через тристабильные буферы подключаются к общим шинам. При этом требуется дополнительное оборудование только для построения схемы дешифрации адреса, которая выдает сигналы выборки той или иной логической таблицы для записи, а также того или другого тристабильного буфера для чтения. Такое ОЗУ распределено по площади кристалла и поэтому названо Distributed RAM (распределенным ОЗУ).
Вторую возможность предоставляют отдельные блоки памяти, имеющиеся в ПЛИС. Блоки двухпортовой 32x4 RAM распределены по кристаллу (рис. 26). Две четырехбитовые шины (входные данные и выходные данные) подключены к local-шинам. Пятибитные шины адреса записи и чтения подключены к пяти вертикальным express-шинам.
Преимуществами FPGA-чипов для реализации нейроустройств являются:
Реализовать нейросистему на ПЛИС-микросхемах можно двумя различными способами:
Это решение имеет следующие достоинства:
Недостатками этого решения являются
Особо значим второй недостаток. На ПЛИС с интеграцией в 40 тысяч эквивалентных вентилей можно реализовать до 15 параллельно работающих нейронов, а доступны ПЛИС с интеграцией в 2.67 миллиона вентилей (EP20K1000 фирмы Altera), что дает возможность реализовать, соответственно, 1000 параллельных нейронов. Такое число нейронов уже достаточно для серьезных нейроприложений. Но при необходимости реализации сложных нейронов ситуация сильно ухудшается. Реализация умножителя требует больших затрат ресурсов ПЛИС, а каждый нейрон требует по крайней мере одного умножителя. Это ведет к созданию решений, которые используют черты традиционных архитектур. Например, один блок умножения, который используется несколькими нейронами, или один блок вычисления сложной активационной функции. Это ведет к другому типу ПЛИС-нейроархитектур.
Это исправляется использованием ПЛИС. Темпы роста вычислительной мощности ПЛИС, по крайней мере, не уступают аналогичной характеристике универсальных процессоров. ПЛИС дешевы, а проектирование устройства на базе ПЛИС занимает всего несколько месяцев. Поэтому в последние годы к ПЛИС начинают относиться как к новой надежде для нейроархитектур. Особенно это относится к странам, которые не имеют своего производства СБИС-чипов (к которым относится и Россия).
К сожалению, ПЛИС-нейросред разработано пока мало. Единственным описанным примером является модуль цифровой обработки сигналов XDSP-680-CP фирмы СканИнжинирингТелеком. Модуль XDSP-680-CP предназначен для решения задач цифровой обработки сигналов высокой производительности и, благодаря наличию трактов АЦП и ЦАП, позволяет строить полностью законченные системы обработки как цифровых, так и аналоговых сигналов с вводом-выводом данных из ПЭВМ. В качестве возможных областей применения производители указывают нейросетевые вычислители. Общая структура модуля приведена на рис. .
Модуль выполнен в виде PCI-платы. Плата содержит четыре ПЛИС XCV50-4PQ240C, служебная ПЛИС типа CPLD XC95288XL, банк SRAM 128Kx32 со временем доступа 7.5нс, FLASH 16Мбит, АЦП 12бит 80МГц, ЦАП 14бит 125МГц, два внешних цифровых порта по 16бит, компаратор тактового ввода.
Системная тактовая частота FPGA-схем может составлять 250МГц, что позволяет добиваться высокой производительности:
Гибридные и аналоговые решения теоретически могут обеспечивать наибольшее быстродействие при эмуляции нейронной сети. К сожаления действующих реализаций таких чипов очень мало. Вероятно, это связано со сложностью разработки микросхем этого типа, а также с тем, что постоянный рост производительности цифровых устройств обеспечивает преимущество в скорости. Тем не менее на рынке присутствует аналоговая СБИС ETANN 80170NX фирмы Intel и гибридное решение СБИС CLNN32/CLNN64 фирмы Bellcore.
Эта СБИС получила распространение в экспериментах физики высоких энергий. СБИС ETANN 80170NX содержит 64 входа и 64 нейрона (пороговый усилитель с сигмоидной передаточной функцией). Каждый вход соединен с 64 синапсами. Передаточная функция нейрона в СБИС близка к сигмоиде f(z) = [2/( 1+e-sz)], где усиление s (параметр наклона может) изменяться.
Усиление передаточной функции определяет чувствительность нейрона. Низкое значение усиления позволяет интерпретировать выход нейрона как аналоговый, а высокое - как цифровой. Максимальное значение выхода нейрона также задается. Веса ограничены интервалом (-2.5,2.5). Скорость прохождения сигнала по одному слою зависит от усиления и примерно равна 1.5 мкс, что и определяет быстродействие. Точность выполнения операций примерно эквивалентна 6 бит, быстродействие - 1,3... 109 переключений/с.
Обучение выполняется методом обартного распространения ошибок с помощью Intel Neural Network Training System (INNTS), работающей на компьютере i486. Применяемое системное окружение представляет собой специальную версию пакета DynaMind. Обучение выполняется до получения приемлемого уровня ошибки выхода сети, и после достижения удовлетворительной работы веса загружаются в СБИС. Для реальной работы такого обучения недостаточно, так как программа симуляции не может точно смоделировать аналоговую работу СБИС. и, например, не отслеживает флуктуации в передаточной функции каждого нейрона. Поэтому следующий этап обучения представляет собой так называемый chip-in-loop (CIL) training, когда после каждого цикла веса записываются в СБИС, и выход сети непосредственно используется в процессе обучения.
Поскольку ETANN представляет собой аналоговую СБИС, то для ее надежной работы важны стабильные внешние условия. Специально сконструированный для этого модуль обеспечивает низкую пульсацию источника питания <5мВ (напряжение питания 5В) и температурную стабильность при 18, DT < 1 (потребляемая мощность ETANN 5Вт).
Гибридный нейрочип CLNN32 состоит из 32 нейронов и 496 двунаправленных адаптивных синапсов. CLNN64 содержит 1024 адаптивных синапсов. В наборе CLNN32/CLNN64 все нейроны взаимосвязаны, так что любая топология сети отображается подбором синапсов. Динамика сети полностью аналоговая, но значения синапсов хранятся/обновляются в цифровом виде с точностью 5 бит. На аппаратном уровне реализовано обучение сети - подбор весов происходит по алгоритму обучения машины Больцмана или Mean Field. Внутри также имеется некоррелированный генератор шума (32 канала), используемый при обучении по методу машины Больцмана.
CLNN32 может быть использован независимо или совместно с CLNN64 для построения более сложной архитектуры сети. Производительность достигает 108 переключений/с (при работе с CLNN64 удваивается). Для CLNN32 это означает, что примерно 105 32 битных образцов/с или 32 аналоговых канала (с полосой пропускания 50 кГц) могут быть использованы для быстрого распознавания/обучения. Время распространения для одного слоя нейронов <1мкс. <<Охлаждение>> (по методу Больцмана) или MF обучение требует 10... 20мкс.
По сравнению с ETANN СБИС CLNN32 имеет следующие очевидные преимущества:
Это наиболее распространенная в настоящее время платформа для построения нейросистем, большинство из которых реализовано в виде программных комплексов (без особых средств аппаратной поддержки). Нейросетевые приложения в основном работают на рабочих станциях, являясь частью автоматизированных рабочих мест, а также самостоятельными средствами анализа.
Популярность такого подхода объясняется простотой программной реализации нейросети. Реализация нейроалгоритмов на рабочих станциях осуществляется средствами очень высокого уровня. Имеются библиотеки к распространеннным языкам высокого уровня, реализующие разнообразные функции, используемые в нейроприложениях, разработаны расширения объектно-ориентированных языков, которые позволяют оперировать с нейросетями на уровне объектов. Разработаны визуальные средства разработки нейроприложений, для пользования которыми даже не обязательны специальные навыки программирования. Эти средства содержат множество типовых решений и удобный графический интерфейс, позволяющий производить настройку на конкретную задачу. Полученное решение в большинстве случаев удовлетворяет пользователя по своим характеристикам.
Широкое применение нейросетей в архитектурах общего назначения также объясняется постоянным ростом производительности в этой области. Нейроалгоритмы относятся к ресурсоемким задачам, но современный уровень производительности рабочих станций позволяет для большинства задач получать приемлемые по скорости решения даже без особых процедур оптимизации. Кроме того распространенные сегодня процессоры имеют специальные расширения (нацеленные на мультимедиа приложения), которые позволяют ускорить обработку нейроалгоритмов. В частности, в архитектуру команд вводятся SIMD-инструкции, команды умножения с накоплением, возможности оперирования с упакованными данными малой разрядности. Причем этот процесс продолжается.
К сожалению процессоры общего назначения мало подходят для создания промышленных устройств в силу своей архитектурной избыточности. Тем не менее разработано множество нейроускорителей на этой базе, но они не имеют особых преимуществ перед другими подходами.
Достоинства процессоров общего назначения:
Недостатки процессоров общего назначения:
Тем не менее, для области нейросетевой обработки данных характерны следующие показатели быстродействия:
Сравнение показателей производительности рассметренных в данной работе аппаратных решений представлено в талице .
Название | Производительность | Описание |
Intel 80170NX ETANN | 2G MAC | Аналоговая схема, 6 бит веса |
Bellcore CLNN32 | 100M CUPS, T = 3 мкс | Гибридная схема, 4 бит веса |
НТЦ <<Модуль>> NM6403 | 1.2G MAC | Для 32 бит данных, нейросигнальнный процессор |
Datafactory SAND | 200M CPS | Систолический процессор |
Datafactory MiND | 800M CPS | Плата ускорителя с 4 чипами SAND |
Adaptive Solutions CNAPS | 2.56G MAC, 293M CUPS | Систолический процессор с 64 внутренними процессорами |
Adaptive Solutions CNAPS Server II card | 10.24G MAC | Карта ускорителя с 4 чипами CNAPS |
Скан Инжиниринг Телеком XDSP-680 | 220M MAC | 4 FPGA-чипа |
Analog Devices ADSP-2106x | 700M FLOPS |
К сожалению, приведенные данные не позволяют однозначно судить о быстродействии различных нейроустройств, хотя и позволяют сделать некоторые выводы. Например, виден линейный рост производительности систем на основе систолических процессоров с увеличением числа таких процессоров (этот факт с очевидностью следует из логики функционирования систолических процессоров). Но надо учитывать, что также линейно растет задержка между получением входных данных и выдачей выходного сигнала нейросети.
Аналоговая микросхема Intel 80170NX ETANN показывает довольно высокое быстродействие, но из таблицы видно (особенно если учесть малую разрядность обрабатываемых данных), что другие решения имеют более высокую производительность. Для однобитовых данных нейросигнальный процессор NM6403 имеет производительность 11.52G MAC.
Для цифровых сигнальных процессоров и ПЛИС-систем оценка затруднена, так как нет конкретных данных о производительности нейроалгоритмов на устройствах этого типа. В современных DSP-процессорах из-за возможности одновременного выполнения нескольких инструкций о производительности можно говорить лишь в применении к конкретному алгоритму.
Для DSP-чипов характерна оценка производительности по времени выполнения стандартных для обработки сигналов преобразований. В таблице представлены такие оценки для процессоров общего назначения, DSP компании Texas Instruments и нейросигнального процессора NM6403.
Преобразование | Intel Pentium II 300 МГц | Intel PentiumMMX 200 МГц | TI TMS320C40 50 Мгц | НТЦ <<Модуль>> NM6403 40 Мгц |
Фильтр Собеля (размер кадра 384X288 байт), кадров/с | - | 21 | 6.8 | 68 |
Быстрое преобразование Фурье (256 точек, 32 разряда), мкс | 200 | - | 464 | 102 |
Преобразование Уолша-Адамара (21 шаг, вх. данные 5 бит), с | 2.58 | 2.80 | - | 0.45 |
Данные таблицы 5 показывают, что специализированные процессоры
могут составить конкуренцию распространенным процессорам общего назначения
при гораздо более экономичных параметрах. Но если учесть темпы роста
производительности процессоров общего назначения, то очевидно, что за счет
своих вычислительных возможностей рабочие станцие могут эффективно реализовывать
нейроалгоритмы. Можно сделать вывод, что необходимость в платах нейроускорителей
в скором времени отпадет, хотя специализированные нейровычислители будут
превосходить в производительности платформы общего назначения.
10 Основные достоинства и недостатки различных решений
Достоинства | Недостатки |
Процессоры общего назначения | |
|
|
Цифровые сигнальные процессоры | |
|
|
Нейросигнальные процессоры | |
Все достоинства DSP.
|
|
Достоинства | Недостатки |
Систолические процессоры | |
|
|
ПЛИС-системы | |
|
|
Реализация нейросети на заказном кристалле | |
|
|