Даже в наше время расчет весов нейросети дело вычислительно тяжелое.
Тот, кто работал с библиотеками keras с theano или tensorflow понимает как мучительно долго ждать расчета, который может затянуть на дни, не позволяя полноценно работать на машине в это время. В качестве решения можно попробовать такие варианты, как AmasonAWS или Asure, арендовав там вычислительные мощности.
Но для счастливых обладателей видеокарт c поддержкой CUDA есть и второй вариант, исключающий дополнительные траты.
Итак, по порядку.
Сначала нужно убедиться, точно ли видеокарта поддерживает CUDA, это можно сделать просмотрев этот список.
Если все ок – продолжаем.
Теперь нужно зарегистрироваться на сайте https://developer.nvidia.com/.
Нам нужно установить два пакета. Пакеты довольно объемны и на моей системе (arch-linux) потребовали около двух гигабайт. Один из них – cuda toolkit 7й версии. Установить его можно из репозитория, он добавлен в большинство популярных дистрибутивов. Если же в своем репозитории вы его не нашли, обратитесь на эту страницу. Устанавливать пакет лучше в /usr/local/cuda, или в другом случае создать этот путь как символическую ссылку на директорию с реальными файлами библиотеки.
Второй пакет – cudNN. Это библиотечка для нейросетей от Nvidia. Её нужно скачать отсюда (https://developer.nvidia.com/rdp/cudnn-download). Нужная версия – 4. Версия 5 хотя и выпущена, но не поддерживается полноценно библиотеками theano и tensorflow на момент написания статьи.
После загрузки и распаковки архива, файл include/cudnn.h необходимо перенести в /usr/local/cuda/include, а файлы из lib64 архива перенести в одноименную директорию в установленной библиотеке /usr/local/cuda/lib64
Да и конечно же, не забудьте установить проприетарные драйвера от Nvidia.
Я тестировал скорость обучения нейросети на CPU и GPU на наборе MNIST. Мой код стал выполняться в 9.6 раз быстрее в случае расчета на графическом процессоре.