Материал: Разработка системы распределенного обучения нейронной сети с использованием Windows Azure

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Разработка системы распределенного обучения нейронной сети с использованием Windows Azure

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное учреждение

высшего профессионального образования

"Кубанский государственный университет" (ФГБОУ ВПО "КубГУ")

Кафедра информационных технологий








Выпускная квалификационная работа бакалавра

Разработка системы распределенного обучения нейронной сети с использованием Windows Azure


Работу выполнил

П.А. Борисов

Научный руководитель

доц., канд.физ.-мат. наук.

В.В. Гарнага

Нормоконтролер

ст. преп. А.В. Харченко

Краснодар 2014

Реферат

Выпускная квалификационная работа 39 с., 2 ч., 5 источников, 11 иллюстраций.

Распределенное приложение, облачные службы, аппроксимация, MICROSOFT AZURE, VISUAL STUDIO.

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

В работе изучены возможности языка программирования F#, C#, среды разработки VISIUAL STUDIO, возможности облачной платформы Microsoft Azure.

Содержание

Введение

. Постановка задачи

.1 Реферативно-обзорная часть

.2 Проекты распределенных вычислений

.3 Критерии выбора платформы для распределенных вычислений

2. Microsoft Windows Azure

.1 Platform as a Service

.2 Infrastructure as a Service

.3 Windows Azure изнутри

2.4 Производительность

.5 Сервисы

.6 Проекты на Azure

.7 "Хочу" Azure

. Нейронные сети

.1 Искусственная нейронная сеть

.2 Применения нейронных сетей

.2.1 Распознавание образов и классификация

.2.2 Принятие решений и управление

3.2.3 Кластеризация

3.2.4 Прогнозирование

.2.5 Аппроксимация

.2.6 Сжатие данных и Ассоциативная память

.3 Этапы решения задач

.3.1 Сбор данных для обучения

.3.2 Выбор топологии сети

.3.3 Экспериментальный подбор характеристик сети

.3.4 Собственно обучение сети

.3.5 Проверка адекватности обучения

. Реализация

.1 Нейронная сеть

Заключение

Список используемой литературы

Введение

В настоящее время технология распределенных вычислений занимает первое место среди технологий по работе с огромным количеством информации. Что же это за технология? Что лежит в её основе?

Формального определения распределенной вычислительной системы в настоящее время не существует. Из множества различных определений, можно выделить ироничное определение Лесли Лампорта:

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

Это определение он дал в мае 1987 года, в своем письме коллегам по поводу очередного отключения электроэнергии в машинном зале.

Профессор Эндрю Таненбаум предлагает более строгое определение: "Распределенная вычислительная система (РВС) - это набор соединенных каналами связи независимых компьютеров, которые с точки зрения пользователя некоторого программного обеспечения выглядят единым целым".

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

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

возможность работы с различными типами устройств:

с различными поставщиками устройств;

с различными операционными системами,

с различными аппаратными платформами.

возможность простого расширения и масштабирования;

перманентная (постоянная) доступность ресурсов (даже если некоторые элементы РВС некоторое время могут находиться вне доступа);

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

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

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

Для того чтобы РВС могла быть представлена пользователю как единая система, применяют следующие типы прозрачности в РВС:

прозрачное местоположение ресурсов - место физического расположения требуемого ресурса должно быть несущественно для пользователя;

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

параллельный доступ - возможность совместного (одновременного) использования одного и того же ресурса различными пользователями независимо друг от друга. При этом факт совместного использования ресурса должен оставаться скрытым от пользователя;

прозрачность отказов - отказ (отключение) каких-либо ресурсов РВС не должен оказывать влияния на работу пользователя и его приложения.

1. Постановка задачи

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

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

Выделим некоторые пункты для нашей работы:

Рассмотрим функционирование распределенных вычислений;

Выберем задачу для исследования;

Реализуем данную задачу.

.1 Реферативно-обзорная часть


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

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

.2 Проекты распределенных вычислений


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

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

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

Проект, требующий быстрой работы с громадным количеством информации, как правило, имеет хорошее финансирование, вот и вся разгадка. Процессорное время - товар на рынке распределенного вычисления. Множество фирм покупает процессорное время, причем сама программа уже имеет самый высокий приоритет. Примером таких компаний является: MQL5 Cloud Network.

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

.3 Критерии выбора платформы для распределенных вычислений


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

·        Производительность

·        Безопасность

·        Масштабируемость

·        Цена

Для реализации данной задачи была выбрана: Microsoft Azure.

2. Microsoft Windows Azure

Windows Azure - облачная платформа от Microsoft.

Платформа Windows Azure предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределенных дата-центрах.Azure полностью реализует две облачные модели - платформы как сервиса (Platform as a Service, PaaS) и инфраструктуры как сервиса (Infrastructure as a Service, IaaS). Работоспособность платформы Windows Azure обеспечивает сеть глобальных дата-центров Microsoft.

Основные особенности данной модели:

·        оплата только потребленных ресурсов;

·        общая, многопоточная структура вычислений;

·        абстракция от инфраструктуры.

В основе работы Microsoft Azure лежит запуск виртуальной машины для каждого экземпляра приложения.

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

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

.1 Platform as a Service

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

.2 Infrastructure as a Service

Azure также реализует другой тип сервиса - инфраструктуру как сервис. Модель предоставления инфраструктуры (аппаратных ресурсов) реализует возможность аренды таких ресурсов, как серверы, устройства хранения данных и сетевое оборудование. Управление всей инфраструктурой осуществляется поставщиком, потребитель управляет только операционной системой и установленными приложениями. Такие сервисы оплачиваются по фактическому использованию и позволяют увеличивать или уменьшать объем инфраструктуры через специальный портал, предоставляемый поставщиками. В данной сервисной модели могут быть запущены практически любые приложения, установленные на стандартные образы ОС.

.3 Windows Azure изнутри

состоит из трех компонентов:

¾      Compute - компонент, реализующий вычисления на платформе Windows Azure.

¾      Storage - компонент хранилища предоставляет масштабируемое хранилище. Хранилища не имеет возможности использовать реляционную модель и является альтернативной, "облачной" версией SQL Server.

¾      Fabric - Windows Azure Fabric по своему назначению является "контролёром" и ядром платформы, выполняя функции мониторинга в реальном времени, обеспечения отказоустойчивости, выделении мощностей, развертывания серверов, виртуальных машин и приложений, балансировки нагрузки и управления оборудованием.

Рисунок 1- Архитектура приложения на Azure

Рисунок 2 - Общая структура приложений на Azure

2.4 Производительность

Azure была признана Compuware самой быстрой "облачной" платформой.

Также бенчмарк Microsoft Azure показал высокую производительность для масштабных вычислений c результатами в 151,3 TФлопс на 8064 ядрах с 90,2 процентной эффективностью.

Аналитическая компания Nasuni представила очередное исследование провайдеров облачных сервисов хранения данных. Согласно этому отчету, платформа Microsoft Azure является лидером в тестах производительности при записи и чтении данных из облака, доступности данных и минимальному числу ошибок (0%). В 2014 году Nasuni выпускает очередной отчет с результатами тестирования облачных хранилищ Amazon, Google, HP, Microsoft и Rackspace.

2.5 Сервисы

Azure предоставляет набор сервисов, покрывающих широкий спектр сценариев. Ниже приведены наиболее подходящие для реализации поставленной задачи.Services:

¾      Web-роль - веб-роли в Microsoft Azure имеют особое назначение: предоставление выделенного веб-сервера служб IIS для размещения интерфейсных веб-приложений. Веб-роли позволяют развертывать веб-приложения с последующим масштабированием вычислительных ресурсов.

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

¾      Web Sites - веб-сайты поддерживают ASP.NET, Java, Node.js или PHP (либо CMS - WebMatrix, Joomla, Drupal, WordPress, DotNetNuke, Umbraco и др.) и разворачивать за секунды с использованием FTP, Git, TFS, Mercurial и Dropbox. Использование в режиме Free бесплатно (однако накладываются серьезные ограничения). По умолчанию веб-сайты находятся в состоянии Free, то есть мощности делятся между веб-сайтами, но при необходимости можно увеличить количество экземпляров и перевести веб-сайт в режим резервирования ресурсов. С июня 2013 года сервис Web Sites официально поддерживает пользовательские сертификаты SSL (ранее поддерживались только сертификаты, предлагаемые Microsoft) как по IP-адресу, так и на базе SNI,Management - нереляционные хранилища данных: таблицы, диски, очереди, хранение двоичных объектов + реляционное хранилище данных в виде SQL Database.:

¾      Virtual Network - сервис для соединения облачных инфраструктур с локальными методом Site-To-Site VPN и Point-To-Site VPN.

¾      Connect - сервис более не поддерживается (заменен Virtual Network).

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

2.6 Проекты на Azure


Одним из самых громких проектов стало использование платформы Microsoft Azure для Олимпийских Игр в Сочи 2014. Она обеспечила доступность необходимых вычислительных ресурсов во время пиковых нагрузок, объем которых было практически невозможно предсказать заранее.В течение всего периода проведения спортивных соревнований была собрана следующая статистика бесперебойной работы сайта sochi2014.com, обеспеченной Microsoft Azure: