В настоящее время возросла потребность в масштабных расчетах уже не только в научных целях, но и на производстве, например в материаловедении, химии, разработке лекарственных препаратов, конструировании высокотехнологичных машин и др. Суперкомпьютерные системы могут решать большой спектр задач, но производство и эксплуатация таких компьютеров требует больших расходов, поэтому сегодня в мире их насчитывается всего несколько сотен.
В Grid-системах можно объединять разнородные вычислительные ресурсы, и они широко используются для быстрой и относительно дешевой обработки большого объема вычисленных задач. Обычно это достигается путем деления сложных задач на более простые подзадачи (задания), которые могут быть обработаны параллельно с использованием доступных вычислительных ресурсов [7].
При организации Grid-вычислений необходимо решить проблему объединения разнородных вычислительных ресурсов в единую распределенную систему. В настоящее время в ИТ индустрии при создании информационных систем получила большое распространение сервис-ориентированная архитектура, благодаря своему главному преимуществу: возможности эффективной интеграции информационных ресурсов [1, 6, 7].
Cервис-ориентированная архитектура (англ. Service-Oriented Architecture, SOA) – это модульный подход к разработке программного обеспечения. Данный подход использует распределенные, заменяемые и слабо связанные компоненты, которые взаимодействуют между собой по стандартизированным протоколам (SOAP и др.). При этом компоненты реализуются как набор веб-служб [1, 2].
В данной работе показана возможность применения концепции SOA для распределенных вычислений. Применение сервис-ориентированной архитектуры для создания Grid-систем позволит осуществить интеграцию разнородных вычислительных ресурсов не только локальных, но и географически распределенных.
Технологии SOA, применяемые для построения Grid-систем
Рассмотрим основные технологии, которые могут быть использованы для построения Grid-систем на основе SOA с использованием веб-служб. Веб-служба (или веб-сервис, англ. web service) – программная система со стандартизированным интерфейсом, которая доступна по определенному веб-адресу. Взаимодействие веб-служб с другими службами либо со сторонними приложениями происходит на основе протоколов SOAP, XML-RPC, REST и т.д. [1, 2].
Для обеспечения взаимодействия веб-служб с другими службами либо со сторонними приложениями используются следующие стандарты: XML: Расширяемый язык разметки, предназначенный для хранения и передачи структурированных данных; SOAP: Протокол обмена сообщениями на базе XML; WSDL: Язык описания внешних интерфейсов веб-службы на базе XML.
Веб-служба состоит из нескольких частей, имеющих собственное назначение и поведение в системе. На рис. 1 представлена структурная схема веб-службы.
Для Grid-систем в качестве службы может выступать любая программная платформа, которая управляет вычислительным ресурсом. Клиенты службы используют канал, который совместим с каналом службы, чтобы вызывать методы службы, передавать необходимые данные для вычислений и получать назад результаты расчетов. Сообщения могут передаваться через этот канал в любом направлении.
Главная особенность использования веб-служб в SOA – для того чтобы выполнить определенную задачу службы, необходимо вызвать метод данной службы с чётко определённым интерфейсом. При этом веб-службы заранее ничего не знают о приложении, которое их вызовет, а приложение не знает, каким образом веб-службы выполняют свою задачу. Следовательно, SOA может рассматриваться как способ построения Grid-систем, который позволяет объединять разнородные ресурсы, путём комбинации слабосвязанных и взаимодействующих сервисов. Эти сервисы будут взаимодействовать на основе строго определённого кроссплатформенного интерфейса. Определение интерфейса скрывает языково-зависимую реализацию веб-службы.
Таким образом, можно выделить следующие достоинства применения SOA для построения распределенных вычислительных систем:
– Использование SOA позволяет создать не жестко связанную систему, в которой клиент службы и реализация службы имеют в общем случае список доступных для всех служебных действий и определенную структуру данных.
– Клиент знает только интерфейсы службы, имена и типы входных и возвращаемых значений функцией службы. Никакой другой зависимости нет.
– Платформы и языки программирования могут быть различны как у клиента, так и у службы.
– Разделение задач. Реализация службы и клиента может выполняться разными разработчиками.
Windows Communication Foundation
Проанализировав требования к системе распределенных вычислений и наиболее распространенные на данный момент аналоги, авторы при выборе программной платформы остановились на платформе .NET и программном фреймворке Windows Communication Foundation (WCF) от компании Microsoft [2, 6]. При реализации модулей системы предполагается активно использовать стандарт OpenCL. Это позволит добиться максимальной независимости от архитектуры клиентских ЭВМ и одновременно с этим позволит прозрачно использовать GPU и FPGA, для значительного ускорения проводимых расчетов.
Рис. 1. Работа службы
WCF – это самый простой способ предоставлять и использовать службы на платформе Microsoft. Пользуясь WCF, разработчики могут сосредоточиться на приложениях, а не на коммуникационных протоколах. Это классический пример инкапсуляции технологии в инструментальных средствах [2].
Предлагаемая архитектура
Система для высокопроизводительных вычислений, разработанная в соответствии с сервис-ориентированной архитектурой, была реализована как набор веб-служб, взаимодействующих по протоколу SOAP. Данный протокол используется для реализации удалённого вызова процедур и для обмена произвольными сообщениями между узлами системы в формате WSDL. Разнородные вычислительные ресурсы (CPU, GPU и FPGA) клиентов предоставляются как сервис и реализованы как набор веб-служб, т.е. они представляют собой идентифицируемую веб-адресом программную систему со стандартизированными интерфейсами. Вычислительные ресурсы распределенной вычислительной системы, реализованные как веб-службы, могут взаимодействовать друг с другом, с сервером и со сторонними приложениями посредством сообщений, основанных на протоколе SOAP.
Наш проект не предполагает разработку и внедрение нового фреймворка на основе SOA. Вместо этого предложен способ предоставления вычислительных ресурсов с множеством настраиваемых сервисов WCF, который может преодолеть ограничения традиционных веб-служб XML.
В общем виде архитектура разработанной гибридной реконфигурируемой системы для высокопроизводительных вычислений приведена на рис. 2. Любая вычислительная задача, решаемая на представленной системе, состоит из клиентской и серверной частей. Основная вычислительная нагрузка ложится на клиентов, которые предоставляют свои вычислительные ресурсы в качестве WCF-сервиса [2].
Серверная часть представляет собой WCF-клиент, который по локальной сети или через Интернет обращается к вычислительным ресурсам клиентов. Основными функциями серверной части разработанной гибридной системы являются: оценка производительности клиентов и скорости соединения; мониторинг клиентов и процесса вычисления; окончательная обработка результатов вычислений, полученных от клиентов.
Экспериментальные исследования
Для экспериментальных исследований на предлагаемой платформе были выбраны алгоритмы Deep Learning, поскольку это все более популярная тема в области искусственного интеллекта и одна из самых востребованных областей в компьютерной науке [5]. Применение алгоритмов Deep Learning позволило создавать системы, которые способны распознавать зашумленные и искаженные предметы на фотографиях, делать сложные предсказания о возможном будущем поведении человека в видеопотоке, анализировать текстовую информацию и т.п. При этом реализация данных алгоритмов требует высокопроизводительных вычислений.
На данный момент многими разработчиками и исследователями в области Deep Learning используется библиотека TensorFlow [3]. TensorFlow – это новая библиотека для создания систем машинного обучения с открытым исходным кодом от Google.
Рис. 2. Архитектура предлагаемой системы для высокопроизводительных вычислений
Тестовые наборы данных
Набор данных (Datasets) |
Размер |
Кол-во параметров |
Скрытых слоев |
Скрытых нейронов |
MNIST |
60 K×784 = 39,2 Mб |
1,8 M |
2 |
512 |
CIFAR-10 |
60 K×1024 = 170 Мб |
4,1 M |
2 |
1024 |
Molecular |
150 К×2871 = 430 Мб |
14,2 M |
3 |
2048 |
Рис. 3. Результаты экспериментальных исследований
Для экспериментальных исследований были использованы тестовые наборы данных (таблица), которые чаще всего используются при сравнении алгоритмов Deep Learning: MNIST – это набор изображений рукописных цифр; CIFAR-10 – это набор цветных изображений 10 различных классов; Molecular – набор молекулярной активности веществ для создания лекарств [3– 5].
В последних трех столбцах таблицы указаны параметры реализованных глубоких нейронных сетей.
На рис. 3 показаны результаты обучения глубоких нейронных сетей на разработанной платформе.
Для исследований были построены сети с 2, 4 и 6 клиентами. Из этих результатов видно, что у предлагаемой системы такой же недостаток, как и у подобных ей систем: чем больше передаваемый объем данных по сети, тем ниже эффект от ее использования.
Для преодоления этого недостатка необходимо учитывать объем передаваемых данных по сети и подбирать соответствующие алгоритмы. Наиболее часто используемый метод оптимизации для обучения глубоких нейронных сетей – это стохастический градиентный спуск (SGD). Классический алгоритм SGD по своей сути является последовательным, что делает нецелесообразным его применение к очень большим наборам данных, т.к. требуется много времени для передачи данных последовательным способом.
Для распределенного обучения нейронных сетей мы применили асинхронный стохастический градиентный спуск [4]. Основная особенность этого алгоритма состоит в том, что на каждом клиенте находится свой собственный экземпляр данных и обучаемая модель. Это значительно сокращает нагрузку на сеть. Результаты экспериментов показаны на рис. 4.
Из этого графика видно, что предпринятые меры позволили добиться эффективности в расчетах на разработанной платформе. То есть с добавлением клиентов в сети растет и скорость вычислений.
Рис. 4. Результаты экспериментальных исследований алгоритма асинхронного стохастического градиентного спуска
Выводы
Разработанная архитектура предлагает больше гибкости, простоты и совместимости, которые необходимы, чтобы обеспечить интеграцию между сетевыми ресурсами. Предлагаемая платформа не предназначена для замены или вытеснения других Grid-систем. Вместо этого она дает возможность использования в едином вычислительном процессе различных платформ (CPU, GPU, FPGA) на базе сервис-ориентированной архитектуры, а использование OpenCL позволяет создать в рамках этой сети гетерогенную вычислительную среду. Применяя технологию распределенных вычислений и задействовав неиспользуемые ресурсы персональных компьютеров, система позволяет снизить стоимость вычислений на единицу производительности.
Работа выполнена при частичной финансовой поддержке грантов РФФИ № 16-37-60016, № 14-07-00816.