Share This
Связаться со мной
Крути в низ
Categories
//💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Выбираем видеокарту под разные задачи машинного обучения и обходим «подводные камни». Узнаем, какие карты не стоит покупать, из чего составить кластер и что делать при скромном бюджете.kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija fd2f1fe - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

1. Разница между ЦП и ГП

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 7056504 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 1. Архитектура центрального процессора (слева) и графического процессора

Центральный процессор (ЦП) не оптимизирован для одновременного выполнения большого количества простых операций. Для параллельных вычислений лучше подходит графический процессор (ГП):

  • ГП состоит из множества арифметико-логических устройств (АЛУ);
  • бо́льшая часть транзисторов обрабатывает данные, а не занимается кэшированием и управлением потоками;
  • процесс создания, управления и удаления потоков происходит эффективнее, чем у ЦП.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija bc98694 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 2. Иллюстрация сравнения скорости работы центрального процессора («рисует» смайлик) и графического процессора («рисует» Мону Лизу) 2. Устройство ГП

2.1. CUDA

Графический процессор состоит из набора независимых мультипроцессоров, которые включают в себя:

  • CUDA-ядра;
  • модули вычисления математических функций SFU;
  • конвейер;
  • разделяемую память и кэш.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija fa9dda5 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 3. Структура графического процессора

На одном ядре CUDA (архитектура параллельных вычислений от NVIDIA) выполняется одна нить, иначе – поток. Каждому потоку соответствует один элемент вычисляемых данных. Потоки образуют блоки, которые общаются между собой через:

  • разделяемую память;
  • барьерную синхронизацию.

При частоте 1 ГГц процессор делает 109 циклов в секунду. Операции занимают больше времени, чем один цикл, поэтому создается конвейер, где для начала новой операции необходимо дождаться окончания предыдущей.

Мультипроцессор на каждом такте выполняет одну и ту же инструкцию над варпом (warp) – группой из 32 потоков. Потоки одного варпа принадлежат одному блоку и могут взаимодействовать только между собой. Каждому потоку и блоку присваивается идентификатор – трехмерный целочисленный вектор:

  • threadIdx – номер потока в блоке;
  • blockIdx – номер блока, в котором находится поток.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija ff4ec9d - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 4. Переменные нитей в CUDA

Блоки группируются в сетки блоков. Размеры блока и сетки блоков задаются переменными blockDim и gridDim при вызове ядра. Потокам из одного блока доступна разделяемая память (shared memory). Их выполнение может быть синхронизировано.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija b82dda0 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 5. Сетка блоков в CUDA

Алгоритм работы технологии CUDA выглядит следующим образом.

  1. Выделение памяти на ГП.
  2. Копирование расчетных данных в выделенную память ГП.
  3. Вычисления на ядрах ГП.
  4. Перенос результатов вычислений в оперативную память для обработки ЦП.
  5. Освобождение памяти ГП.

2.2. Иерархия памяти

Локальная память (local memory):

  • у каждого потока есть своя локальная память;
  • она существует на протяжении жизни потока.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija da214bd - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 6. Локальная память в CUDA

Разделяемая память (shared memory):

  • доступна потокам внутри одного блока;
  • существует в течение жизни блока;
  • быстрее, чем локальный и глобальный виды.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 63f0e3a - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 7. Разделяемая память блока нитей в CUDA

Глобальная память (global memory):

  • доступна всем потокам во всех блоках;
  • сохраняет состояние в течение работы программы.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija a35b115 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 8. Глобальная память сетки блоков в CUDA

Константная память (constant memory):

  • кэширует данные.

Текстурная память (texture memory):

  • адресует и фильтрует данные.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 2be1540 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 9. Иерархия памяти в CUDA: поток (локальная память) → блоки (разделяемая память) → сетка блоков (глобальная память) Примечание Подробнее о структуре CUDA читайте в нашей статье «Знакомство с программно-аппаратной архитектурой CUDA». 3. Как выбрать ГП

Последовательность шагов при выборе ГП.

  1. Определить область применения: соревнования в Kaggle, глубокое обучение, исследования в области компьютерного зрения, обработка естественного языка и т. д.
  2. Выбрать необходимый объем памяти.
  3. Узнать: сколько видеокарт поместится в системном блоке; правильно ли организована циркуляция воздуха в системном блоке; хватит ли мощности блока питания.

3.1. Когда достаточно менее 11 ГБ памяти

Базовые навыки в глубоком обучении можно освоить, тренируясь на небольших задачах с малыми входными параметрами, поэтому достаточно RTX 3070 (8 ГБ, GDDR6) и RTX 3080 (10 ГБ, GDDR6X). Для прототипирования лучший выбор – RTX 3080.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 0b6b1eb - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 10. Видеокарта NVIDIA RTX 3080

3.2. Когда нужно больше 11 ГБ памяти

Не менее 11 ГБ памяти нужно при работе с архитектурой Transformer, распознаванием медицинских изображений, компьютерным зрением и работой с большими изображениями.

3.3. Тензорные ядра

Тензорные ядра быстрее CUDA-ядер, потому что им требуется меньше циклов для операций с матрицами. В чипах Ampere (линейка RTX 30) стало меньше тензорных ядер, но возросла их производительность.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 67998aa - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 11. Архитектура тензорных ядер в GeForce RTX 2080 Super и GeForce RTX 3080

3.4. Пропускная способность памяти

Тензорные ядра быстрые и обычно простаивают до 70% времени, ожидая данные из глобальной памяти. Поэтому выбирайте ГП с максимальной пропускной способностью памяти. Еще нужна большая разделяемая память и кэш L1, чтобы сократить число обращений к внешней памяти и держать данные ближе к АЛУ.

Сколько нужно памяти:

  • при использовании предобученных моделей в Transformer ≥ 11 ГБ;
  • обучение больших моделей в Transformer или в сверточных нейронных сетях ≥ 24 ГБ;
  • прототипирование нейронных сетей ≥ 10 ГБ;
  • для Kaggle ≥ 8 ГБ;
  • компьютерное зрение ≥ 10 ГБ.

3.5. Система охлаждения

В конструкции системы охлаждения Reference RTX 30 (NVIDIA) первый вентилятор расположен на верхней стороне видеокарты. Он выдувает воздух в пространство, где расположена оперативная память и процессор. Второй вентилятор выдувает воздух сразу из корпуса (Рис. 12).

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 8c2790b - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 12. Cистема охлаждения Reference RTX 30

Еще нет тестов, подтверждающих эффективность решения и необходимость замены штатной системы охлаждения. Установка нескольких ГП в одном корпусе может негативно сказаться на циркуляции потоков воздуха внутри корпуса и охлаждении видеокарт.

3.6. Электропитание

Картам может не хватить мощности блока питания. Четыре карты RTX 3090 потребляют на пике 1400 Вт. Продаются блоки питания на 1600 Вт, но остальным комплектующим 200 Вт может быть недостаточно.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 0886a4e - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 13. Блок питания Super Flower Leadex Titanium SF-1600F14HT на 1600 Вт

3.7. Рекомендации для кластеров

Для кластеров важно надежное электропитание, доступное в дата-центрах, но по лицензионному соглашению карты RTX в них размещать запрещено. Для небольшой системы подойдет Supermicro 8 GPU.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 27c6c96 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 14. Сервер SuperMicro Superserver 4028gr-tvrt, до 8 Tesla v100 sxm2

Для кластера из 256+ ГП – NVIDIA DGX SuperPOD.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 5788795 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 15. Суперкомпьютер NVIDIA DGX SuperPOD

При 1024+ ГП – Google TPU Pod и NVIDIA DGX SuperPod.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 249dc3a - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 16. Суперкомпьютер Google TPU Pod на тензорных процессорах

3.8. Не покупайте эти карты

Не покупайте более одной видеокарты RTX Founders Editions или RTX Titans, если нет PCIe-удлинителей для решения проблем с охлаждением.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 4c048b8 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 17. Видеокарта NVIDIA RTX Titan

Tesla V100 или A100 рентабельны только в кластерах. Карты серии GTX 16 имеют низкую производительность, так как из них убрали тензорные ядра. Аналоги GTX 16: б/у RTX 2070, RTX 2060 или RTX 2060 Super.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 211c07e - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 18. Видеокарта NVIDIA Tesla V100

При наличии RTX 2080 Ti и выше, обновление до RTX 3090 невыгодно. Прирост производительности мал, а риск получить проблемы с питанием и охлаждением в картах RTX 30 высокий. Апгрейд оправдан, если для задач требуется больше памяти.

3.9. Нужен ли PCI 4.0?

Для бюджетной домашней сборки PCI 4.0 не нужен. PCI 4.0 позволит лучше распараллелить и ускорить передачу данных на 1-7% в сравнении с PCIe 3.0 при использовании более четырех ГП. При работе с большими файлами «узким местом» может оказаться SSD-диск, но не передача данных с ГП на ЦП.

3.10. Необходимы только 8x/16x PCIe-слоты?

Использовать исключительно 8x и 16x PCIe-слоты необязательно. Допускается работа двух ГП на слотах 4х. При установке четырех ГП предпочтение отдавайте слотам 8x на каждый ГП, так как производительность слота 4x ниже на 5-10%.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 32afc29 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 19. Слоты PCIe x1, x4, x16

3.11. Можно ли использовать разные карты вместе?

Да, можно! Но будет сложно эффективно распараллелить графические процессоры разных типов, т. к. быстрый ГП будет ждать, пока медленный ГП дойдет до точки синхронизации.

3.12. Что такое NVLink и полезно ли это?

NVLink – высокоскоростное соединение между ГП. В небольших кластерах (< 128 ГП) он не даст преимущества по сравнению с передачей по PCIe.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija a686af9 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 20. Производительность NVLink M40, P100, V100 и A100

3.13. Что делать, если не хватает денег на топовые ГП?

Купить подержанные ГП, либо воспользоваться облачными сервисами. Бюджетные варианты (в порядке убывания цены и производительности):

  • RTX 2070 или RTX 2060;
  • GTX 1070 или GTX 1070 Ti;
  • GTX 980 Ti (6 GB) или GTX 1650 Super.

3.14. Итог

  • топовые карты: RTX 3080, RTX 3090;
  • вторая лига: RTX 3070, RTX 2060 Super;
  • бюджетный вариант: RTX 2070, RTX 2060, GTX 1070, GTX 1070 Ti, GTX 1650 Super, GTX 980 Ti;
  • новичкам: RTX 3070;
  • просто попробовать: RTX 2060 Super, GTX 1050 Ti, облачные сервисы;
  • соревнования Kaggle: RTX 3070;
  • компьютерное зрение, машинный перевод: четыре RTX 3090;
  • NLP с простыми вычислениями: RTX 3080;
  • кластеры менее 128 ГП: 66% 8x RTX 3080 и 33% 8x RTX 3090;
  • кластеры от 128 до 512 ГП: 8x Tesla A100;
  • кластеры более 512 ГП: DGX A100 SuperPOD;

Напоследок несколько сравнительных гистограмм характеристик различных GPU.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 5db4615 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 21. Производительность видеокарт относительно RTX 2080 Ti.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija c063ea2 - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 22. Производительность на доллар (US) ГП относительно RTX 3080.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija e528b8e - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 23. Производительность на доллар (US) четырех ГП относительно четырех RTX 3080.

kak vybrat videokartu dlja nejronnyh setej i glubokogo obuchenija 6d2d46c - 💠 Как выбрать видеокарту для нейронных сетей и глубокого обучения

Рис. 24. Производительность на доллар (US) восьми ГП относительно восьми RTX 3080. ***

В этом руководстве мы рассмотрели устройство графического процессора и определили параметры, которые влияют на производительность в задачах глубокого обучения. Если запускаете расчет нейросеток время от времени, то апгрейд можно проводить через одно поколение графических процессоров.

Источники

  • Введение в GPU (англ.)
  • Основы CUDA (pdf, англ.)
  • Использование технологии CUDA при разработке приложений для параллельных вычислительных устройств (pdf)
  • Какой GPU выбрать для глубокого обучения (англ.)
  • 40 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close