Как стать автором
Обновить

Комментарии 13

объем памяти Nvidia Titan X составляет 12 ГБ. И эту карту Nvidia позиционирует как один из самых мощных GPU для глубокого обучения

Информация уже устарела, замените на Nvidia Titan V

Nvidia Titan V представили пару дней назад, на архитектуре Volta, имеет 100+TFLOPS в задачах глубокого обучения, что в 5 раз быстрее предыдущей ахитектуры Pascal (Nvidia Titan X).
Там тензорные процессоры, так что уверенности что данный код будет эффективен на Титан5 нет.
В Nvidia Titan V есть и CUDA (5120) и тензорные ядры (640).
По словам Nvidia, производительность в задачах глубокого обучения у Nvidia Titan V в 5 раз выше предыдущей архитектуры Pascal:

«Скотт Грей (Scott Gray), член команды Open AI, сказал, что решение может быть распространено на другие архитектуры, кроме Google TPU2.»

Т.е. разряженные матрицы плохо ложатся на тензорные процессоры.
Т.е. разряженные матрицы плохо ложатся на тензорные процессоры.

Разреженные матрицы в целом не очень хорошо ложатся на современные архитектуры из-за непоследовательного доступа к памяти (что на CPU, что на GPU). И к ним сложно применить SIMD инструкции. Поэтому положительный эффект достигается только при достаточно низкой 'плотности' матрицы.
Почему такой вывод? посмотрите как это реализовано в intel Xeon Phi.
Там есть команды simd умножения разряженных матриц.
Там есть команды simd умножения разряженных матриц.
Про такие команды не слышал, если можно, то поясните.

Умножение разряженных матриц, наверное, одна из самых сложных операций для компьютеров. Даже если взять более простую операцию — умножение разреженной матрицы на плотный вектор, то Xeon Phi далеко не достигает своей пиковой производительности (см. здесь). Для разреженного умножения матрицы на матрицу его использование вообще сомнительно.
Работа с разреженными матрицами — хлеб и соль CFD (Computational Fluid Dynamics). Существуют различные способы их хранения и представления в памяти. Из простейших — хранение только диагональных элементов, которое не только улучшает шаблон обращения к памяти, но и уменьшает объём занимаемой памяти с O(N^2) до O(N).
То, что разреженные матрицы не очень хорошо ложатся на современные архитектуры, никоим образом не умаляет их достоинств. Некоторые задачи и вовсе нельзя решить за разумное время, используя плотные матрицы, и задачи, аналогичные вашей, хорошее этому подтверждение.
Для ленточных матриц, безусловно доступ к памяти более оптимален, чем для разреженных матриц в более общих форматах CSR и COO.
Ленточные матрицы для себя я всегда выделял в некий отдельный класс в силу высокой плотности хранения.
Эти терафлопсы довольно таки кукурузные, потому что оперируют с fp16. По крайней мере в большинстве ML задач требуется минимум fp32, а квантизуют уже после обучения.

Впрочем, больше ничего менять не придется, ведь памяти все так же 12 гигов.

Не очень понятно про «ядра» от OpenAI.

Речь идет про gpu-kernel (что является синонимом функции, выполняющей на GPU), или они ввели какие-то новые высокоуровневые абстракции?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий