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

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

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

Автор:

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

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

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

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

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

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



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

Ключевые слова: 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, нейронная сеть репликации, техническая реализация, сравнение эффективности

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

Повышение эффективности размещения элементов БИС на основе алгоритмов машинного обучения

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

Автоматизация разработки программного обеспечения с помощью искусственного интеллекта: как нейросети могут изменить процессы разработки

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

Алгоритмы кластеризации в машинном обучении

В статье рассматриваются основные алгоритмы кластеризации в машинном обучении.

Формализация требований для средств разработки и обучения нейронных сетей

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

Использование машинного обучения при разработке информационной системы генеалогического древа математиков теории чисел

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

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

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

Построение имитационной модели JavaEE веб-приложения по результатам тестирования производительности

В статье рассматриваются вопросы построения имитационной модели веб-приложения в среде Palladio Bench по результатам тестирования производительности реального веб-приложения на базе Apache Tomcat с использованием приложения Apache Jmeter, чтобы опред...

Применение цифрового моделирования в Visual Components при разработке роботизированных комплексов на основе коллаборативной робототехники

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

Имитационное моделирование процесса передачи данных

В статье решена задача имитационного модулирования средствами AnyLogic.

Исследование методов автоматического программирования с применением искусственного интеллекта

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

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

Повышение эффективности размещения элементов БИС на основе алгоритмов машинного обучения

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

Автоматизация разработки программного обеспечения с помощью искусственного интеллекта: как нейросети могут изменить процессы разработки

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

Алгоритмы кластеризации в машинном обучении

В статье рассматриваются основные алгоритмы кластеризации в машинном обучении.

Формализация требований для средств разработки и обучения нейронных сетей

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

Использование машинного обучения при разработке информационной системы генеалогического древа математиков теории чисел

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

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

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

Построение имитационной модели JavaEE веб-приложения по результатам тестирования производительности

В статье рассматриваются вопросы построения имитационной модели веб-приложения в среде Palladio Bench по результатам тестирования производительности реального веб-приложения на базе Apache Tomcat с использованием приложения Apache Jmeter, чтобы опред...

Применение цифрового моделирования в Visual Components при разработке роботизированных комплексов на основе коллаборативной робототехники

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

Имитационное моделирование процесса передачи данных

В статье решена задача имитационного модулирования средствами AnyLogic.

Исследование методов автоматического программирования с применением искусственного интеллекта

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

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