Сравнение эффективности использования технологий CUDA и OpenCL при реализации нейронной сети репликации | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 29 августа, печатный экземпляр отправим 16 сентября.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №25 (315) июнь 2020 г.

Дата публикации: 19.06.2020

Статья просмотрена: 7 раз

Библиографическое описание:

Минин, С. А. Сравнение эффективности использования технологий CUDA и OpenCL при реализации нейронной сети репликации / С. А. Минин. — Текст : непосредственный // Молодой ученый. — 2020. — № 25 (315). — С. 114-117. — URL: https://moluch.ru/archive/315/71882/ (дата обращения: 15.08.2020).



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

Ключевые слова: CUDA, OpenCL, нейронная сеть репликации, машинное обучение, техническая реализация, сравнение эффективности.

Введение

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

1. Предметная область

1.1 Основные сведения об автоэнкодерах

Согласно [1], нейронная сеть репликации (или автоэнкодер) — это нейронная сеть, удовлетворяющая ряду условий:

1) Входной и выходной слои имеют одинаковый размер k;

2) Размер скрытого слоя n строго меньше k;

3) Сеть является полносвязной.

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

Схематичное представление автоэнкодера

Рис. 1. Схематичное представление автоэнкодера

Из рисунка 1 видно, что цель, с которой были разработаны нейронные сети репликации, заключается в извлечении признаков и других интересных данных, которые выделяет для себя нейросеть в процессе обучения. Эти данные, очевидно, содержатся в закодированном сигнале s (рис. 1). Таким образом, понятно, что существование промежуточного слоя необходимо, иначе задача предсказания и обучения сводилась бы к тривиальному копированию «входа» на «выход».

1.2 Задачи, решаемые автоэнкодерами

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

1) Предварительное обучение нейронных сетей;

2) Сжатие информации;

3) Снижение размерности данных;

4) Сглаживание шума.

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

2. Компьютерный эксперимент

2.1 Важное замечание

Прежде всего, стоит сделать важное замечание, которое скорее относится к тонкостям технической реализации, нежели к особенностям предметной области, рассмотренным в предыдущей главе. Дело в том, что входной сигнал искусственного нейрона есть линейная комбинация вектора входных данных и вектора весов этого нейрона [1]. Соответственно, если рассматривать процесс прямого прохода сигнала по всей сети, от слоя к слою, то окажется, что этот процесс можно представить в более лаконичном виде, нежели набор скалярных произведений, а именно в виде умножения вектора входных данных на матрицу весов слоя. Соответственно, основная трудность технической реализации состоит в реализации операции умножения матрицы на вектор-столбец. Благо, [2] и [3] содержат нужные примеры и заготовки, которые остаётся эффективно использовать.

2.2 Гипотеза

Для начала стоит представить сведения о тестовом стенде (таблица 1).

Таблица 1

Список характеристик тестового стенда

Название характеристики

Значение характеристики

Операционная система

Windows 10 Home, 64 bit

Версия CUDA Toolkit

10.2

Версия OpenCL

1.2 CUDA

Процессор

Intel(R) Core (TM) i5–8300H CPU @ 2.30GHz

Видеокарта

NVIDIA GeForce GTX 1050

Объём оперативной памяти, Гб

16

Версия драйвера видеокарты

442.50

Я выдвигаю гипотезу, что результаты эксперимента будут примерно одинаковыми, но несмотря на то, что OpenCL входит в поставку NVIDIA CUDA Toolkit, CUDA покажет чуть более высокие результаты, так как технология создавалась специально для видеокарт фирмы NVIDIA.

2.3 Содержание эксперимента

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

Как уже упоминалось ранее в главе 1, используемая для сравнения эффективности нейронная сеть репликации будет работать с набором данных MNIST (рис. 2).

Фрагмент набора данных MNIST

Рис. 2. Фрагмент набора данных MNIST

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

Визуальное представление «признаков», выявленных автоэнкодером

Рис. 3. Визуальное представление «признаков», выявленных автоэнкодером

Ну а используемая сеть будет иметь 784 входа, 64 скрытых нейрона и 784 выхода.

2.4 Результат

Результаты были получены путём замера времени выполнения функций, реализующих тесты, указанные в таблице 2. Для программы, использующей технологии CUDA, была применена утилита nvprof [3], а для программы, использующей технологии OpenCL, были выполнены вызовы специальной функции самого фреймворка — clGetEventProfilingInfo [2]. Результаты представлены ниже, в ранее упомянутой таблице 2.

Таблица 2

Результаты эксперимента

Название теста

Результат CUDA, с

Результат OpenCL, с

Умножение матрицы 784х64 на вектор длиной 784

1,04 * 10– 4

4,7 * 10– 5

Предсказание сети

1,37 * 10– 4

6,7 * 10– 5

Обучение сети

147,7

101,5

Заключение

В рамках данной работы были получены базовые навыки программирования графических процессоров и изучены основы технологий CUDA и OpenCL. Удивительно, но эксперимент опроверг мою гипотезу. Возможно, загрузка для видеокарты была небольшой в случае CUDA, и я не смог полностью раскрыть потенциал технологии. А может быть дело в том, что мною, при использовании OpenCL, были приняты во внимание рекомендации [4], например, использование нативных (native) математических функций в коде ядра. В любом случае, результаты довольно интересные.

Литература:

  1. Хайкин, С. Нейронные сети. Полный курс [Текст] / С. Хайкин. — М.: Издательский дом «Вильямс», 2006. — 1104 с.
  2. Scarpino, M. OpenCL in Action: How to accelerate graphics and computations [Текст] / M. Scarpino, — M.: Manning Publications Co., 2011. — 456 c.
  3. CUDA Toolkit Documentation [Электронный ресурс]: официальная документация к инструменту NVIDIA — Электрон. текстовые дан. — 2019. — Режим доступа: https://docs.nvidia.com/cuda/
  4. Минин, С. А. Исследование способов оптимизации нейросетевых вычислений [Текст] / С. А. Минин // Каталог инновационных разработок участников Московского молодёжного научного форума (г. Москва, 21–24 ноября 2017 г.). — Москва, 2017. — С. 17–25.
Основные термины (генерируются автоматически): CUDA, MNIST, NVIDIA, нейронная сеть репликации, входной сигнал, машинное обучение, сравнение эффективности, техническая реализация, нейронная сеть, предметная область.


Ключевые слова

CUDA, машинное обучение, OpenCL, нейронная сеть репликации, техническая реализация, сравнение эффективности

Похожие статьи

Аппаратная реализация искусственных нейронных сетей. Часть 1

Представлены методы аппаратной реализации искусственных нейронных сетей с использованием

Ключевые слова: искусственные нейронные сети, КМОП реализация, Пост-КМОП

Это позволяет выполнять тренировочные расчеты быстрее и точнее, в сравнении с...

К вопросу об использовании микроконтроллеров для реализации...

Для проведения эксперимента была обучена нейронная сеть, которая классифицирует изображения одежды. Для обучения был использован датасет Fashion MNIST, содержащий размеченные изображения размером 28x28. Нейронная сеть создана с использованием...

Intelligent Evolutionary Studio — программное обеспечение для...

Ключевые слова: искусственные нейронные сети, генетические алгоритмы, машинное обучение.

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

Разработка программного модуля диагностики опухолей головного...

Ключевые слова: машинное зрение, сверточная нейронная сеть, МРТ, глубинное обучение.

Принцип работы сверточного слоя довольно прост: по входному многомерному массиву

В настоящее время сверточные нейронные сети широко применяют в задачах...

Применение машинного обучения для обнаружения сетевых...

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

Нейронная сеть нуждается в обучении. Высокое время обработки больших нейронных сетей.

Моделирование нейронных сетей Кохонена на графических...

Реализация нейронной сети Кохонена сиспользованием технологии CUDA. Процесс обучения нейронной сети Кохонена можно представить в виде трех этапов: вычисление расстояния между представленным на сети образцом и каждым нейроном сети (рис. 1), определение...

Обнаружение объектов на изображении для автономных роботов

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

Эволюционный подход к настройке и обучению нейронной сети

Построение искусственной нейронной сети (ИНС), с классической точки зрения, выполняется

Данный недостаток приводит к низкой эффективности за счет значительного увеличения

Эволюционный подход к настройке и обучению искусственных нейронных сетей (2006, Цой...

Искусственные нейронные сети в военной сфере | Молодой ученый

Искусственная Нейро́нная сеть (также искусственная нейронная сеть, ИНС) — математическая модель, а также её программная или аппаратная реализация, построенная по принципу организации и функционирования биологических нейронных сетейсетей нервных клеток...

Проблемы обучения нейронных сетей | Статья в журнале...

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

Похожие статьи

Аппаратная реализация искусственных нейронных сетей. Часть 1

Представлены методы аппаратной реализации искусственных нейронных сетей с использованием

Ключевые слова: искусственные нейронные сети, КМОП реализация, Пост-КМОП

Это позволяет выполнять тренировочные расчеты быстрее и точнее, в сравнении с...

К вопросу об использовании микроконтроллеров для реализации...

Для проведения эксперимента была обучена нейронная сеть, которая классифицирует изображения одежды. Для обучения был использован датасет Fashion MNIST, содержащий размеченные изображения размером 28x28. Нейронная сеть создана с использованием...

Intelligent Evolutionary Studio — программное обеспечение для...

Ключевые слова: искусственные нейронные сети, генетические алгоритмы, машинное обучение.

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

Разработка программного модуля диагностики опухолей головного...

Ключевые слова: машинное зрение, сверточная нейронная сеть, МРТ, глубинное обучение.

Принцип работы сверточного слоя довольно прост: по входному многомерному массиву

В настоящее время сверточные нейронные сети широко применяют в задачах...

Применение машинного обучения для обнаружения сетевых...

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

Нейронная сеть нуждается в обучении. Высокое время обработки больших нейронных сетей.

Моделирование нейронных сетей Кохонена на графических...

Реализация нейронной сети Кохонена сиспользованием технологии CUDA. Процесс обучения нейронной сети Кохонена можно представить в виде трех этапов: вычисление расстояния между представленным на сети образцом и каждым нейроном сети (рис. 1), определение...

Обнаружение объектов на изображении для автономных роботов

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

Эволюционный подход к настройке и обучению нейронной сети

Построение искусственной нейронной сети (ИНС), с классической точки зрения, выполняется

Данный недостаток приводит к низкой эффективности за счет значительного увеличения

Эволюционный подход к настройке и обучению искусственных нейронных сетей (2006, Цой...

Искусственные нейронные сети в военной сфере | Молодой ученый

Искусственная Нейро́нная сеть (также искусственная нейронная сеть, ИНС) — математическая модель, а также её программная или аппаратная реализация, построенная по принципу организации и функционирования биологических нейронных сетейсетей нервных клеток...

Проблемы обучения нейронных сетей | Статья в журнале...

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

Задать вопрос