ence on Hypercube concurrent computers and applications, ACM, NY, USA, 1989, Vol. 2, pp. 1635-1655.
5. Watkins D.S., Fundamentals of Matrix Computations. 2nd ed. John Wiley and Sons, 2002, 618 p.
6. Hendrickson B.A., Womble D.E., The Torus-Wrap Mapping For Dense Matrix Calculations On Massively Parallel Computers, SIAM J. Sci. Stat. Comput., 1994, Vol. 15, pp. 1201-1226.
7. Lam M.S., Rothberg E.E., Wolf M.E., The Cache Performance and Optimization of Blocked Algorithms. Proc. 4th Intern. Conf. on Architectural Support for Programming Languages and Operating Systems, 1991, pp. 63-74.
8. MPI: A Message-Passing Interface Standard Version 2.2. URL: http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf (дата обращения: 12.11.2012).
9. Intel® 64 and IA-32 Architectures Optimization Reference Manual. URL: http://www.intel.com/content/www/us/en/architectu-re-and-technology/64-ia-32-architectures-optimization-manual.html (дата обращения: 12.11.2012).
10. Konovalov A.V., Constitutive relations for an elastoplastic medium under large plastic deformations. Mechanics of Solids, 1997, Vol. 32, no. 5, pp. 117-124.
References
1. Pozdeev A.A., Trusov P.V., Nyashin Yu.I., Bolshie uprugo-plasticheskie deformatsii [Big elasto-plastic deformations], Moscow, Nauka, 1986.
2. Konovalov A.V., Tolmachev A.V., Partin A.S., Computational Continuum Mechanics, 2011, Vol. 4, no. 4, pp. 34-41, available at: http://www.icmm.ru/joumal/download/CCMv4n4a4.pdf (accessed 21 April 2013).
3. Choi J., Dongarra J.J., Ostrouchov S., Petitet A.P., Walker D.W., Whaley R.C., Scientific Programming, 1996, pp. 173-184.
4. Walker D.W., Aldcroft T., Cisneros A., Fox G.C., Furmanski W., Proc. of the 3rd conf. on Hypercube concurrent computers and applications, Vol. 2. ACM, 1989, NY, USA, pp. 1635-1655.
5. Watkins D.S., Fundamentals of Matrix Computations, 2nd ed., John Wiley and Sons, 2002.
6. Hendrickson B.A., Womble D.E., SIAM Journ. on Stat. Computing, 1994, Vol. 15, pp. 1201-1226.
7. Lam M.S., Rothberg E.E., Wolf M.E., Proc. of the 4th Int. Conf. on Architectural Support for Programming Languages and Operating Systems, 1991, pp. 63-74.
8. MPI: A Message-Passing Interface Standard Version 2.2, available at: http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report. pdf (accessed 12 November 2012).
9. Intel® 64 and IA-32 Architectures Optimization Reference Manual, available at: http://www.intel.com/content/www/us/en/ar-chitecture-and-technology/64-ia-32-architectures-optimization-ma-nual.html (accessed 12 November 2012).
10. Konovalov A.V., Mechanics of Solids, 1997, Vol. 32, no. 5, pp. 117-124.
УДК 004.42+004.9
РАСПРЕДЕЛЕННАЯ ПЛАТФОРМА ДЛЯ ПАРАЛЛЕЛЬНОГО ОБУЧЕНИЯ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ DisANN
(Исследование выполнено при финансовой поддержке РФФИ, проекты №№ 13-08-00070-а, 13-01-90408-Укр-ф-а)
Нгуен Занг Зуи Чыонг, аспирант; А.А. Краснощекое, аспирант (Донской государственный технический университет, пл. Гагарина, 1, г. Ростов-на-Дону, 344000, Россия, giangvmu@gmail. com, akrasnoschekov@gmail. com)
В данной работе описан процесс проектирования, реализации и внедрения системы распределенного обучения нейронных сетей на основе алгоритма learning-by-block для нейронных сетей прямого распространения. Распределение происходит в рамках массива обучающих векторов, который разделяется на несколько блоков, а блоки в свою очередь передаются вычислительными узлами. Таким образом, обучение нейронной сети распараллеливается в рамках одной эпохи. Так как нейронные сети по принципу своей работы устойчивы к ошибкам, то потери блоков не критичны. Для избежания узких мест в момент синхронизации в конце каждой эпохи обучение может проводиться с потерями. При синхронизации и переходе к следующей эпохе необходимо и достаточно определенного процента использованных для обучения блоков или заданного объема процессорного времени. В рамках каждой эпохи потери в обучении компенсируются взвешенным значением последнего успешного результата. Система базируется на созданной ранее open-source платформе для проведения grid-вычислений Anthill. Применение концепции grid-вычислений, возможность управления через web-интерфейс и свободного выбора библиотек для моделирования нейронных сетей позволили создать систему, обладающую высокой степенью гибкости и простоты использования.
Ключевые слова: распределенные вычисления, grid-вычисления, искусственные нейронные сети, параллельное обучение нейронных сетей, алгоритм обратного распространения ошибки, алгоритмы обучения нейронных сетей, слабосвязанные задачи, Python, Django.
A DISTRIBUTED PLATFORM FOR PARALLEL TRAINING OF DISANN ARTIFICIAL NEURAL NETWORKS
Nguyen Duy Truong Giang, postgraduate; Krasnoschekov A. A, postgraduate (Don State Technical University, Gagarin Sq., 1, Rostov-on-Don, 344000, Russia, giangvmu@gmail. com, akrasnoschekov@gmail. com) Abstract. The article describes the process of design, development and implementation of distributed neural network learning system based on learning-by-block algorithm for feed-forward neural networks. Distributing occurs in the array of training vectors which is divided into several blocks, transmitted to computing nodes. Thus, the neural network training is parallelized within the same epoch. Since neural networks are resistant to errors, losses are not critical. To avoid synchroniza-
tion bottlenecks in the end of each epoch, training may be carried out with losses of blocks. When synchronizing and transiting to the next epoch only a certain percentage of used training blocks or predetermined processor time is required. Within each period loss in training is compensated with the weighted value of last successful result. The system is based on a previously created Anthill open-source platform for grid-computing. Applying the concept of grid-computing, the ability of controlling through web-interface and free choice of libraries for neural networks simulation allowed creating a system with a high degree of flexibility and ease of use.
Keywords: distributed computing, grid computing, neural network, artificial neural networks, back-propagation algorithm, error back-propagation learning, neural network learning algorithms, Python, Django.
Распределенные вычисления открыли новые пути приложениям, требующим больших вычислительных мощностей. Рост объемов данных обусловил практически повсеместное использование распределенных вычислений [1]. Вместе с тем применение распределенных вычислений для обучения искусственных нейронных сетей (ИНС) является относительно новой и мало исследованной задачей [2, 3].
Еще в 40-х годах прошлого века достижения нейробиологии позволили создать первую искусственную нейронную сеть, которая имитировала работу человеческого мозга. Но только через несколько десятилетий, с появлением современных компьютеров и адекватного ПО стала возможной разработка сложных приложений в области ИНС. Сегодня теория нейронных сетей - одно из наиболее перспективных направлений научных исследований. Этому способствовали сама природа параллельных вычислений и практически доказанная возможность адаптивного обучения нейронных сетей.
C увеличением сложности задач, решаемых современной наукой, появляется необходимость во все больших вычислительных мощностях. Это требует серьезных инвестиций в модернизацию вычислительных систем. Однако в действительности уже имеющиеся ресурсы расходуются непродуктивно: так, компьютеры в научных организациях работают максимум на 10 % своей мощности, а серверы - на 30 % [3]. При рациональном использовании этих ресурсов можно выполнять существенные объемы вычислений.
Решить задачу эффективного использования в глобальном масштабе ресурсов, принадлежащих одной или нескольким организациям, призвана технология grid-вычислений. Данные вычисления подтвердили свою значимость в науке такими проектами, как Boinc, EGEE, AntHill.
Таким образом, растущая потребность в вычислительных мощностях и высокая степень интеграции распределенных вычислительных ресурсов делают создание платформы для обучения нейронных сетей приоритетной задачей. В данной работе изучены подходы к построению и параллельному обучению ИНС, раскрыты преимущества и недостатки каждой отдельной архитектуры, описана созданная распределенная вычислительная платформа для ресурсоемкого обучения нейронных сетей DisANN (Distributed Artificial Neural Network).
Основные концепции DisANN
В настоящее время распределенные вычислительные системы мало задействованы для решения задач с применением нейронных сетей. Исследование существующих технологий распределенного обучения нейронных сетей [4-6] позволило сформулировать основные концепции для построения и функционирования программной платформы, удовлетворяющей актуальным потребностям в моделировании нейронных сетей.
Использование свободных мощностей. Зачастую крупные организации имеют большое количество свободных гетерогенных вычислительных ресурсов. Применение распределенных вычислений обеспечит оптимальное использование ресурсов, делегируя обработку заданий свободным узлам.
Волонтерские вычисления. Принадлежность всех вычислительных ресурсов к одной организации не является обязательным условием. Организации должны придерживаться некоторых общих правил при участии в системе, но в целом могут работать независимо. Таким образом, для решения одной общей задачи могут быть задействованы ресурсы нескольких организаций, а также любых заинтересованных лиц.
Использование стандартныгх интерфейсов и протоколов. Кроссплатформенные приложения и протоколы позволяют легко расширять вычислительную сеть на все возможные типы вычислительных ресурсов, включая персональные компьютеры, а также некоторые мобильные устройства и высокопроизводительные системы.
Масштабируемость. Вычислительные ресурсы не управляются централизованно. Следуя концепции REST, информация о текущем состоянии задачи не хранится на клиенте, поэтому в любой момент можно добавить и удалить ресурс из системы.
Обмен по протоколу HTTP/HTTPS. Существует множество протоколов для передачи и приема данных, однако HTTP/HTTPS используется практически повсеместно. Обеспечить безопасность информации в сложных средах распределенных вычислений чрезвычайно трудно, но простой перевод сервера системы в режим HTTPS сразу снимает эту проблему.
Высокие требования к качеству услуг. Упрощение заданий и некоторая степень избыточности позволяют эффективно распределить нагрузку
и обеспечить вычисления с максимальной надежностью.
Минималистичныш подход к распределению нейронных сетей. Для решения широкого круга задач необходимо распределение не самой нейронной сети, а только обучающей выборки. Массив обучающих векторов разделяется на несколько блоков, а блоки, в свою очередь, распределяются между вычислительными узлами. Таким образом, обучение ИНС распараллеливается в рамках одной эпохи. Такой процесс обучения относится к классу слабосвязанных задач.
Свободный выбор архитектуры ИНС. Архитектуры ИНС крайне разнообразны, и для их применения к конкретной задаче зачастую требуется изменение не только параметров, но и самой модели. Поэтому система должна поддерживать модульную интеграцию программных библиотек, реализующих различные типы нейронных сетей.
Потери данныгх. Так как ИНС по принципу своей работы являются устойчивыми к ошибкам, потери блоков не критичны. Более того, во избежание узких мест в момент синхронизации в конце каждой эпохи обучение может проводиться с потерями. Для синхронизации и перехода к следующей эпохе необходим и достаточен определенный процент использованных для обучения блоков или заданный объем времени процессора. В рамках каждой эпохи потери в обучении компенсируются взвешенным значением последнего успешного результата:
wk+1 = W + 0,5gVwg , где i, j - индексы нейронов; k - номер текущей эпохи; g - номер последней успешной эпохи.
Высокая скорость вычислений. Для разработки системы требуется простой и популярный в научной среде кроссплатформенный язык программирования. Исходный код программы должен быть минималистичным и легким в управлении и развитии. Поэтому основным языком разработки выбран Python. Код на Python несет обобщающую функцию, все критические задачи оптимизированы. Реализованы механизмы кэширования, оптимизированы запросы к БД, обмен изменениями
Рис. 1. Алгоритм функционирования системы
весов ИНС происходит в бинарном формате, поддерживаются многопроцессорные системы.
Разработка DisANN
Руководствуясь описанными концепциями, авторы создали программную платформу DisANN с открытым исходным кодом [4].
Система реализована в виде клиент-серверной модели, управляемой посредством web-интерфей-са, созданного на основе Django.
Для иллюстрации работы системы рассмотрим пример решения задачи. Пользователь должен войти в web-интерфейс и загрузить файл с описанием структуры ИНС, а также файл с обучающей выборкой.
Далее обучающая выборка разбивается на заданное количество блоков, которые вместе со структурой нейронной сети распределяются по вычислительным узлам.
На каждом узле проходит обучение сети на основе полученного блока, и на сервер возвращаются бинарные изменения весов. В конце каждой эпохи сервер обновляет модель ИНС и снова рассылает ее клиентам (рис. 1).
Введем следующие обозначения: N - размер входного слоя; Ык - размер скрытого слоя; No -размер выходного слоя; N - скорость; М - момент; А1 - входной вектор (а1, а2, ..., ат); 77 - вектор выходных данных (/1, t2, ..., /по).
Прямое распространение сигнала • в скрытом слое:
ак- = f т1 * wi..), j = 1, пк -1, ак - выходной
вектор скрытого слоя; • в выходном слое:
ао
к
/аН, * мо/к), к = 1, по , ао - выходной
вектор сети.
Обратное распространение ошибки.
1. Вычисляем ошибку в выходном слое:
Ъок = f (аок) * - аок), к = 1, по , где Ьо - значение ошибки, используемой для изменения выходных весов.
2. Вычисляем ошибку в скрытых слоях:
Ьк = /(ahJ) * (^Ьок * woJk), у = 1, пк, где Ьк -
к=1
значение ошибки, используемой для изменения скрытых весов.
3. Обновляем выходные веса:
м>°¡к = М>°¡к +п* Ьок * ак] + т ]к,
= Ъок * ак], ] = 1, пк, k = 1, по, где ^о -вес, соединяющий скрытый нейрон j с k в выход-
ном слое сети.
4. Обновляем скрытые веса:
М>к„ = ^^^ ^к:: +П * Ьк: * аЛ- +т * VW:: ,
] ] ] ' ]
У^^. = bhj * т1,1 = 1, т, ] = 1, пк, где ^к - вес, соединяющий входной нейрон j с k в скрытом слое сети.
5. Вычисляем ошибки:
ПО 1
Е = (/к - аок )2, где Е - суммарная ошибка
к=1 2
(для одной эпохи).
Результаты испытаний
Было протестировано несколько обучающих выборок. Эффективность распределения обучения показана на рисунке 2. Обучающая выборка составила 10 000 векторов, вычисления производились на одной машине и 10 компьютерах. Одна и та же нейронная сеть в случае обучения на одном компьютере не позволяет добиться желаемого значения ошибки (слева), в то же время на 10 компьютерах сеть обучается в полной мере (справа).
Следует отметить, что в среде с потерями данных функция ошибки заведомо не будет гладкой (рис. 3).
1=1
1=1
Рис. 2. Результаты обучения сети
Рис. 3. График ошибки
Количество шаблонов: 500000 На 1 CPU после 20000 эпох Общее время= 11401.28 s =>Реальное время= 11401.28s
□Ant: Cpu time 10707,91 s
□ Hill: code time 98.34 s
□ Network time 285.82 s
□ Mysql time 191.82 s □Ant: code time 297.39 s
|Ant: code time 2,6%
Mysql time !,7%
Network time 2,5%
Hill: code time 0,7%
Количество шаблонов: 500000 На 10 CPU после 20000 эпох Общее время= 14295.98 s =>Реальное время= 14295
□Ant: Cpu time 12057.68 s
□ Hill: code time 68.97 s
□ Network time 2353.23 s
□ Mysql time 412.07 s □Ant: code time 404.13 s
Ant: code time 2,8% Mysql time 2,9% Network time 9,5% Hill:codetime 0,5%
Рис. 4. Затраты вычислительных мощностей
При распределении заданий между вычислительными узлами небольшой процент мощности тратится на обеспечение функционирования системы (рис. 4). Время отправки/получения данных будет больше, но итоговое время обучения сети во много раз меньше, чем в случае обучения на одной машине.
Практическое применение
Система DisANN используется для решения обратных задач механики твердого тела на кафедре «Информационные технологии» Донского государственного технического университета. Система показала высокую эффективность при обучении сетей размером до 10 000 нейронов (рис. 5).
3,0 2,5 2,0 I 1,5 F 1,0 0,5 0,0
.-А.—
I
._т —
._-L —
I
—г—
__L—
'-1-
7
-J-----1---/I I X
—у— _j—^----
I I
.--t"-'---Г-
_J_____L____
I I
2000
8000 10000 Network size
Рис. 5. Время одной эпохи обучения в зависимости от количества нейронов в сети
Таким образом, в результате проведенного исследования была успешно разработана программная платформа, которая позволяет реализовать рапределенное обучение нейронных сетей. Пользователи могут подключать собственные модели нейронных сетей. Программа оптимизирована с
точки зрения производительности, функциональности и надежности.
Система может быть применена для создания импровизированного дата-центра и для обеспечения исследователей расчетами при минимальных временных затратах на развертывание и функционирование.
Авторы выражают глубокую признательность д.т.н., профессору Соболю Борису Владимировичу за руководство проведением исследования и разработки.
Литература
1. Distributed computing. URL: http://en.wikipedia.org/wiki/ Distributed_computing (дата обращения: 30.07.2012).
2. Haykin S., Neural Network a comprehensive foundation (2nd ed.), Prentice Hall, 1998, 842 p.
3. Sundararajan N., Saratchandran P., Parallel architectures for Artificial Neural Networks, Wiley-IEEE Computer Society Press, 1998, 412 p.
4. GitHub. URL: http://github.com/s74/ant2 (дата обращения: 21.04.2012).
5. Distributed computing on internet. URL: http://fgouget. free.fr/distributed/index-en.shtml (дата обращения: 21.04.2012).
6. Lisandro Daniel Dalcin, Techniques for High-Performance distributed computing in computational fluid mechanics, CIMEC Document Repository, 2008, 102 p.
Referenses
1. Distributed computing, available at: http://en.wikipedia. org/wiki/Distributed_computing (accessed 30 July 2012).
2. Haykin S., Neural Network a comprehensive foundation, 2nd edition, Prentice Hall, 1998.
3. Sundararajan N., Saratchandran P., Parallel architectures for Artificial Neural Networks, Wiley-IEEE Computer Society Press, 1998.
4. GitHub, available at: http://github.com/s74/ant2 (accessed 21 April 2012).
5. Distributed computing on internet, available at: http:// fgouget.free.fr/distributed/index-en.shtml (accessed 21 April 2012).
6. Dalcin L.D., Techniques for High-Performance distributed computing in computational fluid mechanics, CIMEC Document Repository, 2008.
Вниманию авторов!
Аннотация к статье на русском и английском языках должна быть развернутой -не менее 200 слов (машинный перевод недопустим). Новые редакционные требования на сайте журнала www.swsys.ru.
0