660 likes | 1.08k Views
Возможности применения GPU для нейронных сетей. Путенкова В.Ю. Научный руководитель: Буряк Д.Ю. Особенности строения мозга:. общее число нейронов 10 10 число связей 10 13 время реакции нейрона 10 - 3 с. Схема нейрона головного мозга. Нейронные сети в биологических системах.
E N D
Возможности применения GPU для нейронных сетей Путенкова В.Ю. Научный руководитель: Буряк Д.Ю.
Особенности строения мозга: • общее число нейронов 1010 • число связей 1013 • время реакции нейрона 10-3с Схема нейрона головного мозга Нейронные сети в биологических системах
Применение нейросетей • Классификация • Кластеризация • Аппроксимация функций • Оптимизация • Прогнозирование • Автоассоциативная память • Управление • Визуализация многомерных данных
Т.о. существует принципиальная возможность распараллеливания • Реализация конкретных алгоритмов сильно зависит от используемых архитектур вычислительных систем
Возможные способы параллелизации • фазы обучения • обучающей выборки • на уровне слоя • на уровне нейрона • на уровне весов
Проблемы: • Распределение вычислений по процессорам • Затраты на обмен данными(особенности алгоритмов, пропускная способность, латентность) • Вычислительная сложность(специализированные процессоры, ограничения на используемые операции)
Используемые архитектуры • Кластеры • Многопроцессорные системы • Одно- и многоядерные CPU • GPU • Нейрочипы
Примеры реализаций нейросетевых алгоритмов на различных аппаратных архитектурах
Пример: РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ САМООРГАНИЗУЮЩИХСЯ КАРТ КОХОНЕНА • задачи кластеризации массивов данных и построения контекстных карт признаков
Карты Кохонена • Инициализация • Подвыборка • Поиск максимального подобия • Коррекция • Продолжение (шаг 2)
Карты Кохонена • Задача: • 64 входа, карта 25 нейронов, • 2790 примеров, 30 циклов обучения • Платформы: • неоднородный кластер (Ethernet); • однородный кластер (32 Dual-Pentium, оптоволокно); • мультипроцессорная система (64 процессора)
Пример:КартыКохонена • Задача: • 100входов карты,25х25, 50х50 и 100х100 нейронов, • 60000 примеров, 50 циклов обучения • Платформа: • IntelCore i7 920 (4 * 2.67GHz), Windows 7 64-bit. • NVIDIAGeForce GTX 680. • Microsoft VS 2010, для параллельной версии использовалась надстройка NVIDIA Parallel Nsight v.2.1 и программный пакет NVIDIA CUDA Toolkit v4.2.
Средний прирост скорости обучения относительно последовательной версии алгоритма для карты размера 25х25 нейронов составил 12,39 раз, для карты размера 50х50 нейронов 24,27 раз, а для карты размера 100х100 нейронов время работы параллельного алгоритма превышает время работы последовательного уже в 55,78 раз
Пример: ОБУЧЕНИЕ ТРЕХСЛОЙНОГО ПЕРЦЕПТРОНА • m,n,k – нейронов в входном,скрытом и выходном слоях • активационная функция сигмоида • Алгоритм обучения: обратного распространения ошибки
Трехслойный перцептрон 1.Прямое распространение сигнала 2.Входной вектор 3.Выходной желаемый вектор 4.Ошибка на р-ом примере
Трехслойный перцептрон 5.Подстройка весов(минимизация ошибки методом градиентного спуска)
Трехслойный перцептрон Особенности решения: • Для уменьшения числа обменов с глобальной памятью GPU-> массивы данных в двумерные массивы и разбить их на блоки; • Загруженность процессорных элементов, способная скрыть задержку при доступе к ГП GPU-> блоки нужного размера; • Cнизить частоту обменов между CPU и GPU-> пакетная обработка обучающей выборки(перемножение матриц).
Трехслойный перцептрон Результаты: • Аппаратная платформа: • CPU: Intel Core 2 Duo 3.00 GHz • RAM: 3.25 Gb • GPU: GeForce 8800 GT, 256 RAM • Задача: • нейронов входного и выходного слоёв: 1)512; 2)256. • нейронов скрытого слоя: ось абсцисс графиков
1) 2)
Пример: ЗАДАЧА ДИАГНОСТИКИ ПАЦИЕНТА,КАК ЗАДАЧА РАСПОЗНАВАНИЯ ОБРАЗА Многослойный перцептрон
Многослойный перцептрон • Матрица входных элементов • Вектор выходных элементов • НС выполняет преобразование W – вектор весовых коэффициентов • Найти такие W*, которые ошибку
Многослойный перцептрон • Задача: • нейронов во входном/скрытом/выходном слое – 16/64/2 • 87 пациентов(описывались 16ю показателями) • функция активации сигмоида • Платформа: • IntelPentiumE5200 • NVIDIA GeForce GTX550TI (ОП 4 ГБ) • Результаты: • T[c] обучения/тестирования алгоритмом, реализованным для центрального процессора – 712/26 с, с применением CUDA – 88/4 с • Ускорение вычислений в 8/6,5 раз
Пример: ЗАДАЧА РАСПОЗНАВАНИЯ ИЗОБРАЖЕНИЯ • Задача: • Входной/скрытый/выходной 64/9/6(вых 26 букв+10 цифр в двоичной кодировке) • Обучение: метод Лавнеберга- Марквардта • Платформа:
Трехслойный персептрон • Результаты:
Пример:ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА ПОТОКА ДАННЫХ • Задача: • Трехслойный персептрон • Нейронов во входном=скрытом=выходном • Входные данные разбиты на окна, объединенные в блоки • Платформа: • IntelCore 2 Duo • GeForce8800GT
Результаты: уменьшение задержек доступа к памяти для чтения входных весов нейронов
Пример: РАСПОЗНАВАНИЕ РУКОПИСНЫХ ЦИФР • Задача: • Обучение-обратное распространение ошибки • Тренировочный набор: 60000 раз по одному вектору из 500 • Тестовый набор: по одному из 10000 образцов
Сеть свертки • Платформа: • CPU IntelPentium D 925 (3000 МГц), 2 ГБ DDR2 (PC2-5300), • видеокарта на основе NVIDIA 9600GT; • MicrosoftWindows 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), InlineFunction Expansion (/Ob1), Enable Intrinsic Functions(/Oi), Favor Fast Code (/Ot).
Результаты: Ошибки распознавания: • 1.6% на GPU • 1.3% на CPU
Пример:Обратная задача магнитотеллурического зондирования • Обратная задача: восстановление реальныххарактеристик пород по наблюдаемым эл-маг. полям
Многослойный персептрон • Задача: • Градиентный спуск(обратное распространение ошибки) • 1628/8/1 нейронов во входном/скрытом/выходном слоях • 4 комплекта по 1680 персептронов • Обучающая выборка 30000 примеров, 20 эпох
Результаты: • CPU: AMD Athlon64 x2 Dual 6000+ 3.0 GHz
Итог: • CUDA • 2580эпох обучения (на 1 сеть за 1 минуту) • 13 часов на все вычисления на GTX 285 • CPU • 35эпох обучения (на 1 сеть за 1 минуту на 1 ядро) • Примерно 2 месяцана 11 ядрах класса AMD 64 x2 3.0ГГц
Особенности CPU IntelCore 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
GPU Streaming Multiprocessor (SM) Потоковый мультипроцессор «Единица» построения устройства (как ядро в CPU): •32 скалярных ядра CUDA Core, ~1.5ГГц •2 Warp Scheduler-а •Файл регистров, 128KB •3 Кэша – текстурный, глобальный (L1), константный(uniform) •PolyMorphEngine – графический конвейер •Текстурные юниты •SpecialFunctionUnit (SFU) – интерполяция и трансцендентная математика одинарной точности •16 x Load/Store unit
GPC 4 Потоковых мультипроцессора объединяются в GPC - GraphicsProcessingCluster , минимальный блок видеокарты
Чип в максимальной конфигурации •16 SM •512 ядер CUDA Core •Кеш L2 758KB •GigaThreadEngine •Контроллеры памяти DDR5 •Интерфейс PCI
Отличия GPU от CPU Сотни упрощённых вычислительных ядер, работающих на небольшой тактовой частоте ~1.5ГГц (вместо 2-8 на CPU) Небольшие кеши •32 ядра разделяют L1, с двумя режимами: 16KB или 48KB •L2 общий для всех ядер, 768 KB, L3 отсутствует Оперативная память с высокой пропускной способностью и высокой латентностью • Оптимизирована для коллективного доступа Поддержка миллионов виртуальных нитей, быстрое переключение контекста для групп нитей
Латентность памяти Цель: эффективно загружать Ядра Проблема: латентность памяти Решение: •CPU: Сложная иерархия кешей •GPU: Много нитей, покрывать обращения одних нитей в память вычислениями в других за счёт быстрого переключения контекста За счёт наличия сотен ядер и поддержки миллионов нитей (потребителей) на GPU легче заполнить всю полосу пропускания
Теоретическая пропускная способность и производительность GPU vs СPU