Нейросетевые технологии в обработке и защите данных Лекция 2. Принципы параллельной обработки данных информационных систем. Нейрокомпьютеры Решение научно-технических задач в атомной физике, климатологии, космических исследованиях, авиастроении, биомедицинских исследованиях, а также для систем видеонаблюдения, в частности, связано с обработкой больших объемов данных. Технология параллельных вычислений развивается по двум направлениям. Первое – вычислительные системы с массовым параллелизмом на базе традиционных процессоров с последовательной системой команд, RISC и сигнальных процессоров. Второе – вычислительные системы на основе искусственных нейронных сетей (ИНС). 2 Сложные системы Сложные системы, исследование которых представляет наибольший интерес в рамках методологии системного моделирования, характеризуются большим количеством элементов системы и различными типами взаимосвязей между этими элементами. Причина повышенного внимания к ИНС кроется в: • Потенциальных возможностях выполнения интеллектуальных операций и существенного увеличения критерия производительность/стоимость в сравнении с традиционными компьютерами, суперЭВМ и параллельными вычислительными системами. • Массовый параллелизм вычислений имеет принципиальное значение для нейрокомпьютеров и является их свойством. Для нейрокомпьютерных технологий обработки изображений также характерна их предварительная обработка. 4 • С помощью нейрокомпьютеров решаются не формализуемые или плохо формализуемые задачи. В их алгоритмы решения включается процесс обучения на реальном экспериментальном материале. • Теория искусственных нейронных сетей – логическая основа нейрокомпьютеров. Искусственная нейронная сеть – сеть с конечным числом слоев из однотипных элементов. 5 Классификация параллельных компьютеров и систем Существует много способов организации параллельных вычислений: векторно-конвеерные компьютеры, матричные системы, компьютеры с широким командным словом, кластеры, компьютеры с многопоточной архитектурой и т. д. Классификация Флинна М. (Flynn M., 1966г.) базируется на понятиях потоков, последовательности команд и данных, обрабатываемых процессором. Она включает четыре класса архитектур. 6 1. Одиночный поток команд – одиночный поток данных (ОКОД). К этому классу относятся классические последовательные компьютеры фон-Неймановского типа, например, PDP-11. 2. Одиночный поток команд – множественный поток данных (ОКМД). Примерами этого класса ЭВМ являются ILLIAC-4, Cray 1 и др. 3. Множественный поток команд – одиночный поток данных (МКОД). Реально существующих систем этого класса нет. 4. Множественный поток команд – множественный поток данных (МКМД). 7 Примерами этого класса ЭВМ являются Российская параллельная ЭВМ ПС2000, Cray TSE, суперкомпьютеры: Японский NEC (NEC the Earth Simulater), содержащий 640 вычислительных узлов по 8 векторных процессора, всего 5120 микропроцессоров и предназначенный для моделирования климатических процессов в масштабах планеты; Американский ASCI White, объединяющий 8192 процессора Pentium Pro Министерства Энергетики США; Белорусско-Российский СКИФ К-1000М, установленный в БГУ, в настоящее время содержащий 128 двухядерных процессора. 8 Технологии параллельного программирования 1. Для компьютеров с общей памятью популярным средством программирования является технология OpenMP, для которого используется термин «нить» вместо процесс; 2. Процессоры с индивидуальной памятью используют библиотеку модулей MPI - Message Passing Interface; 3. Система программирования mpC для неоднородных сетей, разработанная в институте системного программирования РАН. 9 Параллельные алгоритмы Наиболее распространенной моделью описания параллельных алгоритмов является модель потоков. Поток – последовательный процесс, имеющий доступ к общей для всех потоков памяти. Большинство используемых в настоящее время параллельных архитектур являются воплощением потоков в аппаратуре. Наряду с этим используются расширения языков программирования, поддерживающие параллелизм по данным, или различные библиотеки передачи сообщений (MPI, OpenMP, PVM). 10 Параллельные алгоритмы В распределенных системах часто применяются механизмы распределенных вычислений, эмулирующих потоки, такие как, например, CORBA и .NET. В этих распределенных объектноориентированных технологиях компоненты взаимодействуют друг с другом через прокси-объекты, которые ведут себя так, как будто бы удаленный и локальный объекты размещены в одной памяти. 11 Агентная модель Агентная модель – математическая модель конкурентных вычислений, базирующаяся на концепции «все является процессом». В ответ на принимаемые сообщения можно: посылать конечное число сообщений другим агентам; создавать конечное число новых агентов; определять свое поведение для последующих ответов. Эта модель позволяет осуществлять асинхронное взаимодействие и контролировать структуры данных посредством шаблона передачи сообщений. 12 Агентная модель Erlang – свободно распространяемая кроссплатформенная среда и язык программирования, разработанные компанией Erricson, реализующая агентную модель распределенных вычислений. Язык включает в себя средства порождения параллельных процессов и их коммуникации с помощью асинхронных сообщений. Программа транслируется в байт-код исполняемой виртуальной машиной, что обеспечивает переносимость программных средств. 13 Модель MapReduse Другим примером использования проверенных шаблонов проектирования многопоточных приложений является каркас MapReduse, реализующий шаблоны параллельного программирования . Этот шаблон используется компанией Google для распределенной обработки больших массивов данных. Параметрами шаблона являются не данные или их структуры, а функции. В качестве входных данных представляются две функции Map и Reduse. Функция map обрабатывает пары ключ-значение и генерирует набор промежуточных пар ключ-значение, а функция reduse объединяет промежуточные пары ключзначение, связанные одним промежуточным ключом. 14 Сервер приложений CouchDB CouchDB – документно-ориентированная система управления базами данных, написанная на языке Erlang и не требующая описания схемы данных. CouchDB можно рассматривать как сервер WEB-приложений, так как в СУБД встроен производительный WEB-сервер, а программный код, как и данные, сохраняется в этой же базе данных. CouchDB предназначена для работы с полуструктурированной информацией и имеет следующие особенности: 15 данные сохраняются не в строках и столбцах, а в виде деревьев; типизация элементов данных не поддерживается, вместо этого используются создаваемые пользователями функциивалидаторы; целостность базы данных обеспечивается на уровне отдельных записей, но не уровне связей между ними; операция объединения между таблицами не определена; для построения индексов и выполнения запросов используются функции-представления (тексты в базе данных); поддерживается вертикальная масштабируемость, что обеспечивает поддержку не только объемных кластеров, но и портативных устройств. 16 Нейрокомпьютеры относятся к классу МОКМД – множественный поток одиночных команд – множественный поток данных или вычислительные системы с параллельными потоками одинаковых команд и множественным потоком данных. Обработка данных осуществляется в реальном масштабе времени, если время обработки соизмеримо со временем протекания процесса. 17 Нейрокомпьютеры Нейрокомпьютеры применяются , в основном, как специализированные модули систем. Известны следующие: «Геркулес», г. Казань; «Synapce» фирмы Сименс; Нейромодуль NM6404 – процессор цифровой обработки сигналов с переменной длиной операндов, разработанный в России; Нейрокомпьютер «Кремниевый мозг», используемый в США для обработки аэрокосмических изображений; Нейронный компьютер SpiNNaker (Spiking Neural Network Architecture), создаваемый в Манчестерском Университете (50 чипов по 20 микропроцессоров ARM968). 18 Нейропакеты Нейропакеты предназначены для решения широкого класса трудноформализуемых задач, в основном, с целью прогнозирования и параллельной обработки данных. Нейроэмуляторы: • BrainMaker Professional фирмы California Scientific Software; • Neural Works Professional компании Neural Ware; • Neural Network Toolbox системы MatLab . 19 Пример распараллеливания Для демонстрации алгоритмов параллельных вычислений можно пользоваться, например, программой вычисления числа π. Число π вычисляется как значение следующего интеграла, умноженное на 4: 1 0 1 x 2 dx arctg (1) arctg (0) 4 , 1 1 i 1 1 4 , 2 xi 0 1 x 2 dx n i 1 1 xi n n 20