О задаче прогнозирования времени выполнения нейросетевых алгоритмов с использованием плат GPU на примере сетей свертки

ТЕХНОЛОГИИ ВЫЧИСЛИТЕЛЬНОЙ ОБРАБОТКИ

1.5. О ЗАДАЧЕ ПРОГНОЗИРОВАНИЯ ВРЕМЕНИ ВЫПОЛНЕНИЯ НЕЙРОСЕТЕВЫХ АЛГОРИТМОВ С ИСПОЛЬЗОВАНИЕМ ПЛАТ GPU НА

ПРИМЕРЕ СЕТЕЙ СВЕРТКИ1

Буряк Дмитрий Юрьевич, канд. физ.-мат. наук, старший инженер-исследователь, Филиал компании LG Electronics. E-mail: dyb04@yandex.ru

Попова Нина Николаевна, канд. физ.-мат. наук, доцент, МГУ им. Ломоносова, факультет ВМиК. E-mail: popova@cs.msu.su

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

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

Ключевые слова: Искусственные нейронные сети, сверточные нейронные сети, параллельные вычисления, платы GPU, прогнозирование времени исполнения.

ON THE PROBLEM OF PREDICTING CALCULATION TIME NEEDED FOR NEURAL NETWORK EXECUTED BY MEANS OF GPU IN CASE OF CONVOLUTION NEURAL NETWORKS

Buryak Dmitry Yurievich, PhD, Senior Research Engineer, Branch of LG Electronics. E-mail: dyb04@yandex.ru

Popova Nina Nikolaevna, PhD, professor, Lomonosov Moscow State University, Faculty of Computational Mathematics and Cybernetics. E-mail: popova@cs.msu.su

Abstract: Computation performance of GPU devices has grown significantly in recent time. After CUDA architecture has appeared researchers could make active use of GPU devices in their work including nanotechnology area. However in many cases it is difficult to predict acceleration factor for an algorithm after its implementation by using GPU and consequently to estimate computational efficiency of this algorithm. Thus the task of computational performance prediction of an algorithm implemented using GPU is crucial.

This work describes computational performance prediction model for algorithms based on artificial neural networks. Neural network depends on large amount of hyperparameters, which are defined on the architecture design stage, and affect its execution speed and results accuracy. A process of selecting these parameters values could take a long time. Application of prediction approaches allows to reduce time needed for the selection stage and to increase precision of hyperparameters' estimations.

Index terms: Artificial neural networks, convolution neural networks, parallel calculations, GPU, calculation time prediction.

Введение

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

1 Работа выполнена при финансовой поддержке РФФИ (грант 17-07-01562_а).

нейронные сети, активно используются для решения этих задач. В обзорных статьях [1-13] приведены примеры успешного применения НС в областях, связанных с исследованием наноматериалов, анализом данных в наномедицине и нанофизике, изучением биологических наносистем, а также разработкой наноустройств. Решение подобных задач обычно сопряжено с большим объемом вычислений, для выполнения которых раньше

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

В последние годы вычислительная мощность плат GPU значительно возросла. Появление архитектуры CUDA позволило исследователям и инженерам активно использовать графические платы в своей работе. Применение этих технологий привело к разработке высокопроизводительных решений для многих практических и исследовательских задач, например в области обработки изображений [8], анализе графов [15] и др.

С другой стороны, при реализации алгоритмов на GPU характерен большой разброс получаемых значений ускорения. Так, например, реализация симуляции динамической системы частиц, находящихся под действием внешних сил, выполнялась с использованием CUDA в 200 раз быстрее, чем на обычном компьютере [12]. В тоже время ускорение для ряда задач составляет не более 3 раз [11]. Одним из главных факторов повышения скорости вычислений на GPU являются характеристики самой платы, однако, во многих случаях существуют другие причины, влияющие на результирующий коэффициент ускорения, определить которые затруднительно. Этому способствует нежелание производителей публиковать подробные спецификации GPU плат.

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

В ряде случаев вычислительные системы состоят из разнородных вычислительных блоков, например, плат GPU разных типов. Для оптимального распределения доступных вычислительных ресурсов требуются знания о скорости выполнения имеющихся параллельных реализаций.

Указанные факты актуализируют задачу прогнозирования скорости вычисления программ на платах GPU.

Оценка эффективности выполнения программы на GPU основывается на анализе следующих факторов [2]:

1. Организация вычислений на GPU требует запуска большого числа процессов. Чем выше значение отношения объема вычислений к числу операциям доступа к памяти, тем проще избежать конфликтов доступа к памяти.

2. Одним из основных способов борьбы с низкой скоростью доступа к глобально памяти является формирование объединенных запросов (coalescing).

3. Потоки, входящие в состав одного пула (warp) имеют доступ к разделяемой памяти, которая характеризу-

ется высокой скоростью доступа, низкой латентностью и небольшим размером.

4. Для доступа к разделяемой памяти имеется набор портов, таким образом, упорядочивание потоков позволяет поддерживать высокий уровень производительности и избегать конфликтов доступа к памяти

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

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

2. Независимость от типа графической платы. На рынке существует большое число GPU плат, отличающихся не только числом вычислительных элементов и тактовой частотой их работы, но и характеристиками памяти и множеством других параметров. Для аналитических моделей эта информация должна быть доступна, однако, производители не всегда готовы ей делиться. Экспериментальные модели, основанные на профилировании, предполагают получение этих данных путем тестовых запусков платы на небольших объемах данных, структура которых схожа с целевыми данными. Подобная ограниченность тестовых данных может привести к ситуации, когда не все ключевые параметры будут должным образом оценены, что приведет к существенным погрешностям в конечных результатах прогнозирования.

3. Доступность оборудования. В ряде случаев возникает задача оценить время выполнения функции на плате GPU, к которой нет доступа.

4. Простата использования. Аналитические модели требуют точные характеристики платы, часть которых может отсутствовать в технической документации.

Данная работа посвящена разработке модели прогнозирования для алгоритмов фиксированного типа, а именно нейронных сетей (НС) прямого распространения.

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

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

Существующие подходы

Время обмена данными между хост устройством и графической платой в ряде случаев может являться ключевым фактором, который необходимо учитывать при разработке параллельной версии алгоритма. Подробный анализ этой проблемы проведен в работе [5]. Авторы статьи анализируют реализацию в CUDA асинхронного обмена данными между основным устройством и GPU платой. В случае если функция ядра обрабатывает независимые друг от друга данные (например, кадры видео последовательности), данный механизм совместно с правильной организация потоков позволит существенно сократить время вычисления (Рис. 1).

Гг

Рис. 1. Сравнение полного времени выполнения функции

при двух типах организации потоков копирования данных и

вычислений: вверху потоки выполняются последовательно, внизу - они пересекаются.

В статье представлены две модели оценки времени выполнения программы и получены оценки оптимального числа потоков для каждой из них.

В работе [7] рассматривается аналитическая модель прогнозирования эффективности вычислений на GPU. Модель применяется для оценки времени выполнения нескольких блоков нитей. Авторы акцентируют внимание на следующих типовых случаях:

1. Общее число выполняемых блоков превышает максимальное количество блоков, которые могут быть одновременно размещены на плате.

2. Общее число выполняемых пулов превышает максимальное количество пулов, которые могут быть одновременно размещены на плате.

3. Общее число выполняемых нитей превышает максимальное количество нитей, которые могут быть одновременно размещены на плате.

Оценка, получаемая моделью, основывается на значениях следующих параметров:

- количество потоковых мультипроцессоров;

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

- число нитей и блоков выполняемых на плате.

Авторы в [9] предлагают метод прогнозирования эффективности выполнения программы на GPU, который

учитывает такие архитектурные детали как: число ядер, латентность памяти, конфликты доступа к памяти, скорость вычислений, эффективность конвейера. Предлагаемая модель предоставляет возможность проведения анализа псевдокода, написанного с использованием CUDA, для оценки времени его выполнения с применением GPU.

Модель является сочетанием трех предложенных ранее подходов: BSP[14], PRAM [3] и QRQW [4].

Оценка времени вычисления ядра основывается на знании количества циклов, требуемых для выполнения каждой операцией.

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

Третий компонент, оказывающий значительное влияние на общее время выполнения программы, расписание запуска потоков (scheduling). Алгоритм планирования обычно не раскрывается производителем. Поэтому в работе рассматривают два крайних случая. Первый из них, когда расписание составлено идеально, т.е. отсутствуют задержки, связанные с обращением к памяти. Тогда время выполнения потока определяется максимальным из значений времени, затрачиваемых на вычисления и на доступ к памяти. Второй - отсутствие эффекта от планирования, тогда значении времени вычисления и доступа к памяти суммируются.

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

В работе [6] авторы совмещают аналитический подход и подход, основанный на профилировании (profile-based), для прогнозирования времени выполнения операции умножения матриц. Полученный комбинированный метод состоит из двух этапов: инструментальный и моделирующий. На первом шаге выполняется генерация тестовых матриц и измеряется время их обработки на плате GPU. На втором шаге, полученные результаты используются для инициализации модели предсказания, и вычисляется оценка времени вычисления целевой матрицы. Экстраполяция тестовых результатов на целевую матрицу выполняется с помощью понятия полосы (strip) - максимальной подматрицы, которая может быть обработана GPU за одну итерацию. Подход использует набор аналитических моделей, которые связывают число полос в матрице и время ее вычисления. Результаты тестирования данного подхода подтверждают его высокую эффективность для ряда типов матриц.

В работе [2] авторы предлагают аналитическую модель времени выполнения приложений на GPU. Подход основан на анализе исходного кода, написанного на CUDA и формировании графа зависимостей операций (program dependence graph, PDG). Данный граф используется для выявления ключевых факторов, влияющих на

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

Авторы выделили следующие типы символов:

- последовательность вычислительных операций

- операция записи в глобальную память

- операция чтения из глобальной памяти

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

- обращение к быстрой разделяемой памяти

- точка синхронизации.

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

Задача прогнозирования времени выполнения НС с использованием GPU

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

Введем обозначения, которые будут использоваться в формулировке постановки задачи.

Пусть а - вектор, содержащий описание архитектуры и матрицы весов для некоторой НС. Ключевыми параметрами НС, влияющими на время ее вычисления, являются: число слоев, количество нейронов в каждом слое, матрицы связанности.

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

Переменная ц описывает характеристики, полученные экспериментально. Они вычисляются на этапе инициализации модели путем применения имеющейся реализации к тестовым данным. К таким характеристикам могут относиться скорость выполнения определенных операций в текущей реализации, реальное время доступа к разделяемой и глобальной памяти и т.п. Данные характеристики в общем случае оцениваются на плате GPU, имеющей архитектуру отличную от той, для которой необходимо сделать прогноз.

Сформулируем постановку задачи разработки модели оценки времени выполнения программы на плате GPU.

Имеется НС, параметры которой определяется вектором а. Данная сеть может быть выполнена на оценочной плате GPU, характеристики которой определяются вектором Pi. Результатом вычисления сети с использо-

ванием тестовых данных на имеющейся плате является вектор ц. Необходимо оценить время работы НС на плате GPU с характеристиками, задаваемыми вектором р2. При этом наибольший интерес представляют случаи, когда р2 существенно отличаются от р1.

Формально данную постановку можно представить в следующем виде.

Необходимо построить функцию t = Т(а, ц, р1, Р2). где t Е R - время вычисления. При условии максимизации расстояния между ft,ft: ||ft — fi2\\ ^ шах.

Время выполнения T на GPU складывается из времени, затраченного на вычисления Тсотр, и времени доступа к памяти Ттет.

Т = Т + Т

1 1 сотр 1 1 тет

Рассмотрим, как значения Тсотр и Ттет зависят от параметров а, у., р1, р2.

Изменение характеристик НС ведет к пропорциональному изменению числа вычислительных операций, выполняемых ядрами GPU:

Тсотр Ссотр (к) X Тор

Здесь: Ссотр (к) -вычислительная сложность НС с параметрами а, Тор(к,^) - оценка времени выполнения реализации сети на тестовой плате GPU, HWop ft) - коэффициент изменения вычислительной эффективности при переходе от платы с характеристиками ft к плате ft.

Значение Tmem подвержено скачкообразным изменениям из-за использования в технологии CUDA механизма объединенных запросов и ограниченных размеров разделяемой памяти. Для оценки времени Tmem разделим его на две составляющие:

т = т + Т

lmem д s

Здесь Тд- время выполнения обращений к глобальной памяти, Ts - время необходимое для работы с разделяемой памятью.

Значение Тд зависит от скорости выполнения операций чтения и записи в глобальную память, объема передаваемых данных, структуры расположения данных в памяти:

Тд = F

Здесь Сдг(к), Cgw(к) - количество операций чтения и записи в глобальной памяти, Тдг(к, ^), Tgw (к, ^) - оценочная скорость выполнения операций чтения и записи в глобальной памяти, полученные на тестовой плате, HWg(fi1,ft) - коэффициент изменения эффективности доступа к глобальной памяти при переходе от платы с характеристиками ft к плате ft.

Время работы с разделяемой памятью определяется числом обращений к ней для заданной архитектуры С5ГШ(к), оценочными характеристиками работы с разделяемой памятью Т5ГШ(к,у.) и коэффициентом изменения эффективности доступа HWS (fi1, ft ).

Ts = G

Экспериментальная проверка для сверточных НС

Сети свертки [10] принадлежат очень популярному в последнее время направлению глубокого обучения (Deep Learning). Применение данной технологии дало возможность получать эффективные решения для многих практически важных задач. Для ряда областей подходы, в основе которых лежат НС свертки, демонстрируют результаты, превышающие по своей точности результаты экспертов. При этом их структура предполагает эффективное распараллеливание.

Для экспериментальной проверки наличия функциональной зависимости времени работы НС от параметров используемой платы GPU была построена параллельная реализация сверточной НС для решения задачи классификации на базе MNIST (http://yann.lecun.com /exdb/mnist/). Замеры времени работы данной сети производилось с использованием графического ускорителя NVIDIA GRID K520, при этом количество используемых ядер варьировалось.

На рис.2 показаны результаты экспериментов для числа ядер 1536, 1024, 768, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1. Допольнительно было измерено время работы последовательной версии сети при использовании CPU Intel Core ¡5-2410M, работающем на частоте 2.3ГГц. so

а

и

g 50

I 40

5

1 3°

Л

5 30

о

1536 1024 768 512 256 128 64 32 16 8 4 2 1 Количество ядер

• BIHÍMH líu:Mot?: -иil.v geni >:.< (il 'о —<—Время ОШОЛОПШЦ cení I;.t CPU

Рис. 2. Время работы сети свертки с использованием GPU с различным числом работающих ядер и на CPU.

Методами нелинейной регрессии было выполнено восстановление функциональной зависимости времени работы НС от числа активных ядер GPU.

Таким образом, для случая сверточных НС было получено экспериментальное подтверждение наличия функциональной зависимости времени работы от параметров платы графического ускорителя.

Заключение

В работе проведен анализ ряда подходов к прогнозированию времени выполнения программы на плате GPU. Обозначены основные факторы, влияющие на точность вычисления оценки эффективности. Выделены основные проблемы, которые необходимо решить при разработке модели прогнозирования времени выпол-

нения параллельной программы. Сформулирована постановка задачи построения метода оценки эффективности вычисления НС с использованием графической платы. Проведен анализ влияния основных характеристик НС на время ее выполнения. Выполнена экспериментальная верификация некоторых из сформулированных положений на примере сверточной НС.

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

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

Список литературы:

1. Amani A., Mohammadyani D. Artificial Neural Networks: Applications in Nanotechnology. Chapter in book: Artificial Neural Networks - Application. book edited by Chi Leung Patrick Hui, ISBN 978-953-307-188-6, Published: April 11, 2011.

2. Baghsorkhi S., Delahaye M., Gropp W., Wen-mei H.,W. Analytical performance prediction for evaluation and tuning of GPGPU applications. Workshop on Exploiting Parallelism using GPUs and other HardwareAssisted Methods (EPHAM'09), In conjunction with The International Symposium on Code Generation and Optimization (CGO), 2009.

3. Fortune S., Wyllie J. Parallelism in Random Access Machines. In Proc. ACM STOC, 1978.

4. Gibbons P. B., Matias Y., Ramachandran V. The queue-read queue-write asynchronous pram model. In In Proc. of EURO-PAR, 1996.

5. Gómez-Luna J., González-Linares J.M., Benavides J.I., Guil N. Performance models for CUDA streams on NVIDIA GeForce series. Technical Report, University of Málaga, 2011.

6. Guo P., Wang L. Accurate CUDA performance modeling for sparse matrix-vector multiplication. International Conference on High Performance Computing and Simulation (HPCS), 2012.

7. Hasan K.S., Chatterjee A., Radhakrishnan S., Antonio J.K. Performance Prediction Model and Analysis for Compute-Intensive Tasks on GPUs. In: Hsu CH., Shi X., Salapura V. (eds) Network and Parallel Computing. NPC 2014.

8. Hopf M., Ertl T. Hardware Accelerated Wavelet Transformations. In Proc. EG Symposium on Visualization, 2000.

9. Kothapalli K., Mukherjee R., Rehman M. S., Patidar, S., Narayanan, PJ., Srinathan K. A performance prediction model for the CUDA GPGPU platform. 2009 International Conference on High Performance Computing (HiPC), 2009.

10. LeCun Y., Boser B., Denker J.S., Henderson D., Howard R.E., Hubbard W., Jackel L.D. Handwritten digit recognition with a back-propagation network, Advanced in Neural Information Processing, 1990a, vol.2, 1990.

11. Luo Y., Duraiswami R. Canny Edge Detection on Nvidia CUDA. In Proc. of IEEE Computer Vision and Pattern Recognition, 2008.

12. Nguyen H. GPU Gems 3. Addison-Wesley Professional, 2007.

13. Sacha G. M., Varona P. Artificial intelligence in nanotechnology. Nanotechnology, 24 452002, 2013.

14. Valiant L. G. A Bridging Model for Parallel Computation. Comm. ACM 33, 8, 1990.

15. Vineet V., Narayanan PJ. CUDA cuts: Fast Graph Cuts on the GPU. In Proceedings of the CVPR Workshop on Visual Computer Vision on GPUs, 2008.