ВверхДомой

Kat&Pop - Рефераты - Критический анализ различных архитектурных подходов к построению нейросред (by Pop) Государственный комитет Российской Федерации по высшей школе

Омский государственный технический университет

Кафедра информатики и вычислительной техники

Критический анализ различных архитектурных подходов к построению нейросред.

Выполнил студент гр.ИВ-528

Борисов К.Е.

Руководитель работы

Нестерук В.Ф.

Омск - 2003

1  Введение.

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

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

2  Общие положения.

2.1  Краткая историческая справка.

В 40-е годы XX века нейробиологи и нейроанатомы достигли значительного прогресса. Была хорошо изучена структура и функции нервной системы человека, В процессе накопления ими знаний выяснилось, что мозг имеет ошеломляющую сложность: сотни миллиардов нейронов, каждый из которых соединен с сотнями или тысячами других, образуют крайне сложную систему. Лучшее понимание функционирования нейрона и картины его связей позволило исследователям создать математические модели для проверки своих теорий. В первых же работах выяснилось, что эти модели не только повторяют некоторые функции мозга, но и способны выполнять функции, имеющие практическую ценность.

Параллельно с прогрессом в нейроанатомии и нейрофизиологии психологами были созданы модели человеческого обучения. Одной из таких моделей, оказавшейся наиболее плодотворной, была модель Д. Хэбба, который в 1949г. предложил закон обучения, явившийся стартовой точкой для алгоритмов обучения искусственных нейронных сетей. Он продемонстрировал ученым того времени, как сеть нейронов может обучаться.

В середине 1958 г. Фрэнком Розенблатом была предложена модель электронного устройства, названного им перцептроном, которое должно было бы имитировать процессы человеческого мышления. Перцептрон должен был передавать сигналы от <<глаза>>, составленного из фотоэлементов, в блоки электромеханических ячеек памяти, которые оценивали относительную величину электрических сигналов. Эти ячейки соединялись между собой случайным образом в соответствии с господствующей тогда теорией, согласно которой мозг воспринимает новую информацию и реагирует на нее через систему случайных связей между нейронами. Два года спустя была продемонстрирована первая действующая машина <<Марк-1>>, которая могла научится распознавать некоторые из букв, написанных на карточках, которые подносили к его <<глазам>>, напоминающие кинокамеры.

Перцептрон Розенблата оказался наивысшим достижением нейромодельного метода создания искусственного интеллекта в то время, он реализовывал принцип отказа от программирования в пользу обучения, на котором построены все современные нейросети.

Однако возможности перцептрона были сильно ограниченными: машина не могла надежно распознавать частично закрытые буквы, а также буквы иного размера или рисунка, нежели те, которые использовались на этапе ее обучения. В 1969 году вышла критическая работа Марвина Минского, в которой математически доказывалась ограниченность перцептронов и принципиальная невозможность их использования для многих классов задач. Так как успехи перцептронов были весьма скромными, а традиционные алгоритмы все более совершенствовались, решая все более сложные задачи, то эта область науки стала непопулярной на многие годы.

Постепенно интерес к нейронным сетям восстанавливался. Это объясняется в основном появлением в разное время большого количества работ, в которых научно доказывается, что специальные нейросетевые алгоритмы могут эффективно решать задачи, традиционно считающиеся трудными для <<традиционного>> программирования. К тому же развитие вычислительной техники позволило моделировать работу сложных нейронных сетей с малыми затратами. Это вызвало второй бум нейронных сетей, когда нейроалгоритмы считались панацеей и применялись всеми и везде.

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

2.2  Поняте нейросети.

Базовым элементом нейронной сети как математической модели является формальный нейрон. Формальный нейрон имеет некоторое множество однонаправленных входных каналов аналоговой или булевой информации и один выходной канал. По аналогии с биологическими нейронами входные каналы называются синапсами, а выходной - аксоном. Нейрон может быть булевым, то есть оперирующим с однобитовыми сигналами, или аналоговым. При работе с аналоговым нейроном обычно производится нормирование сигналов таким образом, чтобы значения входов и выходов принадлежали интервалу (0,1). Каждому входному каналу с номером j формального нейрона ставится в соответствие число wj, называемое весом этого канала. Вектор весов w = < w1,јwn > является внутренней характеристикой формального нейрона с n входами.

Рис. 1: Формальный нейрон

Текущее состояние формального нейрона с n входными каналами определяется как взвешенная сумма его входов: s = еj = 1n wjxj, где x = < w1,јwn > есть входной сигнал.

Выходной сигнал формального нейрона есть функция его состояния: y = F(s). Функция F является внутренней характеристикой формального нейрона и называется активационной функцией. Отметим, что в случае булевых формальных нейронов часто используется пороговая функция с внутренней характеристикой q:

F(s) = м
н
о
0,
z
Ј q
1,
q <
z
 .
В случае специального вида формальных нейронных сетей - клеточных автоматов - обычно применяется пороговая колоколоидальная функция
F (s) = м
п
н
п
о
0,
z
Ј q1
1,
q1 <
z
< q2
0,
q2 Ј
z
 ,       q1 < q2.
Одной из самых популярных функций для обработки сигнала внутреннего возбуждения в случае аналогового нейрона является логистическая функция или сигмоид с внутренней характеристикой s:
F(z) = 1
1+e-sz
.
При уменьшении s сигмоид становится более пологим, в пределе при s = 0 вырождаясь в горизонтальную линию на уровне 0.5, при увеличении s сигмоид приближается по внешнему виду к функции единичного скачка с порогом в точке s = 0. Эта функция очень популярна из-за некоторых свойств. Например, она дифференцируема на всей оси абсцисс, причем её производная имеет простой вид Fў(s) = sF(s)(1-F(s)).

Рис. 2: Пример логистической функции

Нейронная сеть состоит из набора нейронов, связанных со входами, выходами и между собой. Формальные нейроны могут объединяться в сети различными способами, но самым распространенным видом нейросети стал многослойный перцептрон.

Рис. 3: Многослойный перцептрон

Сеть состоит из произвольного количества нейронов, разбитых на слои. Нейроны каждого слоя соединяются только с нейронами предыдущего и последующего слоев (в общем случае по принципу каждый с каждым). Отдельно выделяют входной и выходной слои, остальные слои называются внутренними или скрытыми. Каждый слой рассчитывает нелинейное преобразование от линейной комбинации сигналов предыдущего слоя. Отсюда видно, что линейная функция активации может применяться только для однослойной сети. Для многослойных сетей с линейной функцией активации можно построить эквивалентную однослойную сеть.

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

2.3  Определение нейрокомпьютера.

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

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

Таблица 1: Определения нейрокомпьютера

Для построения высокопроизводительных нейровычислителей все чаще используют специальные нейрочипы. Они специально разработаны для применения в нейросистемах. Большинство из них ориентированы на конкретные специализированные системы.

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

Цифровые
По типу логики Аналоговые
Гибридные
По типу реализации алгоритмовС аппаратной реализацией
С програмной реализацией
По типу нейронов и сети С жесткой структурой
С перенастраиваемой структурой

Таблица 2: Классификация нейрочипов

2.4  Особенности нейросети как вычислительной среды.

  1. Необходимость обучения сети. Решение, которое дает нейросеть, определяется весами входных каналов и видом активационной функции нейронов. Если вид функции активации может быть выбран по общему описанию задачи, то вектор весов для каждого нейрона выбирается с помощью процедуры первичного обучения нейросети. Аналитический выбор этих весов, обычно, невозможен, так как нейросети применяются для задач, которые не имеют точного формального решения. Возможность точного вычисления весовых коэффициентов указывает на наличие простого алгоритмического решения, которое наверняка более эффективно, чем решение с помощью нейросети.

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

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

    Особый интерес представляет обучение <<без учителя>>, то есть создание нейросети, для которой заранее не известны выходные значения нейросети, но есть некоторые требования, которым они должны удовлетворять. При этом полученное решение будет зависеть от алгоритма обучения нейросети. Уже разработаны методы обучения <<без учителя>> для многих классов задач.

  2. Однородность выполняемых операций. Нейронная сеть может содержать десятки слоев и тысячи нейроно, но вне зависимости от сложности реализуемой ею функции выполняемые операции фиксированы.

    Работа каждого слоя нейронной сети описывается одной формулой:

    Y = F(XW),
    где X - вектор входных значений, Y - вектор выходных значений, W - матрица весовых коэффициентов, а F() - функция активации, применяемая поэлементно к компонентам вектора.

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

  3. Независимость работы нейронов. Выход нейрона зависит только от выходных сигналов нейронов предыдущего слоя, что делает возможным параллельную обработку всех нейронов одного слоя. Нет нужды сохранять какие-либо величины, кроме выходного вектора непосредственно предшествующего слоя. Если позволяет аппаратное обеспечение, можно реализовать конвейерную обработку входных воздействий, то есть подавать следующий входной вектор сразу после освобождения слоя нейронов, не ожидая просчета всех слоев сети.
  4. Устойчивость решения. Выходной сигнал зависит от работы множества нейронов, причем в сложных нейросетях ни один из нейронов не может оказать сильного влияния на выход. Алгоритмы обучения сети в большинстве случаев подразумевают, что малые отклонения весов и выходов нейронов вызывают малые отклонения выходного сигнала нейронной сети. Так как обучение обычно представляет собою аналог метода градиентного спуска, то функционирование готовой нейросети заведомо не нарушается малыми изменениями весов и выходов нейронов. Подобная устойчивость решения, обеспечиваемая нейронной сетью, позволяет, например, смириться с частичными потерями данных в распределенных вычислительных системах или повысить устойчивость к аппаратным сбоям. К сожалению сильно распределенные нейросистемы не применяются так, как в нейронных сетях происходит интенсивный обмен информацией между отдельными нейронами. В современных системах аппаратный сбой ведет к изменению работы сразу большой части нейронов, что может привести к нарушению функционирования сети.

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

2.5  Задачи, для решения которых используют нейросети.

Нейронные сети используются для решения разнообразных задач во многих отраслях человеческой деятельности, вот некоторые из них:

3  Применение DSP для построения нейросред.

Цифровые сигнальные процессоры в настоящее время наиболее часто применяются для реализации нейросетевых сред. Причин для такого положения дел несколько:

  1. Низкая стоимость оборудования. Рынок DSP сложился уже достаточно давно, отработаны технологии производства и сбыта продукции, действует весьма жесткая конкуренция. Это означает постоянное снижение цен на DSP при улучшении их характеристик. Кроме того, для DSP не нужно дорогостоящее окружение (система ввода/вывода, система внешней памяти, система синхронизации и т.д.).
  2. Низкая стоимость разработки. Производители DSP сопровождают свои системы развитыми средствами разработки и отладки. Для многих систем разработаны компиляторы языка C, эмуляторы, средства внутрисистемной отладки и программирования. Уже наработан большой объем готовых процедур для наиболее часто встречающихся задач.
  3. Универсальность и гибкость. DSP не накладывают особо жестких ограничений на вид реализуемой нейросети, разработчик может построить сеть практически любой топологии и размеров, подключение внешней памяти позволяет при желании увеличить число нейронов и слоев. Так как в DSP-системах реализация нейронной сети идет на программном уровне, то нет ограничений на алгоритм работы сети и ее обучения. Если возникает необходимость внести изменения в работу готового устройства, то в большинстве случаев это может быть сделано ценой малых усилий.
  4. Малое энергопотребление и тепловыделение. В настоящее время нейронные сети все чаще применяются в промышленности для создания сложных датчиков и организации систем управления, в бортовых и переносных радиолокационных и измерительных устройствах и системах связи. Реализуются нейросистемы для автоматического наблюдения за транспортными потоками, то есть все чаще возникает задача построения промышленно применимой, компактной, автономной нейросистемы. В подобного рода задачах очень большое значение имеет низкое потребление энергии и малое тепловыделение конструируемого устройства, а в этой области у DSP есть большие преимущества. Например, энергопотребление DSP компании Analog Devices семейства SHARC составляет 1.5Вт при напряжении 3.3В, а у чипов C6201 компании Texas Instruments - 7Вт при 2.5В.

DSP-процессоры в нейросистемах могут выполнять две функции: реализацию самой нейронной сети или реализацию контура логики общесистемного управления нейрокомпьютера.

Для реализации нейросреды может быть использован практически любой DSP, но наибольшее распространение получили семейство DSP TMS320C6xx компании Texas Instruments с фирменной архитектурой VelociTI и ADSP2106x компании Analog Devices с архитектурой SHARC. Эти цифровые сигнальные процессоры обладают достаточной производительностью для обработки сигналов в реальном времени, они ориентированы на использование в мультимикропроцессорных системах.

Рассмотрим архитектуру этих DSP с позиции применимости для построения сложных нейросистем.

3.1  DSP фирмы Analog Devices.

Рис. 4: Блоки ADSP-21161

Семейство цифровых сигнальных микропроцессоров ADSP-2116x является наиболее совершенным, тактовой частота этих микропроцессоров повышена до 100 МГц, что позволило увеличить производительность до 600 MFLOPS. Рассмотрим архитектуру этого семейства на примере ADSP-21161, его основные функциональные блоки показаны на рис. 4.

3.1.1  Быстрая выборка и исполнение команд.

Два генератора адреса данных DAG выставляют адреса памяти, когда данные памяти пересылаются в или из регистров ввода или вывода. Каждый генератор адреса сохраняет до четырех указателей адреса. Генератор адреса данных 1 может генерировать адреса только для памяти данных (DM - Data Memory). Генератор адреса даннных 2 может генерировать адреса либо для памяти данных, либо для памяти программ (PM - Program Memory). В данном процессоре используется модифицированная Гарвардская архитектура (SHARC - Super Harvard ARChitecture), которая предполагает разделение памяти и шин команд и данных, но по шине команд могут передаваться как инструкции, так и данные. Имея два генератора адреса данных процессор может одновременно генерировать два адреса для выборки двух операндов.

Для работы нейросети характерны операции с двумя операндами (например, самая часто используемая операция - умножение значения на входе нейрона и соответствующего ему весового коэффициента), поэтому возможность выборки двух операндов за один машинный цикл позволяет значительно увеличить скорость, эмуляции нейросети. Для этого, конечно, требуется распределение перемножаемых чисел по разным банкам внутренней памяти, но это ограничение для нейросети легко выполнить, так как операции с весами проводятся отдельно от операций с входными величинами. Кроме выборки операндов необходимо проводить выборку очередной инструкции. Если шина адреса команд (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

Таблица 3: Работа циклического буфера

Подобная архитектура позволяет гибко управлять порядком обращения к элементам циклического буфера. На рис. 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;Конец цикла

Рис. 5: Пример работы с циклическим буфером

3.1.2  Возможность работы в мультимикропроцессорных конфигурациях.

DSP архитектуры SHARC могут организовывать мультимикропроцессорные системы двумя способами: через содинения <<точка-точка>> (Data Flow Microprocessing) и кластерное соединение (Cluster Microprocessing).

Рис. 6: Соединение <<точка-точка>>

Рис. 7: Кластерное соединение

Вид конфигурации первого типа показан на рис. 6. В этом случае обмен информацией идет через два имеющихся 8-ми битных двунаправленных порта связи (link ports). Такая система позволяет пропускать поток данных через все микропроцессоры, осуществляя последовательную обработку. Применительно к нейросетям, таким образом значительно ускорить обработку, распределив слои сети по отдельным узлам. После того, как текущий узел рассчитал выход <<своих>> слоев он может передать его на дальнейшую обработку следующему процессору и принять следующие входные данные. Каждый порт может передавать до 8-ми бит данных за каждый такт.

Такое разбиение на последовательные блоки значительно ускоряет работу сети при наименьшем росте стоимости. Этот тип мультимикропроцессорных систем наиболее прост для построения и наиболее компактен при размещении на плате.

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

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

Рис. 8: Примеры мультимикропроцессорных конфигураций.

Часто применяется кольцевая топология, которая является частным случаем соединения <<точка-точка>>, и смешанная топология <<расширяемый кластер>> (Expanding Cluster), вид которых показан на рис. 7.

3.1.3  Мощные блоки вычислений.

Обрабатывающие элементы PEx и PEy (Processing Elements) производят независимую вычислительную обработку. Каждый PE содержит регистровый файл и три вычислительных блока: арифметико-логическое устройство, умножитель и устройство сдвига. Вычислительные инструкции для этих элементов могут выполняться за один цикл, вычисления могут проводиться с фиксированной и плавающей запятой.

Рис. 9: Структура обрабатывающего элемента.

Структура обрабатывающего элемента показана на рис. 9. Данные для и их вычислительных блоков идут через регистровый файл. Регистровый файл подключен к шинам данных памяти программ и данных. Умножитель и АЛУ поддерживают следующие форматы обрабатываемых чисел:

Поддерживается два режима округления: округление к нулю, округление к ближайшему.

АЛУ поддерживает следующие арифметические и логические операции:

Умножитель может принимать в качестве операндов 32 или 40 битные числа с плавающей запятой и выдавать результат в формате 32 или 40 битного числа с плавающей запятой или принимать операнды в формате 32 битного числа с фиксированной запятой и выдавать 80 битный результат. Умножитель может выполнять следующие инструкции:

Отличительной особенностью обрабатывающего элемента является возможность параллельной работы АЛУ, регистрового файла и умножителя (блок сдвига в параллельных операциях не участвует). Параллельные вычисление занимают только один цикл, хотя задействуют несколько блоков. Таким образом, за один цикл можно выполнить инструкцию АЛУ и умножителя и даже две инструкции АЛУ. Параллельная работа накладывает ограничения на то, в каких регистрах находятся операнды. Рис.  показывает это ограничение.

Рис. 10: Закрепление операндов при параллельном выполнении инструкций.

3.1.4  SIMD-режим выполнения операций.

ADSP-21161 содержит два набора вычислительных блоков и ассоциированных с ними регистровых файлов. Как показано на рис.  обрабатывающие элементы PEx и PEy поддерживают режим SIMD (Single Instruction, Multiple Data) выполнения операций.

Рис. 11: SIMD-режим выполнения операций.

В обычном режиме SISD (Single Instruction, Single Data) DSP использует только PEx. В режиме SIMD DSP параллельно выполняет следующие операции:

Оба обрабатывающих элемента содержат идентичные блоки (АЛУ, умножитель, блок сдвига, регистровый файл), выполняемая инструкция также одинакова для PEx и PEy, отличаются лишь обрабатываемые данные. Большинство регистров в PEx имеют соответствующие им регистры в PEy, выполняя инструкцию, обрабатывающие элементы используют значения из <<своих>> регистров.

Таким образом, используя SIMD-команды DSP может удвоить скорость обработки данных. В нейроприложениях это особо актуально, так как для них характерно выполнение одинаковых операций для большого набора однородных данных.

4  Применение нейросигнальных процессоров для построения нейросред.

4.1  Нейросигнальный процессор NM6403.

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

Ядро нейросигнальных процессоров представляет собой типовой сигнальный процессор, а реализованная на кристалле дополнительная логика обеспечивает выполнение нейросетевых операций. Примером нейросигналного процессора является NM6403, реализующий архитектуру NeuroMatrix.

4.1.1  Структура нейропроцессора NM6403.

Ядро nm6403 состоит из двух базовых блоков: 32-битного RISC процессора и 64 битного векторного процессора, обеспечивающего выполнение векторных операций над данными переменной разрядности. Имеются два идентичных программируемых интерфейса для работы с внешней памятью различного типа и два коммуникационных порта, аппаратно совместимых с портами DSP TMS320C4x, для построения многопроцессорных систем. Общая структура нейропроцессора показана на рис. refnm6403.

Рис. 12: Общая структура нейропроцессора NM6403

Нейропроцессор предназначен для обработки 32 разрядных скалярных данных и данных программируемой разрядности (с упаковкой в 64 разрядные слова). Основными узлами нейропроцессора являются:

Нейропроцессор содержит пять внутренних шин:

Рис. 13: Ядро нейропроцессора NM6403

Структура ядра нейропроцессора представлена на рис. 13. Регистровое АЛУ (RALU) служит для оперативного хранения до восьми 32 разрядных скалярных данных и выполнения над ними операций сдвига, одно и двухоперандных арифметических и логических операций. При выполнении операций в RALU формируются признаки, которые используются при выполнении условных команд. Данные, хранящиеся в RALU, могут также использоваться в качестве адресов и смещений при выполнении команд обращения к памяти и команд управления.

RALU содержит:

DAG1 - первый генератор адресов данных служит для формирования адресов данных при выполнении команд обращения к памяти и адресов переходов при выполнении команд управления. Кроме того, DAG1 обеспечивает оперативное хранение и модификацию до четырех 32 разрядных адресов данных, адресов переходов или смещений адресов переходов. DAG1 содержит:

Второй генератор адресов данных DAG2 по своей структуре и выполняемым функциям аналогичен DAG1. Его специфика заключается в том, что один из его адресных регистров AR7(SP) дополнительно выполняет функции системного указателя стека.

Генератор адресов команд (PROGRAMM SEQUENCER), служит для формирования адреса очередной 64 разрядной команды или очередной пары 32 разрядных команд на линейных участках программы, когда вычисление адреса каждой следующей команды осуществляется путем инкремента адреса текущей команды.

Генератор адресов команд включает в себя следующие блоки:

Блок управления (CONTROL UNIT) выполняет предварительный анализ и дешифрацию команд, выбранных из внешней памяти, формирует сигналы управления всеми узлами нейропроцессора в процессе конвейерного выполнения команд, обрабатывает все запросы на внутренние и внешние прерывания, осуществляет арбитраж.

Рис. 14: Векторный сопроцессор

Векторный сопроцессор (VCP) является основным вычислительным узлом нейропроцессора особенно для нейросетевых приложений. VCP ориентирован на обработку данных произвольной разрядности от 1 до 64 разрядов, упакованных в 64 разрядные слова. Возможность выбора разрядности обрабатываемых данных является отличительной чертой нейропроцессора NM6403. Основными узлами VCP являются:

4.1.2  Возможности создания многопроцессорных вычислителей на базе NM6403.

Нейропроцессор NM6403 имеет следующие аппаратные средства, предназначенные для построения многопроцессорных систем на его основе:

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

Возможны три типа конфигурации внешней шины для многопроцессорного режима:

4.1.3  Реализация нейронной сети на нейропроцессоре NM6403.

Рис. 20: Модель слоя сети NM6403

Обработка реакции сети на входное воздействие происходит в нейропроцессоре последовательно, слой за слоем. На рис. 20 показана модель нейронной сети, эмулируемой NM6403. В общем случае каждый слой нейросети имеет N нейронных входов и состоит из M нейронов. При этом каждый нейрон выполняет взвешенное суммирование с учетом смещения данного нейрона:

Ym = Vm+ N
е
n = 1 
Xn×Wn,m.
Затем каждый нейрон вычисляет функцию насыщения от результата взвешенного суммирования:
OUTm = FQm(Ym).
Все входные данные, весовые коэффициенты, пороговые значения и результаты представляются в дополнительном коде.

Процессор NM6403 создавался как универсальное средство для реализации нейросред. При его использовании пользователь может программно задавать множество параметров нейронной сети:

Для эмуляции нейронной сети каждый ее слой разбивается на последовательно обрабатываемые фрагменты. Данное разбиение осуществляется следующим образом. Множество нейронных входов слоя разбивается на группы входов так, чтобы суммарная разрядность данных, подаваемых на каждую группу входов, была равна разрядности нейропроцессора - 64. Множество нейронов слоя разбивается на группы нейронов так, чтобы суммарная разрядность результатов взвешенного суммирования для каждой группы также была равна 64. Таким образом выделяются фрагменты сети двух типов с разным функциональным назначением: первый тип фрагментов осуществляет взвешенное суммирование, а второй - вычисление функции активации.

Эмуляция слоя нейронной сети на нейропроцессоре NM6403 состоит из последовательно выполняемых макроопераций, каждая из которых эмулирует один фрагмент слоя. Число выполняемых макроопераций равно числу фрагментов в слое. Обработка данных ведется нейропроцессором в пакетном режиме - по T наборов входных данных в каждом пакете. Пакет данных, подаваемых на группу нейронных входов слоя нейронной сети представляет собой вектор Xn = < X1,јXn > , каждый элемент которого является вектором упакованных данных. Разрядность каждой из упакованных величин может принимать любое четное значение в диапазоне от 2 до 64, то есть количество элементов вектора может быть любым от 1 до 32. Ограничением является то, что суммарная разрядность всех данных, упакованных в одном векторе, должна быть равна 64.

При эмуляции фрагмента первого типа нейропроцессор выполняет следующую операцию для каждого набора входных данных: Yn = Yn-1+Xn×Wn. В качестве Y0 выступает смещение V0.

64 разрядные выходные векторы содержат упакованные данные с разрядностью от Nmin до 64. Значение минимальной разрядности каждого элемента в этих векторах зависит от суммарного числа нейронных входов в слое и вытекает из необходимости избегать арифметического переполнения при сложении чисел:

Nmin = 1+(log2 N
е
n = 1 
Nn).

Выполнение операции взвешенного суммирования над всеми векторами задается одной командой <<vsum>> нейропроцессора. Выполнение этой команды зависит от количества значений в обрабатываемом векторе, за один такт обрабатывается один компонент вектора.

При эмуляции фрагмента второго типа для группы нейронов процессор формирует вектор Xn = < OUT1,јOUTm > , каждый элемент которого является вектором упакованных данных. Компонентами вектора OUTi являются результаты вычисления функции насыщения над элементом Yi вектора Y:

OUTi,j = FQm(Yi).

Вычисление функций насыщения для всех элементов всех векторов задается одной командой <<activate>> нейропроцессора. Время выполнения этой команды также составляет один такт на компонент.

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

5  Применение систолических процессоров для построения нейросред.

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

5.1  Систолический процессор SAND.

Чип SAND (Simple Applicable Neural Device) разработан для применения в промышленных и исследовательских системах реального времени. Чип способен реализовывать нейросети с максимальным числом входов 512.

Принцип параллельной работы обрабатывающих элементов показан на рис. .

Рис. 21: Параллельная работа обрабатывающих элементов

Вектор входных значений (vector of input activities) подается параллельно на все обрабатывающие элементы. Матрица весов (weight-matrix) разделена на m векторов-строк (line vector), каждый из которых обрабатывается собственным обрабатывающим элементом. В результате работы каждого элемента получается одна из m выходных величин. Таким образом, для слоя нейросети, состоящего из m нейронов, можно использовать m элементов, работающих в параллельном режиме, без обмена информацией.

Существенным недостатком этого решения является необходимость иметь m блоков памяти для матрицы весов (для каждого блока). Это приводит к большому числу компонентов и высокой стоимости схемы. Можно использовать один общий блок памяти, но тогда доступ к этому блоку должен происходить на крайне высокой скорости (в m раз больше, чем в предыдущем случае). Современные чипы памяти не способны обеспечить такие скорости.

Эффективное решение этой проблемы возможно, если количество весов равно количеству входных величин (длине входного вектора). При этом рассматривается не один входной вектор, а их последовательность. Входной вектор заменяется матрицей входных значений из m колонок.

Рис. 22: Пример обработки данных (m = 4 входных вектора)

На рис. 22 показан пример обработки данных для m = 4. Четыре обрабатывающих элемента производят обработку сразу четырех входных векторов. Значения, уже переданные в чип SAND показаны на рисунку заштрихованными. Четыре обрабатывающих элемента показаны кругом, пятиугольником, восьмиугольником и квадратом. За каждый цикл перемножаются два одинаково выделенных элемента. За каждый цикл из памяти необходимо передавать только один весовой коэффициент и одно входное значение (остальные значения уже выбирались ранее). Четыре цикла обрабатывающий элемент работает с одним и тем же весовым коэффициентом, каждый четвертый цикл вес обновляется. Таким образом на шине весов наблюдается непрерывный поток значений-весов. Входные значения передаются от одного обрабатывающего элемента к следующему через внутренние регистры. Каждый цикл происходит передача очередного входного значения, поэтому на входной шине также наблюдается непрерывный поток значений.

Рис. 23: Структура чипа SAND

Архитектура кристалла SAND показана на рис. 23. Он содержит четыре параллельных обрабатывающих элемента PE (Processing Elements), каждый из которых снабжен АЛУ и блоками отсечения (auto-cut). АЛУ используется для умножения векторов. Так как АЛУ накапливает входные значения, выходная шина имеет разрядность 40 бит (это ограничивает число входных нейронов до 512). Блок отсечения приводит снижает разрядность до 16 с контролем переполнения и потери точности. Окно, выбирающее 16 бит из 40 может быть смещено пользователем по его усмотрению.

Для некоторых задач необходим модуль постобработки (Post-Processing Min-Max Search), который проводит поиск минимума или максимума. Функция активации реализована в виде внешнего чипа, содержащего таблицу поиска. Некоторые типы нейросетей нуждаются не только в нелинейной функции активации, но и в линейной функции f(x) = x. Поэтому чип имеет два выхода: address - адрес в таблице поиска и data - линейное выходное значение. Для более быстрого вычисления блоки сложения и умножения размещены последовательно, образуя конвейер. Входные значения вначале умножаются на соответствующие веса, а затем складываются с предыдущими значениями.

5.2  Систолический процессор CNAPS

Данная архитектура разработана компанией Adaptive Solutions, она представляет собой SIMD мультипроцессор общего назначения, разработанный для нейроприложений. Так как чип представляет собой не узкоспециализированное устройство, а микропроцессор общего назначения, то становится возможным реализовать широкий спектр алгоритмов обучения и функционирования нейросети. Чип имеет действительно большую емкость памяти весов, позволяя хранить 2M 1 битных весов, или 256K 8 битных весов, или 128K 16 битных весов, поровну распределенных между 64 процессорами. Чипы могут образовывать мультимикропроцессорные системы различной конфигурации.

Базовым элементом системы CNAPS является чип N6400, который состоит из 64 обрабатывающих элементов, соединенных широковещательной шиной в режиме SIMD. Принципиальная структура системы CNAPS показана на рис. . Типовая система содержит управляющий чип (Sequencer) и четыре процессора N64000 (хотя есть системы с 8 процессорами).

Рис. 24: Структура системы CNAPS.

Рис. 25: Обрабатывающий узел процессора N64000

Обрабатывающие элементы (Processing nodes, PN) разработаны как обычные цифровые сигнальные процессоры, включающие сумматор и умножитель, выполняющие арифметические операции над числами с фиксированной запятой. Структура обрабатывающего узла PN показана на рис. 25. Каждый PN содержит 4 Кбайта локальной статической памяти, которая используется для хранения весовых коэффициентов. Размер локальной памяти является узким местом для больших нейросетей, так как при нехватке памяти происходит обмен по широковещательной шине. Производительность падает катастрофически, когда 64 процессорных узла ведут обмен по общей шине.

Так как N64000 работает как микропроцессор общего назначения, то CNAPS может реализовать широкий класс нейросетевых алгоритмов. Для этой архитектуры создан инструментальный набор, который включает C-компилятор с надстройками, позволяющими получать код, использующий все преимущества параллельной архитектуры.

6  Применение ПЛИС для построения нейросред.

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

Современные образцы ПЛИС, выполненные по современной 0,22-микронной технологии, способны работать на частотах до 300 МГц и реализуют до 3 млн. эквивалентных логических вентилей. Компания Xilinx, один из мировых лидеров в данной области, уже объявила о выпуске ПЛИС в 10 млн. логических вентилей.

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

ПЛИС изготовляются многими производителями, среди которых основными являются Altera, Xilinx, Atmel, Csypres, Lattice, Lucent. Выделить продукцию какой-либо одной из этих фирм невозможно, так как по техническим характеристикам они различаются очень мало.

По принципу формирования требуемой структуры целевого цифрового устройства все основные современные ПЛИС подразделяются на две группы:

Рассмотрим структуру ПЛИС на примере семейства AT40K, выпускаемого компанией Atmel. Чипы этого семейства имеют следующие характеристики:

Основным архитектурным блоком является матрица одинаковых ячеек (рис. ). Массив однороден по всей площади, кроме шинных повторителей, отделяющих каждые четыре ячейки.

Рис. 26: Массив ячеек AT40K

На пересечении вертикальных и горизонтальных линеек повторителей расположен блок RAM 32x4, доступный для смежных ячеек. Эта память может быть сконфигурирована для синхронного и асинхронного доступа и для одно- и двухпортового режима работы.

Рис. 27: Плоскость шин (одна из пяти)

Сама концепция ПЛИС предполагает наличие возможности разнообразного соединения вычислительных ячеек. Весь кристалл охватывает пять идентичных плоскостей шин (рис. 27), каждая из которых содержит 2 плоскости express-шин и одну плоскость local-шин. Шины функционируют благодаря повторителям. Каждый повторитель имеет соединения с двумя соседними сегментами local-шины и двумя соседними сегментами express-шины. Повторители усиливают сигналы и могут соединять любые шины данной плоскости шин.

Ячейка может соединяться с любой из восьми соседних ячеек и любой из локальных шин (вертикальных или горизонтальных). Каждая ячейка может быть соединена только с одной шиной из шинной плоскости.

Рис. 28: Связи ячейки AT40K

Основой ячейки FPGA является логическая таблица (LUT - look-up table), представляющая собой однобитное ОЗУ на 8 ячеек. Триггеры всех логических таблиц входят в состав программирующего регистра и их начальное состояние заполняется в период конфигурирования ПЛИС. Каждая ячейка содержит две логические таблицы.

В ПЛИС используются программируемые D-триггеры. При конфигурировании, обычно, можно задать такие режимы работы триггера, как триггер с начальным сбросом (R) или начальной установкой (S), с записью по фронту или спаду синхросерии, с разрешением или без разрешения записи. Различные варианты соединения логических таблиц и триггера позволяют создавать на базе ячеек различные устройства: регистры, сумматоры, умножители, счетчики.

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

Для реализации в ПЛИС модулей ОЗУ предусмотрено две возможности. Первую возможность предоставляет каждая ЛТ, которая может быть сконфигурирована как ОЗУ. Для наращивания емкости памяти выходы нескольких ячеек с модулями ОЗУ через тристабильные буферы подключаются к общим шинам. При этом требуется дополнительное оборудование только для построения схемы дешифрации адреса, которая выдает сигналы выборки той или иной логической таблицы для записи, а также того или другого тристабильного буфера для чтения. Такое ОЗУ распределено по площади кристалла и поэтому названо Distributed RAM (распределенным ОЗУ).

Вторую возможность предоставляют отдельные блоки памяти, имеющиеся в ПЛИС. Блоки двухпортовой 32x4 RAM распределены по кристаллу (рис. 26). Две четырехбитовые шины (входные данные и выходные данные) подключены к local-шинам. Пятибитные шины адреса записи и чтения подключены к пяти вертикальным express-шинам.

Преимуществами FPGA-чипов для реализации нейроустройств являются:

Реализовать нейросистему на ПЛИС-микросхемах можно двумя различными способами:

К сожалению, ПЛИС-нейросред разработано пока мало. Единственным описанным примером является модуль цифровой обработки сигналов XDSP-680-CP фирмы СканИнжинирингТелеком. Модуль XDSP-680-CP предназначен для решения задач цифровой обработки сигналов высокой производительности и, благодаря наличию трактов АЦП и ЦАП, позволяет строить полностью законченные системы обработки как цифровых, так и аналоговых сигналов с вводом-выводом данных из ПЭВМ. В качестве возможных областей применения производители указывают нейросетевые вычислители. Общая структура модуля приведена на рис. .

Рис. 29: Структура модуля XDSP-680

Модуль выполнен в виде PCI-платы. Плата содержит четыре ПЛИС XCV50-4PQ240C, служебная ПЛИС типа CPLD XC95288XL, банк SRAM 128Kx32 со временем доступа 7.5нс, FLASH 16Мбит, АЦП 12бит 80МГц, ЦАП 14бит 125МГц, два внешних цифровых порта по 16бит, компаратор тактового ввода.

Системная тактовая частота FPGA-схем может составлять 250МГц, что позволяет добиваться высокой производительности:

7  Применение аналоговых и гибридных для построения нейросред.

Гибридные и аналоговые решения теоретически могут обеспечивать наибольшее быстродействие при эмуляции нейронной сети. К сожаления действующих реализаций таких чипов очень мало. Вероятно, это связано со сложностью разработки микросхем этого типа, а также с тем, что постоянный рост производительности цифровых устройств обеспечивает преимущество в скорости. Тем не менее на рынке присутствует аналоговая СБИС ETANN 80170NX фирмы Intel и гибридное решение СБИС CLNN32/CLNN64 фирмы Bellcore.

7.1  СБИС ETANN 80170NX.

Эта СБИС получила распространение в экспериментах физики высоких энергий. СБИС 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Вт).

7.2  СБИС CLNN32/CLNN64 фирмы Bellcore.

Гибридный нейрочип 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 имеет следующие очевидные преимущества:

8  Применение процессоров общего назначения для построения нейросред.

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

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

Широкое применение нейросетей в архитектурах общего назначения также объясняется постоянным ростом производительности в этой области. Нейроалгоритмы относятся к ресурсоемким задачам, но современный уровень производительности рабочих станций позволяет для большинства задач получать приемлемые по скорости решения даже без особых процедур оптимизации. Кроме того распространенные сегодня процессоры имеют специальные расширения (нацеленные на мультимедиа приложения), которые позволяют ускорить обработку нейроалгоритмов. В частности, в архитектуру команд вводятся SIMD-инструкции, команды умножения с накоплением, возможности оперирования с упакованными данными малой разрядности. Причем этот процесс продолжается.

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

Достоинства процессоров общего назначения:

Недостатки процессоров общего назначения:

9  Сравнение быстродействия различных решений.

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

Тем не менее, для области нейросетевой обработки данных характерны следующие показатели быстродействия:

Сравнение показателей производительности рассметренных в данной работе аппаратных решений представлено в талице .

НазваниеПроизводительностьОписание
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

Таблица 4: Производительности нейроархитектур

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

Аналоговая микросхема 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: Выполнение стандартных преобразований

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

10  Основные достоинства и недостатки различных решений

ДостоинстваНедостатки
Процессоры общего назначения
  • Гибкость
  • Наличие высокоуровневых библиотек и средств реализации
  • Совместимость с другими процессорами
  • Большие объемы памяти
  • Высокая разрядность

  • Высокая стоимость систем
  • Архитектурная избыточность
  • Большое энергопотребление и тепловыделение
  • Необходимость множества периферийных схем
  • Сложность построения многопроцессорных систем
Цифровые сигнальные процессоры
  • Гибкость
  • Простота построения систем
  • Наличие стандартных библиотек

  • Отсутствие совместимости с чипами других семейств
  • Отсутствие готовых решений
  • Сложность построения мультимикропроцессорных систем
Нейросигнальные процессоры
Все достоинства DSP.

  • Высокая производительность для нейроалгоритмов
  • Наличие стандартных решений

  • Отсутствие совместимости
  • Ориентация на конкретный вид нейросети

ДостоинстваНедостатки
Систолические процессоры
  • Высокая производительность для нейроалгоритмов
  • Наличие стандартных решений
  • Простота масштабирования системы

  • Отсутствие совместимости
  • Увеличение задержки с ростом числа процессоров в системе
  • Отсутствие гибкости
ПЛИС-системы
  • Аппаратная реализация нейроалгоритмов
  • Наличие высокоуровневых средств построения систем
  • Совместимость на уровне языка описания схемы
  • Простота реализации системы
  • Возможность модификации архитектуры

  • Неполное использование ресурсов чипа
  • Огранниченность ресурсов чипа
Реализация нейросети на заказном кристалле
  • Наивысшая производительность
  • Ориентация на конкретную систему

  • Отсутствие совместимости
  • Высокая стоимость реализации
  • Большое время реализации


File translated from TEX by TTH, version 2.25.
On 25 Feb 2003, 19:37.

ВверхДомой