GPU Basics
#ai_hardware
Несмотря на обилие возможностей глубинного обучения в облаке, десятки тысяч людей продолжают делать это дома на своих компьютерах. И, наверное, уже все знают, что для обучения модели будет использоваться видеокарта – graphical processing unit (“GPU”), а не процессор (“CPU”).
Чтобы дать числовую оценку преимуществ GPU (будем использовать англоязычный термин, так как в нем присутствует «вычислительный» аспект, в отличие от слова «видеокарта») приведу недавний пример из практики. Решили посмотреть, за какое время центральный процессор справится с задачей, на которую у GPU уходит около часа. Оказалось – за 25 часов!
Конечно, данное значение будет отличаться для разных видов задач, CPU и GPU, архитектур систем и используемых для обучения библиотек, но вывод не изменится – GPU быстрее. Намного быстрее. До такой степени, что заниматься современным глубинным обучением на центральном процессоре сейчас вряд ли имеет смысл.
Сегодня немного поговорим о том, почему же GPU быстрей? Простой ответ – процесс глубинного обучения практически целиком состоит из перемножений очень больших матриц для оптимизации огромного количества параметров, а GPU с такой задачей справляется лучше.
Но возникает следующий вопрос – а почему именно GPU лучше перемножает матрицы?
Есть классическая аналогия, что CPU работает как гоночный автомобиль (чаще всего используется Феррари), а GPU как огромный трак. Если нужно доставить из пункта А в пункт Б небольшой груз, то Феррари это сделает намного быстрей.
Но если нужно перевести большое количество стройматериалов, то медленный трак сделает это намного быстрей, так как сможет это сделать за одну «ходку», в то время как Феррари потребуется десятки.
Самый простой способ продемонстрировать этот эффект, сравнить количество ядер. Для самых мощных современных процессоров это несколько десятков (32 – очень круто; 48 – фактически существующий предел). Это очень впечатляет, особенно тех, кто застал времена всего с одним единственным ядром. Но топовые GPU сейчас имеют более 10 тысяч ядер!
Да, ядра GPU другие, намного проще, чем сложные ядра CPU. Но против грубой силы приема нет, 10 тысяч ядер все равно позволяет производить намного больше параллельных вычислений, чем 32, а значит намного быстрей обучать модель.
С перевозкой грузов на траке есть одна большая проблема – его нужно долго нагружать и это может очень сильно удлинять общее время транспортировки.
И действительно, в базовом варианте необходимость перемещения больших объемов данных от процессора на GPU могла бы привести к большим потерям времени.
Но современные системы научились хорошо с этим справляться – они используют параллелизм, фактически, большое количество траков, работающих одновременно, и это позволяет решить проблему перемещения данных относительно быстро.
Таким образом, GPU имеют огромный выигрыш в скорости вычислений и теряют совсем немного из-за необходимости перемещения данных. Общий выигрыш в скорости очень велик.
Глубже в технические детали не пойдем – кто хочет легко может найти про них информацию в других источниках, да и для большинства задач обучения Искусственного интеллекта это не обязательно. Но время от время мы будем писать про практические аспекты «домашнего глубинного обучения».
#ai_hardware
Несмотря на обилие возможностей глубинного обучения в облаке, десятки тысяч людей продолжают делать это дома на своих компьютерах. И, наверное, уже все знают, что для обучения модели будет использоваться видеокарта – graphical processing unit (“GPU”), а не процессор (“CPU”).
Чтобы дать числовую оценку преимуществ GPU (будем использовать англоязычный термин, так как в нем присутствует «вычислительный» аспект, в отличие от слова «видеокарта») приведу недавний пример из практики. Решили посмотреть, за какое время центральный процессор справится с задачей, на которую у GPU уходит около часа. Оказалось – за 25 часов!
Конечно, данное значение будет отличаться для разных видов задач, CPU и GPU, архитектур систем и используемых для обучения библиотек, но вывод не изменится – GPU быстрее. Намного быстрее. До такой степени, что заниматься современным глубинным обучением на центральном процессоре сейчас вряд ли имеет смысл.
Сегодня немного поговорим о том, почему же GPU быстрей? Простой ответ – процесс глубинного обучения практически целиком состоит из перемножений очень больших матриц для оптимизации огромного количества параметров, а GPU с такой задачей справляется лучше.
Но возникает следующий вопрос – а почему именно GPU лучше перемножает матрицы?
Есть классическая аналогия, что CPU работает как гоночный автомобиль (чаще всего используется Феррари), а GPU как огромный трак. Если нужно доставить из пункта А в пункт Б небольшой груз, то Феррари это сделает намного быстрей.
Но если нужно перевести большое количество стройматериалов, то медленный трак сделает это намного быстрей, так как сможет это сделать за одну «ходку», в то время как Феррари потребуется десятки.
Самый простой способ продемонстрировать этот эффект, сравнить количество ядер. Для самых мощных современных процессоров это несколько десятков (32 – очень круто; 48 – фактически существующий предел). Это очень впечатляет, особенно тех, кто застал времена всего с одним единственным ядром. Но топовые GPU сейчас имеют более 10 тысяч ядер!
Да, ядра GPU другие, намного проще, чем сложные ядра CPU. Но против грубой силы приема нет, 10 тысяч ядер все равно позволяет производить намного больше параллельных вычислений, чем 32, а значит намного быстрей обучать модель.
С перевозкой грузов на траке есть одна большая проблема – его нужно долго нагружать и это может очень сильно удлинять общее время транспортировки.
И действительно, в базовом варианте необходимость перемещения больших объемов данных от процессора на GPU могла бы привести к большим потерям времени.
Но современные системы научились хорошо с этим справляться – они используют параллелизм, фактически, большое количество траков, работающих одновременно, и это позволяет решить проблему перемещения данных относительно быстро.
Таким образом, GPU имеют огромный выигрыш в скорости вычислений и теряют совсем немного из-за необходимости перемещения данных. Общий выигрыш в скорости очень велик.
Глубже в технические детали не пойдем – кто хочет легко может найти про них информацию в других источниках, да и для большинства задач обучения Искусственного интеллекта это не обязательно. Но время от время мы будем писать про практические аспекты «домашнего глубинного обучения».