Справочник по выбору GPU для работы с большими языковыми моделями Llama

В данном документе публикуется полезная информация по выбору видеокарт для работы с большими языковыми моделями, такими как Llama, Mistral и другими.

Dalle-3
Dalle-3

Есть четыре задачи в LLM - создание pre-trained модели с нуля, pre-train уже созданной модели для определенной области, fine-tuning, inference созданной ранее pre-trained модели. В разных задачах создания pre-trained, могут потребоваться десятки и более дорогих видеокарт. Модель с 2,7 млрд. параметров будет обучаться около 7 дней на 128 GPU A100 40 ГБ@.

Поэтому здесь говорится только про выбор GPU для fine-tuning и inference. Здесь пока не разбираются вопросы выбора видеокарт для продакшена. Руководство поможет выбрать карту для домашнего или офисного ИИ-компьютера, а также станет понятно какой GPU арендовать.

Содержание

  • Глава 1. Рекомендуемый GPU для LLM
  • Премиум 80 GB
  • Комбинация GPU на 80+ GB
  • Профи на 40+ GB
  • Энтузиаст 24+ GB - бюджет до 300 тыс
  • Любитель 24 GB - бюджет до 100 тыс
  • Глава 2. Классы видеокарт
  • Глава 3. Микроархитектура видеокарты и совместимость
  • Сравнение Compute Capability
  • Сравнение инструкций
  • Несовместимость с 8-бит в HF (3 ноября 2023
  • Глава 4. Производительность GPU
  • Общая таблица производительности в Deep learning
  • Будет ли быстрее или медленнее инференс при работе с несколькими картами?
  • Глава 5. Объем видеопамяти GPU
  • Глава 6. Проблемы масштабирования
  • PCIE и корпус
  • Райзеры PCIE х16
  • Расширители PCIE (PCI-Express expansion enclosure)
  • Проблема с питанием
  • Проблема с охлаждением
  • NVlink
  • Полезные ссылки по масштабированию
  • Пропускная способность памяти на 1 ядро
  • Выбор процессора для Llama
  • Глава 7. Стоп-лист видеокарт для LLM
  • Глава 8. Альтернативы видеокартам Nvidia

Глава 1. Рекомендуемые GPU для LLM

В данном списке представлены видеокарты 1) рекомендуемые для разработчика по моему личному мнению 2) есть вероятность приобрести в РФ б/у или новую 3) оптимальны с точки зрения цены/выхлопа 4) либо просто топ. Аргументация будет подробнее накапливаться по всему документу.

1.1 Премиум 80 GB

1
H100 Hopper 80 GB. Cамая мощная. FP16 = 204.9 TFLOPS. В РФ от 4 млн рублей ($42 тыс.). (19 окт 2023).
  • A100 самая доступная с объемом памяти 80GB. Стоимость в России варьируется от 1.6-2 млн и выше. (19 окт 2023). FP16 = 78 TFLOPS

1.2 Комбинация GPU на 80+ GB

Пока мне не известно, какая конфигурация будет быстрее работать с LLM. Считается, что чем больше памяти на борту, тем лучше. Но надо тестировать, поскольку производительность 4х выше, чем 2х по FP16. Во многих deep learning тестах показывали 4 карты с примерно одинаковым уровнем fp16 и по 24 Гб лучше 2-х RTX по 48 Гб. На 17 ноября 2023, мне известно, что 4 карты работают по скорости как 1 карта в инференсе LLM, при это доступно в 4 раза больше памяти.

1
4 х RTX 3090 96 GB - б/у 300+ тыс. Самый экономный способ достижения объема 96 GB. Общий FP16 = 140 TFLOPS. Питание 1400 Вт.
2
4 х 4090 ADA 96 GB - от 600 тыс, или 800+ тыс на водяном охлаждении. Общий FP16 = 332 TFLOPS. Питание 1800 Вт. Минус: громоздкая
  • 2 х RTX 6000 ADA 96 GB 4 slot от 1.5 млн рублей. FP16=180 TFLOPS
  • 2 х RTX A6000 Ampere 96 GB 4 slot около 800-900 тыс. Оптимальный для компактного размещения в корпусе. FP16 = 76.
  • 4 х V100 Volta 32 GB = 128 Gb около 800 тыс. Вариант можно брать, если только сильно дешевле будет продаваться. Общий FP16 = 56.

1.3 Профи на 40+ GB

1
RTX 6000 ADA 48 GB 2 slot - самая мощная карточка 2023 среди 48 Гб для рабочих станций. Авито 800+ тыс. FP16 = 91 TFLOPS.
  • L40 ADA 48 GB - мощная карта, аналогична RTX 6000 ADA, для датацентров. FP16=90. Стоимость от 800+ тыс
  • A16 Ampere 64 GB - интересная модель для инференса, на борту 4 GPU по 16 GB и все это в 2 слота. Общий слабый FP16 = 17.9. В системе определяются как 4 GPU. 250W
  • RTX A6000 48 GB Ampere 2 slot - Авито цена 400-550 тыс. Если для коммерческого ИИ, когда бюджет от конторы, то великолепный вариант.
  • QUADRO RTX 8000 48 Гб Turing 2 Slot - б/у можно иногда достать (На ebay $3000+). Одна из самых доступных 48 Гб по цене, но редких в РФ.
  • 2 х 4090 ADA 7 Slot = 48 Гб оперативки = 300+ тыс. рублей
  • 2 х RTX 3090 Ampere 5 Slot = 48 Гб оперативки, б/у от 140 до 200 тыс. руб

1.4 Энтузиаст 24+ GB - бюджет до 300 тыс

1
4090 ADA 24 GB 3.5 Slot - от 150 тыс. руб. Лучший выбор, если будет только 1 видеокарта. FP16 = 83 TFLOPS.
  • RTX 6000 24 GB Ampere 2 Slot - от 100 тыс. руб, только ради форм-фактора 2 PCIE слота и виртуализации vGPU.
  • V100 Volta 32 GB 2 Slot - очень древняя, можно рассматривать ради 32 Гб, но только если совсем дешево продают около 100-150 тыс. Но даже на Ebay около US $2 599.

1.5 Любитель 24 GB - бюджет до 100 тыс

  • RTX 3090 24 GB Ampere 2 Slot - б/у самый народный вариант, с которым можно идти в бой на LLM. На Авито от 75 в зависимости от исполнения и состояния.
  • RTX 3090 TI 24 GB Ampere 3-3.5 slot - карта немного помощнее, дороже, больше в размерах и реже на рынке б/у появляется.

Глава 2. Классы видеокарт Nvidia

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

  • Карты для датацентров — A100, H100, A10, A40, L40 и др. Призваны работать 24/7. Часто самые дорогие по стоимости. Некоторые модели имеют максимальные на данный момент технические характеристики по объему памяти (более 80 Гб), производительности, энергоэффективности. Можно делать суперкомпьютеры из тысяч видеокарт. Зачастую их лучше арендовать, чем ставить в свой сервер. Часто нет видеовыхода. Редко на рынке б/у, в цене падают медленно.
  • Для рабочих станций — RTX A6000, RTX A5500, серия Quadro и др. Несколько дешевле, чем для датацентров. Видна забота про форм-фактор и энергопотребление, урезанная производительность, поддержка виртуализации vGPU. Часто доступны на рынке б/у, падают в цене медленно.
  • Для геймеров — GeForce RTX 4090, RTX 3090 и прочие. Одни из самых доступных видеокарт для машинного обучения, дешевле в несколько раз. Совершенно пофиг на форм-факторы и энергопотребление. Во многих задачах, по производительности могут не уступать другим классам или превосходить. Распространены на рынке б/у, падают в цене быстрее, особенно с выходом новых флагманов. Есть риск наткнуться на карты стоящие в майнинге.

Нужно иметь ввиду, что Nvidia некоторые модели GPU позиционирует для инференса в продакшене. Такие модели чаще слабее базисных моделей в трейне или в каких-то других вычислениях. Например, NVIDIA T4 имеет высокий FP16 = 65 TFLOPS, но очень низкий FP32 = 8 TFLOPS.

UPADTE 10 апреля 2024. Дополнение по T4 - часто встречается, что якобы FP16 = 65 TFLOPS. В спецификации указывается - Mixed-Precision (FP16/FP32) = 65 TFLOPS, это подразумевает производительность тензорных ядер. Но в инструкции по архитектуре явно прописано FP16 = 16.2.

Глава 3. Микроархитектура видеокарты и совместимость

Nvidia регулярно выводит на рынок более совершенные и производительные микроархитектуры видеокарт. Отличий много. Увеличивается число транзисторов, появляются новые поколения ядер и количество CUDA / RT / Tensor ядер, повышается пропускная способность и размер оперативной памяти, размер L1 Cache, появляются специальные режимы вычислений типа поддержка bloat16, INT8, mixed-precision.

Устаревшие архитектуры могут встретиться с разными несовместимостями с CUDA драйверами и библиотеками HF. Код написанный для свежей архитектуры может не запустится на более древних.

Устройства с одинаковым номером основной ревизии имеют одинаковую архитектуру ядра. Список архитектур за 10 лет:

3.1 Сравнение Compute Capability

Каждая видеокарта имеет свой так называемый Compute Capability.

Справочник по выбору GPU для работы с большими языковыми моделями Llama

3.2 Сравнение инструкций

В следующей таблице представлена эволюция размеров матричных инструкций и поддерживаемых типов данных для тензорных ядер в различных поколениях архитектуры GPU. <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fdocs.nvidia.com%2Fcuda%2Fampere-tuning-guide%2Findex.html&postId=881777" rel="nofollow noreferrer noopener" target="_blank">@</a><br />
В следующей таблице представлена эволюция размеров матричных инструкций и поддерживаемых типов данных для тензорных ядер в различных поколениях архитектуры GPU. @

Посмотреть какая версия Compute доступна для видеокарты можно здесь:

3.3 Несовместимость Turing и Hopper с 8-бит в HF.

3 ноября 2023 - При попытке load_in_8bit=True через HF либы на Turing GPU произойдет ошибка: Exception: cublasLt ran into an error!
Как поясняют на форуме - Turing и Hopper несовместимы с форматами Ampere. При этом load_in_4bit = True работает.

This is actually a more complicated issue. The 8-bit implementation uses cuBLASLt which uses special format for 8-bit matrix multiplication. There are special formats for Ampere, Turning, and now Hopper GPUs. Hopper GPUs do not support Ampere or Turing formats. This means multiple CUDA kernels and the cuBLASLt integration need to be implemented to make 8-bit work on Hopper GPUs.

UPADATE 6 апреля 2024 - На RTX 8000 load_in_8bit=True через свежие HF либы стал работать, что делает теперь эти карты очень выгодными для инференса больших моделей. У RTX 8000 нет Flash Attention 2

Глава 4. Производительность GPU

Видеокарты имеют разную производительность в операциях с плавающей точкой - FP64, FP32, FP16. Также есть еще общая производительность тензорных и RT ядер.

Обращать внимание нужно именно на скорость операция в FP16 non-Tensor (half-precision). Больше этот параметр имеет значение в задачах инференс LLM. От него зависит скорость генерации токенов в неквантизированных моделях. Я изучил характеристики десятки разных карт и именно по FP16 легко было спрогнозировать производительность на выходе. Ошибка лишь бывает в том, что часто у старых карт указывается неверно трактуется FP16 (например, у T4 если не внимательно читать аж 65 TFLOPS, на самом деле это тензорные ядра, а CUDA выдают 16 TFLOPS.

Современный уровень FP16 это более 20 TFLOPS. Топовые видеокарты

  • H100 Hopper 80 GB. Cамая мощная. FP16 = 204.9 TFLOPS
  • RTX 6000 Ada - FP16 =91 TFLOPS
  • 4090 ADA 24 GB 3.5 Slot FP16 = 83

Однако нельзя говорить про линейный прирост, только за счет большего значения TFLOPS. Но чем больше TFLOPS тем прогнозируемо мощнее карта. Тензорные ядра тоже важны и карты условно со схожим fp16 при CUDA и разным количеством тензоров и их поколением будут иметь разную производительность.

Методы запуска LLM отличаются по скорости. Запуск с квантизацией также может иметь разные последствия в производительности и там вступают в силу другие факторы, такие как скорость CPU и памяти.

Протестированные модели:Airoboros-65B-GPT4-1.4 версии GPTQ и GGML (Q4_KS) . Speed in tokens/second for generating 200 or 1900 new tokens: 
Протестированные модели:Airoboros-65B-GPT4-1.4 версии GPTQ и GGML (Q4_KS) . Speed in tokens/second for generating 200 or 1900 new tokens: 

Еще два значимых параметра - число операций в INT8 и INT4

Эти режимы будут иметь значение при квантизации, примеры скорости работы в этих режимах

  • T4 - INT8 130 TOPS / INT4 260 TOPS
  • 3090 - int8 - 284 / int 4 - 568 TOPS

Использование FlashAttention-2

Еще один аргумент в пользу новых GPU с архитектурой Amper и выше - это поддержка FlashAttention-2, которая может ускорить работу на 50-70% и снизить потребление памяти в разных сценариях до 60%.

Глава 4.1 Общая таблица производительности в Deep learning

По данным lambdalabs.com

Из таблицы очевидно, что дорогие видеокарты типа A100 не имеют 10-ти кратный и более прирост в производительности, как многократный прирост их стоимости. 
Из таблицы очевидно, что дорогие видеокарты типа A100 не имеют 10-ти кратный и более прирост в производительности, как многократный прирост их стоимости. 

Глава 4.2 Будет ли быстрее или медленнее инференс при работе с несколькими картами?

Я провел тестирование, которое показало, что инференс не становится быстрее от количества видеокарт, но и не деградирует при device_map=auto. Как минимум можно ожидать скорость инференса как у 1 карты, но с большей памятью.

7B - fp16
RTX 8000 - 15 c.
2хRTX 8000 - 15 c.
13B - fp16
1хRTX 8000 - 26 c.
2хRTX 8000 - 27 c.
13B - fp32 (не влезет на 1 карту, итого по 30Гб на карту)
2хRTX 8000 - 50 c.
70B - 4bit - по 22Гб на карту.
1хRTX 8000 - 48 c.
2хRTX 8000 - 48 c.
13B - fp16
1хRTX 8000 - 26 c.
2хRTX 8000 - 27 c.
2хRTX 8000 + RTX 3090 - 27 c.
1хRTX 8000 + RTX 3090 - 24 c.

Прежде чем покупать то или иное оборудование, рекомендую протестировать ваши конкретные задачи в разных GPU конфигурациях на immers.cloud. У них есть H100, RTX 4090, RTX 3090, RTX 3080, Tesla A100, RTX A5000, Tesla A10, Tesla A2, RTX 2080 Ti, Tesla T4, Tesla V100.

Полезные ссылки

Глава 5. Объем видеопамяти GPU

Эволюция моделей последних лет показывает: с одной стороны появляются все более тяжелые модели на сотни миллиардов параметров, с другой стороны появляются все более легкие и при этом сравнимые по качеству с более тяжелыми моделями. Mistral-7B побеждает llama2-13B по многим тестам.

Главный тезис - памяти много не бывает, ниже 24 Гб не рекомендую, а 48 Гб сильно выручает при разных сценариях.

Тенденция в увеличении потребности памяти будет расти. Не верю, что в ближайшее время 13B будет сильнее ChatGPT4 во всех тестах. Логично, что самое передовое и качественно чаще всего будет очень тяжелым какое-то время.

Что жрет память

  • Число параметров в модели - 7B, 13B, 40B, 70B и т.д.
  • Форматы float16, bfloat16, квантизации 8bit, 4bit
  • Длина контекста в промпте. Модель может поместится в память, но чем больше подается токенов на входе, тем больше требуется памяти для для обработки. Модель 13B в fp16 если в неё кидать длинный контекст 8k легко сжирает 80гб.
  • Адаптеры к pre-train моделям требуют больше памяти
  • При fine tuning память может сжирать различные параметры QLoRA

Flash Attention 2 на архитектуре Ampere, Ada, or Hopper

Flash Attention 2 обеспечивает значительное сокращение использования VRAM, порядка 40-60 % во многих практических сценариях с большими языковыми моделями.

Можно ли c 16 Гб Vram работать?

Да, можно до 13B с 4бит квантизацией, и недолго - часто захочется большего. См внизу раздел тестов на 16 Гб - What other consequences are there?

Сколько памяти нужно для fine-tuning

7B модель при тюнинге в 4 битах требует 16 Гб при трейне, и 20 Гб при слиянии, но его можно не делать, оставив лишь адаптер. lora_r = 16, lora_alpha = 32

Потребление памяти Llama 13B 8K

Загрузка модели через HF pipeline. Контекст на русском языке. В системе 2 GPU 3090 24 GB. Из теста видно: каждое слово примерно 16 Мб памяти при float16 на две видеокарты. 5 Мб / слово на одной видеокарте с 8 бит. 22 Мб / слово на двух видеокартах 8 бит Соотношение русских слов к токенам 2,8. Модель имеет контекст 8K токенов.

Источник: личные тесты автора
Источник: личные тесты автора

Глава 6. Проблемы масштабирования

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

Одна видяха 3090/4090 на 24 Гб в поле воин. Две карты по 24 Гб очень выручают, а вот две по 48 Гб было вообще класс. Про одну с 80 Гб умолчу по понятным причинам. Но когда бюджет не позволяет, а хочется много памяти - можно захотеть 3-4 GPU по 24 гб, или накапливать карты по 16Гб.

Драйвера. Мне пока неизвестны подводные камни, если в системе стоят карты разных архитектур, например, Pascal и Amper. Будут ли конфликты драйверов и не придется ли сидеть на устаревших версиях CUDA все новым видеокартам. RTX 8000 Turning и 3090 Ampere работают на одних дровах.

6.1 PCIE и корпус

PCI-E слоты. Современные материнские платы в основном дают 2-5 PCIE x16 слотов. При этом на одной плате может быть 1 слот Pcie-5, 2 слот Pcie-4, 2 слота Pcie-3. Материнские платы для серверов и рабочих станций могут содержать сразу 4-7 PCIE 5 x16 - такое по возможности стоит покупать.

  • Если планируемый предел в системе 2 видеокарты - пойдет мамка чтобы было 2 слота 4 или 5й версии по х16.
  • Если планируется 3-4 карты не советую десктоп платы где после 2х слотов 4 или 5й остальные - 3 версии PCIE. Возможны проблемы вплоть до потери вывода с модели.
  • Идеально когда все слоты x16 одной версии и распаяны по 16 линий. Но в основном это серверные материнки или для рабочих станций.

PCI-E линии на мамках. Если на материнке есть 4 слота Pcie с разъёмом на 16 линий, это не значит, что к ним действительно проведено 16 линий. В действительности конфигурация различается, нужно читать документацию. Часто может быть, что 1 слот x16 будет иметь все 16 линий, а 3 других будут в режиме x4.

PCI-E линии процессора. Ограничение есть также у процессоров по количеству линий PCIE, тема отдельной статьи. Серверные процессоры имеют до 128 линий PCIE. У современного десктоп процессора типа i9, который имеет 21 PCIE линии хватит для инференса LLM на 4 GPU, но чаще это будет режим работы x4. Потери из-за разных версий PCIE будут незначительными относительно общего масштаба производительности из 2-4 GPU. Стоит учитывать, что количество линий процессора и чипсета складываются. Однако могут возникнуть проблемы с работой нескольких GPU, если только один PCIE-слот ведет только к CPU, а остальные через чипсет.

Вот такая схема PCIE-слотов предпочтительнее, когда несколько слотов идут напрямую к процессору.

Справочник по выбору GPU для работы с большими языковыми моделями Llama

А вот у материнских плат на чипсете Z690 могут быть проблемы с multi gpu, если только 1 PCIE-слот есть к процессору, а остальные через чипсет.

Справочник по выбору GPU для работы с большими языковыми моделями Llama

В документации к материнским платам часто явно указывают, сколько слотов идут к процессору, пример Asus Z690 Prime:

Справочник по выбору GPU для работы с большими языковыми моделями Llama
7x NVIDIA GeForce RTX 4090 GPU Scaling by pugetsystems.com - не смогли запустить в gen 4
7x NVIDIA GeForce RTX 4090 GPU Scaling by pugetsystems.com - не смогли запустить в gen 4

Корпуса также не сильно просторные для нескольких GPU размером от 2.5 слотов. Можно поискать специализированные корпуса от профи или у майнеров посмотреть.

Когда две видео карты уже есть. Третью и четвертую уже сложно представить, кроме как в виде фермы майнинга. В любом случае нужен будет самопал по креплению на корпус, если речь пойдет о геймерских картах и магазинных корпусах - плата за низкую стоимость. Если нужно экономить место - используем более дорогие низкопрофильные карты из серий A100/A10/A40, RXT QUADRO, RTX 6000.

6.2 Райзеры PCIE х16

Райзер для видеокарты Cooler Master Riser Cable PCIe 4.0 x16
Райзер для видеокарты Cooler Master Riser Cable PCIe 4.0 x16

Когда есть 4 PCIE слота поставить 4 карты помогут райзеры PCIEх16 gen4 gen3. Бывают длиной 20, 30, 40 см. Есть еще 60 см - Lian Li 600 мм PCI-e 4.0 (PW-PCI-4-60X).

Райзер 3.0 может выдавать пропускную способность 4.0, тестировал на реальном примере с картой 3090 PCIE4. Однако, не рекомендую использовать такой кабель с картами PCIE4 - могут возникнуть проблемы в стабильности работы, особенно когда несколько видеокарт - наблюдал на своем опыте.

6.3 Расширители PCIE (PCI-Express expansion enclosure)

Если вдруг остался только 1 свободный PCIE слот, а хочется больше видеокарт. Есть такой тип устройств, относительно давно на рынке, - расширители PCIE. Воткнув специальную плату в слот PCIE на мамке получаешь от 4х и более слотов PCIE.

Справочник по выбору GPU для работы с большими языковыми моделями Llama

Все нативно, не требуется никаких драйверов и т.д. В этом году уже появились версии PCIe 4.0 ×16 (256Gbps) например Netstor NA255A-G4 и рэковый - NA265A-G4. Позволяют до 4 карт 3х слотовых поместить.

Удовольствие не дешевое, предыдущего поколения PCIE Gen 3 можно найти в РФ около 100-200 тыс. А нового уже под 400т видел в предзаказе (окт 2023). Для двух карт 3090 по 350 Вт лучше 1200 Вт блок питания с запасом.

6.4 Проблема с питанием

При увеличении количества мощных видеокарт возникает потребность в дополнительных блоках питания, либо в одном существенно более мощном. Блок питания необходим на 40% больше, чем TDP карты. Пусковые токи могут быть выше номинала TDP в 2-3 раза, а заявленная мощность БП может быть ниже по факту и снижаться со временем.

Несколько блоков питания можно синхронизировать через Mollex и специальный синхронизатор типа ATX2ATX-N03 стоимостью 300 рублей.

6.5 Проблема с охлаждением

Большинство рекомендованных здесь карт очень хорошо греются - при нагрузках до 80-90 градусов. Поэтому если 1-2 карты геймерские еще можно стерпеть дома, то 4 это уже более серьезное тепловыделение. Один из лайфхаков - понижать мощность перед длительными трейнами или всегда. Либо покупать более дорогие карты для датацентров.

6.6 NVlink

Вокруг NVLink ходит много мифов волшебных. Существенную выгоду от Nvlink можно получить лишь при некоторых сценариях.

  • 3090 цепляют только 2, какая от этого польза при инференсе LLM - еще не сравнивал, скорее всего минимальная.
  • NVLink под 3090 редко на рынке появляется даже б/у.
  • Память при NVLink не становится общей в том плане, чтобы не приходилось разбивать что-то на несколько GPU. Если изначально модель не помещается в 24 Гб и она не делится средствами типа device_map=auto, то две карты в Nvlink не спасут.
  • Полезно разгружать шину PCIE. Если карт 4-ре, то быстрее c Nvlink будет.

HF приводит пример трейна gpt2 при Nvlink оказалось на 23% быстрее. Весьма не плохой прирост.

6.7 Полезные ссылки по масштабированию

6.8 Пропускная способность памяти на 1 ядро

Поскольку в инференсе LLM чаще всего используется только 1 ядро, соответственно важным показателем работы системы будет пропускная способность память по одному ядру. Любопытно, что общая пропускная способность на сокет может измеряться от 50 до 500 Гб/с, а вот на на 1 ядре все скромнее - 10-30 Гб/с.

С 2010 по 2023 год устойчивая пропускная способность одноядерных процессоров увеличилась примерно в 2 раза у процессоров Intel и примерно в 5 раз у процессоров AMD.

Справочник по выбору GPU для работы с большими языковыми моделями Llama

Пропускная способность памяти на 1 ядро тесно связана со скоростью 1 ядра процессора - Single Thread Performance. Процессор с высоким значением одного потока предпочтительнее.

6.9 Выбор процессора для Llama

Все больше накапливают сведений, что необходимо выбирать процессоры с высокой производительностью 1 ядра - Single Thread Performance. Процессоры со значениями 4000+ будут выжимать максимум из высокопроизводительных карт в роде 4090, H100, A100. Процессоры с 2000-2500 на ядро могут замедлить до 2 раз производительность современных видеокарт.

Декстопные топовые процессоры Intel i7, i9, Ryzen 9 могут быть плохим выбором, если требуется более 2 видеокарт, поскольку часто предлагают около два слота PCIE к процессору, остальные слоты идут через чипсет и могут возникнуть непредвиденные проблемы совместимости при одновременной работе нескольких видеокарт.

Серверные даже очень дорогие процессоры Intel или EPYC могут иметь одиночный поток всего 2000-2500, хоть и предлагают 5-7 слотов и более к процессору напрямую. Как уже писал выше есть риск потери производительности, и будет обидно что карта или карты купленные за несколько миллионов рублей будут работать в два раза медленее.

В свете этих соображений процессоры в AMD Ryzen Threadripper 7960X на чипсетах TRX50 становятся привлекательными, поскольку имеют и высокую скорость одного потока и несколько слотов к процессору. Стоимость платформы достаточно высокая.

Глава 7. Стоп-лист видеокарт для LLM

Список видеокарт, которые стоит обходить стороной

  • Nvidia Tesla P40 24GB - при соблазнительной стоимости около 20-30 тыс. рублей на Авито, имеет низкую производительность Fp16 = 0.2 TFLOPS. В одну карту можно использовать 7Б модели максимум 8bit при float32=12 TFLOPS. По некоторым сведениям в 10-15 раз медленнее, чем у 3090 в инференсе LLM, но при этом в несколько раз быстрее, чем на процессоре. Если финансов совсем мало, то куда деваться. Она точно не подойдет для трейна.
  • Nvidia Tesla M40 24GB слабее P40.
  • NVIDIА ТЕSLА Р100 16GВ дороже P40, Fp16 = 4.7 , но памяти поменьше существенно.
Справочник по выбору GPU для работы с большими языковыми моделями Llama

Глава 8. Альтернативы видеокартам Nvidia для LLM

Видеокарты AMD

На рынке активно развивают поддержку видеокарт AMD для работы с нейронными сетями. С помощью стека ROCm можно запускать CUDA, есть также специальные версии pytorch. Есть также профессиональные модели видеокарт AMD, имеющие большой объем оперативной памяти и высокий FP16. Как это работает в реальности - еще не изучал, но звучит перспективно.

  • AMD Radeon Instinct MI200 - имеют от 64 GB памяти и гигантскую производительность fp16 181.0 TFLOPS.
  • AMD Radeon Instinct MI250 - 128 Гб и внушающие 362.1 TFLOPS.
  • AMD Radeon Instinct MI300X - 192 GB, fp16 = 383.0 TFLOPS

Геймерская AMD RX 7900 XTX c 24 Гб имеет хорошую производительность, сопоставимую как с 4090 так и с 3090 при этом заметно дешевле.

Справочник по выбору GPU для работы с большими языковыми моделями Llama
Справочник по выбору GPU для работы с большими языковыми моделями Llama

Apple с унифицированной памятью.

Ноутбуки в роде MacBook Pro M2 с унифицированной памятью, имеющие от 32 Гб оперативной памяти могут использоваться для инференса больших моделей с приемлемой скоростью через llama.cp. Насколько мне известно, для обучения такая конфигурация не будет успешна. Читайте тесты производительности.

Процессоры Intel Sapphire Rapids

Во некоторых задачах разрыв с традиционными процессорами стал меньше. Недавно Intel представила четвертое поколение процессоров Xeon под кодовым названием Sapphire Rapids с новыми интересными инструкциями, которые ускоряют операции, часто встречающиеся в моделях глубокого обучения. Пока у меня нет данных про опыты с LLM, приведу некоторые другие.

В статье автор говорит про экономичное универсальное решение и про аренду сервака за $5.95 в час, что дорого как-то по сравнению с 2 баксами за A100 80GB. Сам проц 64 vCPU = от 500 тысяч рублей стоит. По сравнению с другим процессорами в 8 раз быстрее вышло. Но в сравнении с GPU не понял насколько медленнее.

Другой автор делает вывод, что архитектура Intel Sapphire Rapids, оснащенная расширенными матричными расширениями и AVX512-FP16, улучшает матричные операции, необходимые для глубокого обучения. Кроме того, благодаря использованию расширения Intel Extension for PyTorch (IPEX) пользователи могут без особых усилий оптимизировать PyTorch для процессоров Intel, что позволяет значительно повысить производительность. Бенчмарки показывают, что Sapphire Rapids обеспечивает производительность вычислений, сравнимую с GPU, при меньшей стоимости и лучшей доступности. Таким образом, использование центральных процессоров для вычислений в производственных нагрузках ИИ/МЛ на предприятиях может быть выгодно как с практической, так и с экономической точки зрения.

Справочник по выбору GPU для работы с большими языковыми моделями Llama
Справочник по выбору GPU для работы с большими языковыми моделями Llama
Справочник по выбору GPU для работы с большими языковыми моделями Llama

Статья будет регулярно обновляться и дополнятся новыми подробностями. Если нашли неточность в описании - буду рад поправкам. Пишите, чем смогу помогу. Замечу, что я лишь энтузиаст-исследователь, а не профессиональный ИИ-программист. Также вы можете подписаться на мой ТГ-канал, где я делюсь своими находками и опытом.

Последнее дополнение - 27 мая 2024

2727
22
14 комментариев

спасибо за статью, очень полезно

не до конца понял вопрос по процессорам, если допустим 2х 3090.

На процах типа 5700x всего 1 x16 PCle 4.0 линия. Все равно лучше он чем например Ryzen threadripper 1950x с чуть меньшей частотой, но 4 x16 PCle 3.0 линиями?

Если в системе не планируется больше, чем двух ГПУ, а материнская плата дает сразу два PCIE слота напрямую в процессор 5700x, то этот вариант будет быстрее работать даже по х8. Если же 1 слот идет в процессор, второй через чипсет - то могут возникать подводные камни одновременной работы двух и более ГПУ. Я наблюдал какие-то коллизии нестабильности на мамке с i9, где только 1 PCIE слот в процессор идет, хотя проц поддерживает 2 по х8.

Если планируется использование 3-4 гпу в будущем, то лучше взять Ryzen threadripper 1950x или что-то побыстрее на один поток.
Разница между 5700x и 1950x в инференсе LLM может быть не сильно заметной - быть может в 20-30%, в то время как разница между 1950x и 7980X - может достигать до 30-40%.

1

​UPADATE 6 апреля 2024 - На RTX 8000 load_in_8bit=True через свежие HF либы стал работать, что делает теперь эти карты очень выгодными для инференса больших моделей. У RTX 8000 нет Flash Attention 2

Tesla P100:
18,7 TFLOPS (FP16)
9,3 TFLOPS (FP32)
4,7 TFLOPS (FP64)

Спасибо автору, очень насыщенная и полезная статья, много разрозненной информации собрано в одном месте.

Вопрос, что насчёт геймерской Amd rx 7800 xt - для глубокого обучения нейронки подходит?

Через гемор можно, потребует больше тех знаний и ударов в бубен, чем с нвидиа.