Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Д. Н. СИЗЕМОВ, С. П. ЯКИМОВ
Сибирский государственный технологический университет, Красноярск
*****@***ru
ЗАДАЧА СамоорганизациИ
распределённого нейроимитатора
Работа посвящена исследованию проблемы распараллеливания нейровычислений, а также, постановке и решению задачи самоорганизации распределённых нейросистем. В работе также рассматривается предложенная авторами концепция распределённого нейроимитатора.
1. Нейрокомпьютинг: проблема ресурсоёмкости
На сегодня известно множество научных и практических задач, решение которых успешно осуществляется с помощью адаптивных, в частности, неросетевых технологий, среди них – биологические, медицинские и прочего характера экспертные системы, различного рода социальные исследования, метеорологические и иные прогнозы и т. д. Данные средства достаточно давно приняты на вооружение, однако, круг доступных такому решению задач, и по сей день ограничен фактором ресурсоёмкости.
Экстенсивный путь освоения ресурсоёмких задач, как и в большинстве иных случаев, заключается в разработке и внедрении всевозможных специализированных аппаратных решений (нейрокомпьютер, нейрочипы, платы расширения и т. д.), обладающих параллелизмом. Разумеется, все подобные решения, вряд ли, когда-нибудь станут массовыми, ввиду специфичности, малой распространённости нейрозадач (по сравнению, например, с Internet-технологиями), а следовательно, их доступность будет весьма ограниченной.
Интенсивный же путь представляет собой более рациональное использование доступных средств, таких, как персональные компьютеры и вычислительные сети. Объединение ресурсов нескольких ПЭВМ и ЛВС, создание кластера, является перспективным направлением оптимизации механизмов решения многих задач. Однако, ни в одной из сфер, а тем более, в такой молодой, как нейроинформатика, до настоящего времени не выявилось наилучшей методики адаптации решающего аппарата к параллельной среде кластера – данное направление в настоящее время является полем исследований.
В последние годы появились несколько проектов, посвящённых теме распараллеливания нейровычислений на программном уровне, посредством адаптации алгоритмов обучения и функционирования нейронных сетей к естественно параллельной вычислительной среде компьютерной сети, образованной несколькими ЭВМ, функционирующими одновременно [1, 2 и др.]. Основное сходство (и, на наш взгляд, одновременно – недостаток) таких проектов состоит в использовании в качестве инструмента распараллеливания универсальных средств (MPI, PVM, параллельные языки программирования), не предусматривающих специализации под какой-либо конкретный тип задач, в данном случае – задачи нейроинформатики и, как следствие, дающих неоптимальное решение.
2. Нейросервер – распределённый нейроимитатор
с явно параллельной архитектурой
С учётом упомянутой проблемы нами была разработана концепция распределённого нейроимитатора (нейросервера) [3], имеющего параллельную архитектуру, специализированную под структуру нейронной сети и основанную на объектно-ориентированном представлении формального нейрона (рис. 1). Представление каждого нейрона (в общем случае – элемента нейронной сети) в виде объекта позволяет максимально детализировать нейронную сеть с тем, чтобы в дальнейшем произвести условное разделение нейронной сети на вычислительные сегменты, параллельное функционирование которых допускается топологией нейронной сети и/или алгоритмом её обучения – собственно, распараллеливание (рис. 2).
Программная система имеет трёхзвенную архитектуру, предполагающую наличие нескольких клиентских приложений, непосредственно осуществляющих вычисления, диспетчеризирующего их работу серверного приложения, а также, сервера БД (на начальных этапах мы использовали серверы семейства Interbase).
В процессе работы каждое клиентское приложение производит вычисления относящиеся к какому-либо сегменту реализуемой нейронной сети. Разбиение нейронной сети на сегменты производится на предварительном этапе, каждый сегмент может иметь размер от полной нейронной сети до одного нейрона или иного элемента нейронной сети (предельные, вырожденные случаи). При этом сигналы передаются друг другу элементами, как в пределах одного клиентского приложения, так и между различными приложениями, опосредованно, через сервер. В обоих случаях используется специально разработанная система сообщений и сетевых пакетов.

Рис. 1. Объектно-ориентированное представление формального нейрона

Рис. 2. Распределение элементов нейронной сети по узлам кластера
Архитектура системы позволяет реализовывать сегментарные вычисления с большим количеством передаваемых сигналов в пределах одного приложения (локально), и одновременно с этим, «узкие горла» нейронной сети – в виде передачи сигналов по ЛВС между клиентскими приложениями. Кроме того, в целях обеспечения оптимально распределения вычислительной нагрузки между узлами кластера порядок размещения сегментов нейронной сети в кластере может быть назначен, в зависимости от условий протекания эксперимента.
3. Формулировка и решение задачи самоорганизации нейросервера
При разбиении реализуемой нейронной сети на сегменты и распределении данных сегментов по узлам кластера – предполагается мануальное распределение. Вполне логичен вопрос о возможности автоматического распределения. Следует отметить, что в данных обстоятельствах возможно применение нескольких подходов; в свою очередь мы предлагаем следующий.
Предположим, в распоряжении имеется кластер из N ЭВМ (вычислительная производительность не учитывается, множество N не включает сервер), в котором, с помощью нейросервера необходимо реализовать нейронную сеть, состоящую из K элементов (учитываются, как нейроны, так учители и прочие элементы нейронной сети). Обозначим:
множество узлов кластера:
, (1)
множество элементов нейронной сети:
; (2)
при этом: K ≥ N – если количество элементов нейронной сети меньше количества узлов в кластере, то эти количества считаются равными и незанятые в процессе ЭВМ не учитываются.
Предположим, имеется распределение узлов нейронной сети по кластеру, и для каждого
назначен
, т. е. для каждого элемента нейронной сети определено, каким клиентским приложением он будет создан:
. (3)
При данном распределении система осуществляет решение тестовой задачи с заданными начальными условиями за время
. Последнее высказывание можно записать в виде:
. (4)
Перераспределение узлов нейронной сети по кластеру приведёт к изменению условий протекания процесса параллельных вычислений и, соответственно, времени решения той же типовой задачи с типовыми начальными условиями. Таким образом, задача самоорганизации нейросервера (или оптимизации распределения узлов нейронной сети по кластеру) сводится к минимизации функции зависимости времени решения от распределения:
. (5)
Такая функция F(Q), разумеется, не имеет формальной записи, таким образом, градиентные методы оптимизации к ней неприменимы, тем не менее, для неё может быть рассчитана таблица значений и построен график – некоторая поверхность.
Рассмотрим пример: пусть нейронная сеть состоит из 2-х слоёв, содержащих 2 и 1 элемента соответственно (всего – 3), и необходимо распараллелить её функционирование с использованием кластера, состоящего из 2-х ЭВМ. Размещение 3 элементов нейронной сети на 2-х узлах кластера может быть осуществлено 3-мя способами: 1 – все элементы на одном узле; 2 элемента 1-го слоя – на 1-м узле, последний элемент – на 2-м; 1 элемент 1-го слоя и элемент 2-го – на 1-м узле, оставшийся элемент 1-го слоя – на 2-м (рис. 3). Узлы кластера, как уже отмечалось ранее, в предложенных схемах, предполагаются эквивалентными по вычислительной производительности.

Рис. 3. Способы распределения элементов нейронной сети по узлам кластера: (слева – все элементы на одном узле; по центру – первый слой – на первом узле, второй – на втором, соответственно; справа – обособление одного из нейронных процессов первого слоя)
Разумеется, данная задача тривиальна (ввиду незначительного числа элементов нейронной сети), и в этих условиях распараллеливание невыгодно: вычислительная нагрузка на узлы кластера будет столь мала, что затраты времени на вычисления, производимые ими будут несоизмеримы по сравнению с затратами на передачу данных по сети. Таким образом, ещё до начала измерения времени решения типовой задачи при различных разбиениях, очевидно, что наиболее производительным будет размещение полной нейронной сети на одном узле кластера – данный пример нужен лишь для того, чтобы наглядно проиллюстрировать ход анализа распределения.
Итак, случай наиболее производительного распределения подразумевает реализацию полной нейронной сети в пределах одного узла, следовательно, одновременно всем трём элементам может быть назначен узел 1 либо узел 2. Таким образом, Q = (1, 1, 1) и Q = (2, 2, 2) обеспечивают наибольшую производительность, и точки с соответствующими координатами в пространстве узлов кластера будут иметь наибольшее значение функции-критерия оптимальности. На рис. 4 данные точки отображены наиболее крупными кругами.
Второй по производительности случай – разделение элементов нейронной сети по узлам кластера в соответствии с принадлежностью к тому или иному слою – элементы одного слоя размещаются рядом (Q = (1, 1, 2) и Q = (2, 1, 1)). В данном случае, несмотря на потерю времени при передаче сигналов по сети, элемент второго слоя всё же получает все координаты входного вектора (выходные значения всех элементов предыдущего слоя) одновременно и активируются при этом незамедлительно. При этом отработавший первый слой нейронной сети становится свободен и может принимать новый вектор. На рис. 4 данные точки соответствуют кругам меньшего размера (светлым).
И, наконец, точки наименьшей производительности – наименьшего размера круги, соответствуют наименее оптимальным распределениям. При размещении лишь одного элемента первого слоя обособленно, второй элемент этого же слоя, расположенный в непосредственной близости к элементу второго слоя, передаёт выходной сигнал последнему значительно быстрее, так как исключается передача по сети (рис. 3, справа). Таким образом, элемент последнего слоя не срабатывает до тех пор, пока не получит сигнал от обособленного расположенного элемента. При этом первый слой нейронной сети не является свободным, т. е. не готов принять следующий вектор выборки, т. е. нейронная не получает следующий вектор до тех пор, пока последний её элемент не закончит обработку предыдущего.
Итак, постановка задачи самоорганизации нейросервера сводится к задаче целочисленной оптимизации функции нескольких переменных, не имеющей формальной записи. Для этих целей мы предлагаем использовать целочисленные модификации метода многомерной оптимизации Хука-Дживса [4], однако, при решении данной задачи также могут быть применены и другие методы, в том числе нейросетевые.

Рис. 4. Значение эффективности для различных распределений
Список литературы
1. Douglas Aberden, Jonathan Baxter, Robert Edwards 92c/Mflops, Ultra-large-scale neural-network training on a PIII cluster. – Proc. Supercomputing’2000.
2. , Параллельная нейронная сеть с удаленным доступом на базе распределенного кластера ЭВМ. – http://neural.
3. , , Якимов распределенной нейросетевой обработки, реализованный в проекте "Нейросервер". – М.: ВИНИТИ, 2004.
4. Струченков оптимизации: Основы теории, задачи, обучающие компьютерные программы – М.: Экзамен, 2005, 255 с.
5. Буч Г Объектно-ориентированный анализ и проектирование с примерами приложений на С++. – С-Пб.: «Невский диалект», 1998г., 560 с.


