Сети
<<  Х5 Retail Group и Саморегулирующие организации Федеральная сеть «Пятерочка» Путь к сотрудничеству Бизнес-план развития сети шоколадных бутиков French Kiss  >>
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Нейронные сети в биологических системах
Нейронные сети в биологических системах
Модель искусственного нейрона
Модель искусственного нейрона
Виды нейронных сетей
Виды нейронных сетей
Применение нейросетей
Применение нейросетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Т.о. существует принципиальная возможность распараллеливания
Т.о. существует принципиальная возможность распараллеливания
Возможные способы параллелизации
Возможные способы параллелизации
Проблемы:
Проблемы:
Используемые архитектуры
Используемые архитектуры
Примеры реализаций нейросетевых алгоритмов на различных аппаратных
Примеры реализаций нейросетевых алгоритмов на различных аппаратных
Пример: РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ САМООРГАНИЗУЮЩИХСЯ КАРТ КОХОНЕНА
Пример: РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ САМООРГАНИЗУЮЩИХСЯ КАРТ КОХОНЕНА
Карты Кохонена
Карты Кохонена
Карты Кохонена
Карты Кохонена
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Пример:Карты Кохонена
Пример:Карты Кохонена
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Возможности применения GPU для нейронных сетей
Средний прирост скорости обучения относительно последовательной версии
Средний прирост скорости обучения относительно последовательной версии
Пример: ОБУЧЕНИЕ ТРЕХСЛОЙНОГО ПЕРЦЕПТРОНА
Пример: ОБУЧЕНИЕ ТРЕХСЛОЙНОГО ПЕРЦЕПТРОНА
Трехслойный перцептрон
Трехслойный перцептрон
Трехслойный перцептрон
Трехслойный перцептрон
Трехслойный перцептрон
Трехслойный перцептрон
Трехслойный перцептрон
Трехслойный перцептрон
1) 2)
1) 2)
Пример: ЗАДАЧА ДИАГНОСТИКИ ПАЦИЕНТА,КАК ЗАДАЧА РАСПОЗНАВАНИЯ ОБРАЗА
Пример: ЗАДАЧА ДИАГНОСТИКИ ПАЦИЕНТА,КАК ЗАДАЧА РАСПОЗНАВАНИЯ ОБРАЗА
Многослойный перцептрон
Многослойный перцептрон
Многослойный перцептрон
Многослойный перцептрон
Пример: ЗАДАЧА РАСПОЗНАВАНИЯ ИЗОБРАЖЕНИЯ
Пример: ЗАДАЧА РАСПОЗНАВАНИЯ ИЗОБРАЖЕНИЯ
Трехслойный персептрон
Трехслойный персептрон
Пример:ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ПОТОКА ДАННЫХ
Пример:ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ПОТОКА ДАННЫХ
Результаты: уменьшение задержек доступа к памяти для чтения входных
Результаты: уменьшение задержек доступа к памяти для чтения входных
Пример: РАСПОЗНАВАНИЕ РУКОПИСНЫХ ЦИФР
Пример: РАСПОЗНАВАНИЕ РУКОПИСНЫХ ЦИФР
Сеть свертки
Сеть свертки
Результаты: Ошибки распознавания: 1.6% на GPU 1.3% на CPU
Результаты: Ошибки распознавания: 1.6% на GPU 1.3% на CPU
Пример: Обратная задача магнитотеллурического зондирования
Пример: Обратная задача магнитотеллурического зондирования
Многослойный персептрон
Многослойный персептрон
Результаты: CPU: AMD Athlon64 x2 Dual 6000+ 3.0 GHz
Результаты: CPU: AMD Athlon64 x2 Dual 6000+ 3.0 GHz
Итог: CUDA 2580эпох обучения (на 1 сеть за 1 минуту) 13 часов на все
Итог: CUDA 2580эпох обучения (на 1 сеть за 1 минуту) 13 часов на все
Почему CUDA
Почему CUDA
Особенности CPU Intel Core I-7
Особенности CPU Intel Core I-7
GPU Streaming Multiprocessor (SM)
GPU Streaming Multiprocessor (SM)
GPC
GPC
Чип в максимальной конфигурации
Чип в максимальной конфигурации
Отличия GPU от CPU
Отличия GPU от CPU
Латентность памяти
Латентность памяти
Теоретическая пропускная способность и производительность GPU vs СPU
Теоретическая пропускная способность и производительность GPU vs СPU
GPU - Graphics Processing Unit
GPU - Graphics Processing Unit
CUDA в классификации Флинна
CUDA в классификации Флинна
SIMT: виртуальные нити, блоки
SIMT: виртуальные нити, блоки
SIMT: аппаратное выполнение
SIMT: аппаратное выполнение
Несколько блоков на одном SM
Несколько блоков на одном SM
Вычисления с использованием GPU
Вычисления с использованием GPU
GPU рассматривается как периферийное устройство, управляемое
GPU рассматривается как периферийное устройство, управляемое
Код для GPU (device-code)
Код для GPU (device-code)
Код для CPU (host-code)
Код для CPU (host-code)
Библиотеки в составе CUDA Toolkit
Библиотеки в составе CUDA Toolkit
Основные приемы ускорения для нейронных сетей:
Основные приемы ускорения для нейронных сетей:
Направления развития
Направления развития

Презентация: «Возможности применения GPU для нейронных сетей». Автор: Lenovo. Файл: «Возможности применения GPU для нейронных сетей.pptx». Размер zip-архива: 2332 КБ.

Возможности применения GPU для нейронных сетей

содержание презентации «Возможности применения GPU для нейронных сетей.pptx»
СлайдТекст
1 Возможности применения GPU для нейронных сетей

Возможности применения GPU для нейронных сетей

Путенкова В.Ю. Научный руководитель: Буряк Д.Ю.

2 Возможности применения GPU для нейронных сетей
3 Нейронные сети в биологических системах

Нейронные сети в биологических системах

4 Модель искусственного нейрона

Модель искусственного нейрона

5 Виды нейронных сетей

Виды нейронных сетей

6 Применение нейросетей

Применение нейросетей

Классификация Кластеризация Аппроксимация функций Оптимизация Прогнозирование Автоассоциативная память Управление Визуализация многомерных данных

7 Возможности применения GPU для нейронных сетей
8 Возможности применения GPU для нейронных сетей
9 Т.о. существует принципиальная возможность распараллеливания

Т.о. существует принципиальная возможность распараллеливания

Реализация конкретных алгоритмов сильно зависит от используемых архитектур вычислительных систем

10 Возможные способы параллелизации

Возможные способы параллелизации

Фазы обучения обучающей выборки на уровне слоя на уровне нейрона на уровне весов

11 Проблемы:

Проблемы:

Распределение вычислений по процессорам Затраты на обмен данными(особенности алгоритмов, пропускная способность, латентность) Вычислительная сложность(специализированные процессоры, ограничения на используемые операции)

12 Используемые архитектуры

Используемые архитектуры

Кластеры Многопроцессорные системы Одно- и многоядерные CPU GPU Нейрочипы

13 Примеры реализаций нейросетевых алгоритмов на различных аппаратных

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

архитектурах

14 Пример: РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ САМООРГАНИЗУЮЩИХСЯ КАРТ КОХОНЕНА

Пример: РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ САМООРГАНИЗУЮЩИХСЯ КАРТ КОХОНЕНА

Задачи кластеризации массивов данных и построения контекстных карт признаков

15 Карты Кохонена

Карты Кохонена

Инициализация Подвыборка Поиск максимального подобия Коррекция Продолжение (шаг 2)

16 Карты Кохонена

Карты Кохонена

Задача: 64 входа, карта 25 нейронов, 2790 примеров, 30 циклов обучения Платформы: неоднородный кластер (Ethernet); однородный кластер (32 Dual-Pentium, оптоволокно); мультипроцессорная система (64 процессора)

17 Возможности применения GPU для нейронных сетей
18 Пример:Карты Кохонена

Пример:Карты Кохонена

Задача: 100 входов карты, 25х25, 50х50 и 100х100 нейронов, 60000 примеров, 50 циклов обучения Платформа: Intel Core i7 920 (4 * 2.67GHz), Windows 7 64-bit. NVIDIA GeForce GTX 680. Microsoft VS 2010, для параллельной версии использовалась надстройка NVIDIA Parallel Nsight v.2.1 и программный пакет NVIDIA CUDA Toolkit v4.2.

19 Возможности применения GPU для нейронных сетей
20 Возможности применения GPU для нейронных сетей
21 Возможности применения GPU для нейронных сетей
22 Средний прирост скорости обучения относительно последовательной версии

Средний прирост скорости обучения относительно последовательной версии

алгоритма для карты размера 25х25 нейронов составил 12,39 раз, для карты размера 50х50 нейронов 24,27 раз, а для карты размера 100х100 нейронов время работы параллельного алгоритма превышает время работы последовательного уже в 55,78 раз

23 Пример: ОБУЧЕНИЕ ТРЕХСЛОЙНОГО ПЕРЦЕПТРОНА

Пример: ОБУЧЕНИЕ ТРЕХСЛОЙНОГО ПЕРЦЕПТРОНА

m,n,k – нейронов в входном,скрытом и выходном слоях активационная функция сигмоида Алгоритм обучения: обратного распространения ошибки

24 Трехслойный перцептрон

Трехслойный перцептрон

1.Прямое распространение сигнала 2.Входной вектор 3.Выходной желаемый вектор 4.Ошибка на р-ом примере

25 Трехслойный перцептрон

Трехслойный перцептрон

5.Подстройка весов(минимизация ошибки методом градиентного спуска)

26 Трехслойный перцептрон

Трехслойный перцептрон

Особенности решения: Для уменьшения числа обменов с глобальной памятью GPU-> массивы данных в двумерные массивы и разбить их на блоки; Загруженность процессорных элементов, способная скрыть задержку при доступе к ГП GPU-> блоки нужного размера; Cнизить частоту обменов между CPU и GPU-> пакетная обработка обучающей выборки(перемножение матриц).

27 Трехслойный перцептрон

Трехслойный перцептрон

Результаты: Аппаратная платформа: CPU: Intel Core 2 Duo 3.00 GHz RAM: 3.25 Gb GPU: GeForce 8800 GT, 256 RAM Задача: нейронов входного и выходного слоёв: 1)512; 2)256. нейронов скрытого слоя: ось абсцисс графиков

28 1) 2)

1) 2)

29 Пример: ЗАДАЧА ДИАГНОСТИКИ ПАЦИЕНТА,КАК ЗАДАЧА РАСПОЗНАВАНИЯ ОБРАЗА

Пример: ЗАДАЧА ДИАГНОСТИКИ ПАЦИЕНТА,КАК ЗАДАЧА РАСПОЗНАВАНИЯ ОБРАЗА

Многослойный перцептрон

30 Многослойный перцептрон

Многослойный перцептрон

Матрица входных элементов Вектор выходных элементов НС выполняет преобразование W – вектор весовых коэффициентов Найти такие W*, которые ошибку

31 Многослойный перцептрон

Многослойный перцептрон

Задача: нейронов во входном/скрытом/выходном слое – 16/64/2 87 пациентов(описывались 16ю показателями) функция активации сигмоида Платформа: Intel Pentium E5200 NVIDIA GeForce GTX550TI (ОП 4 ГБ) Результаты: T[c] обучения/тестирования алгоритмом, реализованным для центрального процессора – 712/26 с, с применением CUDA – 88/4 с Ускорение вычислений в 8/6,5 раз

32 Пример: ЗАДАЧА РАСПОЗНАВАНИЯ ИЗОБРАЖЕНИЯ

Пример: ЗАДАЧА РАСПОЗНАВАНИЯ ИЗОБРАЖЕНИЯ

Задача: Входной/скрытый/выходной 64/9/6(вых 26 букв+10 цифр в двоичной кодировке) Обучение: метод Лавнеберга- Марквардта Платформа:

33 Трехслойный персептрон

Трехслойный персептрон

Результаты:

34 Пример:ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ПОТОКА ДАННЫХ

Пример:ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ПОТОКА ДАННЫХ

Задача: Трехслойный персептрон Нейронов во входном=скрытом=выходном Входные данные разбиты на окна, объединенные в блоки Платформа: IntelCore 2 Duo GeForce 8800GT

35 Результаты: уменьшение задержек доступа к памяти для чтения входных

Результаты: уменьшение задержек доступа к памяти для чтения входных

весов нейронов

36 Пример: РАСПОЗНАВАНИЕ РУКОПИСНЫХ ЦИФР

Пример: РАСПОЗНАВАНИЕ РУКОПИСНЫХ ЦИФР

Задача: Обучение-обратное распространение ошибки Тренировочный набор: 60000 раз по одному вектору из 500 Тестовый набор: по одному из 10000 образцов

37 Сеть свертки

Сеть свертки

Платформа: CPU Intel Pentium D 925 (3000 МГц), 2 ГБ DDR2 (PC2-5300), видеокарта на основе NVIDIA 9600GT; Microsoft Windows XP Service Pack 3; NVIDIA Forceware191.07 (дата выпуска 05.10.2009); NVIDIA CUDA2.3 (Toolkit + SDK); Microsoft C/C++ compiler 14.0 (Microsoft Visual Studio 2005 Service Pack 1). Настройки оптимизации: Maximize Speed (/O2), Inline Function Expansion (/Ob1), Enable Intrinsic Functions(/Oi), Favor Fast Code (/Ot).

38 Результаты: Ошибки распознавания: 1.6% на GPU 1.3% на CPU

Результаты: Ошибки распознавания: 1.6% на GPU 1.3% на CPU

39 Пример: Обратная задача магнитотеллурического зондирования

Пример: Обратная задача магнитотеллурического зондирования

Обратная задача: восстановление реальныххарактеристик пород по наблюдаемым эл-маг. полям

40 Многослойный персептрон

Многослойный персептрон

Задача: Градиентный спуск(обратное распространение ошибки) 1628/8/1 нейронов во входном/скрытом/выходном слоях 4 комплекта по 1680 персептронов Обучающая выборка 30000 примеров, 20 эпох

41 Результаты: CPU: AMD Athlon64 x2 Dual 6000+ 3.0 GHz

Результаты: CPU: AMD Athlon64 x2 Dual 6000+ 3.0 GHz

42 Итог: CUDA 2580эпох обучения (на 1 сеть за 1 минуту) 13 часов на все

Итог: CUDA 2580эпох обучения (на 1 сеть за 1 минуту) 13 часов на все

вычисления на GTX 285 CPU 35эпох обучения (на 1 сеть за 1 минуту на 1 ядро) Примерно 2 месяцана 11 ядрах класса AMD 64 x2 3.0ГГц

43 Почему CUDA

Почему CUDA

44 Особенности CPU Intel Core I-7

Особенности CPU Intel Core I-7

Небольшое число мощных независимых ядер •2,4,6,8 ядер, 2,66—3,6ГГц каждое •Каждое физическое ядро определяется системой как 2 логических и может параллельно выполнять два потока (Hyper-Threading) 3 уровня кешей, большой кеш L3 •На каждое ядро L1=32KB (data) + 32KB ( Instructions), L2=256KB •Разделяемый L3 до 20 mb Обращения в память обрабатываются отдельно для каждого процесса\нити

Core i7-3960x, 6 ядер, 15MB L3

45 GPU Streaming Multiprocessor (SM)

GPU Streaming Multiprocessor (SM)

Потоковый мультипроцессор «Единица» построения устройства (как ядро в CPU): •32 скалярных ядра CUDA Core, ~1.5ГГц •2 Warp Scheduler-а •Файл регистров, 128KB •3 Кэша – текстурный, глобальный (L1), константный(uniform) •PolyMorphEngine – графический конвейер •Текстурные юниты •Special Function Unit (SFU) – интерполяция и трансцендентная математика одинарной точности •16 x Load/Store unit

46 GPC

GPC

4 Потоковых мультипроцессора объединяются в GPC - Graphics Processing Cluster , минимальный блок видеокарты

47 Чип в максимальной конфигурации

Чип в максимальной конфигурации

•16 SM •512 ядер CUDA Core •Кеш L2 758KB •GigaThreadEngine •Контроллеры памяти DDR5 •Интерфейс PCI

48 Отличия GPU от CPU

Отличия GPU от CPU

Сотни упрощённых вычислительных ядер, работающих на небольшой тактовой частоте ~1.5ГГц (вместо 2-8 на CPU) Небольшие кеши •32 ядра разделяют L1, с двумя режимами: 16KB или 48KB •L2 общий для всех ядер, 768 KB, L3 отсутствует Оперативная память с высокой пропускной способностью и высокой латентностью • Оптимизирована для коллективного доступа Поддержка миллионов виртуальных нитей, быстрое переключение контекста для групп нитей

49 Латентность памяти

Латентность памяти

Цель: эффективно загружать Ядра Проблема: латентность памяти Решение: •CPU: Сложная иерархия кешей •GPU: Много нитей, покрывать обращения одних нитей в память вычислениями в других за счёт быстрого переключения контекста За счёт наличия сотен ядер и поддержки миллионов нитей (потребителей) на GPU легче заполнить всю полосу пропускания

50 Теоретическая пропускная способность и производительность GPU vs СPU

Теоретическая пропускная способность и производительность GPU vs СPU

51 GPU - Graphics Processing Unit

GPU - Graphics Processing Unit

GPGPU - General-Purpose computing on GPU, вычисления общего вида на GPU Первые GPU от NVIDIA с поддержкой GPGPU – GeForce восьмого поколения, G80 (2006 г) CUDA - Compute Unified Device Architecture (унифицированная архитектура вычислительного устройства) Программно-аппаратная архитектура от Nvidia, позволяющая производить вычисления с использованием графических процессоров

52 CUDA в классификации Флинна

CUDA в классификации Флинна

У Nvidia собственная модель исполнения, имеющая черты как SIMD, так и MIMD: Nvidia SIMT: Single Instruction – Multiple Thread- все нити из одного варпа одновременно выполняют одну инструкцию, варпы выполняются независимо

53 SIMT: виртуальные нити, блоки

SIMT: виртуальные нити, блоки

Виртуально все нити: •выполняются параллельно (MIMD) •Имеют одинаковые права на доступ к памяти (MIMD :SMP) Нити разделены на группы одинакового размера (блоки): •В общем случае, глобальная синхронизация всех нитей невозможна, нити из разных блоков выполняются полностью независимо и не могут управляемо взаимодействовать •Есть локальная синхронизация внутри блока, нити из одного блока могут взаимодействовать через специальную память Нити не мигрируют между блоками. Каждая нить находится в своём блоке с начала выполнения и до конца.

54 SIMT: аппаратное выполнение

SIMT: аппаратное выполнение

Все нити из одного блока выполняются на одном мультипроцессоре (SM) Максимальное число нитей в блоке – 1024 Блоки не мигрируют между SM Распределение блоков по мультироцесссорам непредсказуемо Каждый SM работает независимо от других Блоки нитей по фиксированному правилу разделяются на группы по 32 нити, называемые варпами (warp) Все нити варпа одновременно выполняют одну общую инструкцию (в точности SIMD-выполнение) Warp Scheduler на каждом цикле работы выбирает варп, все нити которого готовы к выполнению следующей инструкции и запускает весь варп Все нити варпа одновременно выполняют одну и ту же инструкцию

55 Несколько блоков на одном SM

Несколько блоков на одном SM

SM может работать с варпами нескольких блоков одновременно •Максимальное число резидентных блоков на одном мультипроцессоре – 8 •Максимальное число резидентных варпов – 48 = 1536 нитей Чем больше нитей активно на мультипроцессоре, тем эффективнее используется оборудование Блоки по 1024 нити – 1 блок на SM, 1024 нити, 66% от максимума Блоки по 100 нитей – 8 блоков на SM, 800 нитей, 52% Блоки по 512 нитей – 3 блока на SM, 1536 нитей, 100%

56 Вычисления с использованием GPU

Вычисления с использованием GPU

Программа, использующая GPU, состоит из: •Кода для GPU, описывающего необходимые вычисления и работу с памятью устройства •Кода для CPU, в котором осуществляется Управление памятью GPU – выделение / освобождение Обмен данными между GPU/CPU Запуск кода для GPU Обработка результатов и прочий последовательный код

57 GPU рассматривается как периферийное устройство, управляемое

GPU рассматривается как периферийное устройство, управляемое

центральным процессором • GPU «пассивно», т.е. не может само загрузить себя работой Код для GPU можно запускать из любого места программы как обычную функцию

58 Код для GPU (device-code)

Код для GPU (device-code)

Код для GPU пишется на C++ с некоторыми надстройками: •Атрибуты функций, переменных и структур •Встроенные функции Математика, реализованная на GPU Синхронизации, коллективные операции •Векторные типы данных •Встроенные переменные threadIdx, blockIdx, gridDim, blockDim •Шаблоны для работы с текстурами •… Компилируется специальным компилятором cicc

59 Код для CPU (host-code)

Код для CPU (host-code)

Код для CPU дополняется вызовами специальных функций для работы с устройством Код для CPU компилируется обычным компилятором •Кроме конструкции запуска ядра <<<...>>>

60 Библиотеки в составе CUDA Toolkit

Библиотеки в составе CUDA Toolkit

Thrust – STL-подобная параллельная обработка данных CUBLAS – функции линейной алгебры CUSPARSE – операции с разреженными матрицами/векторами CURAND – генерация псевдослучайных чисел CUFFT – быстрое дискретное преобразование Фурье NPP – обработка сигналов, изображений и видео NVCUVID/NVCUVENC – кодирование/декодирование видео Thrust – Библиотека шаблонов C++ Параллельные алгоритмы и структуры данных

61 Основные приемы ускорения для нейронных сетей:

Основные приемы ускорения для нейронных сетей:

Правильная постановка задачи«Мусор» на входе -> «мусор» на выходе Раскрытие циклов Использование shared memory видеокарты для хранения часто используемых значений Организация обменов с памятью Легковесные нити Использование пакетного режима Выравнивание данных Использование специализированных библиотек (CUBLASS, CUFFR и др.) Запускать как можно больше нитей

62 Направления развития

Направления развития

Направление GPU: Kepler, Maxwell, SDK CUDA-x86 Направление ARM Направление реконфигурируемых чипов Создание пакета программ «Neuron-GPU»

«Возможности применения GPU для нейронных сетей»
http://900igr.net/prezentacija/informatika/vozmozhnosti-primenenija-gpu-dlja-nejronnykh-setej-221378.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды
900igr.net > Презентации по информатике > Сети > Возможности применения GPU для нейронных сетей