Разворачиваете LLM? Начните с оценки необходимой памяти GPU

06.03.2025 | Серверы

 

Большие языковые модели (LLM) обучены на больших наборах данных и способны распознавать и генерировать текст. Они развиваются бешеными темпами, что приводит к повышенному спросу на аппаратное обеспечение, в частности графические процессоры от NVIDIA, Intel, AMD.

Оставим в стороне дискуссии о практической необходимости LLM: будь то борьба за физическое существование или путь к моральному удовлетворению. Представим, что нам досталась какая-то большая языковая модель с открытым исходным кодом, созданная «надрозумом». Руководствуясь потребительским инстинктом, мы хотим развернуть его на собственном компьютере. Но какой графический процессор для этого нужен? Какие параметры являются критическими?

Для эффективного использования LLM (на новоязе процесс генерации прогнозов или ответов модели на основе входных данных называется инференсом) важно понимать требования к GPU VRAM. Графический процессор работает с огромными объемами данных, хранящимися в видеопамяти (VRAM). Чем больше модель, тем больше в ней данных и параметров, а значит, тем больше памяти необходимо. Казалось бы, решение простое: выбирай GPU с максимальным количеством VRAM – и запускай любую модель.

Но с VRAM, как с золотом: лом стоит копейки, а изделия — целое состояние.

 

Архитектура Transformer

Большинство LLM (GPT, LLaMA и др.) используют архитектуру глубоких нейросетей Transformer , которая в значительной степени полагается на параллельные вычисления. Она состоит из многих слоев, каждый из которых содержит параметры (весы), загружаемые в VRAM для быстрого доступа.

Механизм "внимания" (attention ) в Transformer позволяет модели понимать контекст, но он также является одним из главных потребителей видеопамяти.

 

Оценка потребления VRAM для модели 7b Llama2

 

CUDA Kernel

Драйвер CUDA всегда резервирует определенный объем VRAM для:

  • постоянных буферов констант модулей и переменных,

  • буфера динамического параллелизма CUDA,

  • кучи malloc ,

  • буфера printf .

 

Parameters

LLM содержат от миллионов до триллионов параметров, хранящихся во время инференса в VRAM. Это главный потребитель памяти.

Имя модели обычно состоит из двух частей: [имя модели] + [количество параметров] . Например, в LLaMA 2-7B "LLaMA 2" означает серию моделей, а "7B" – что модель содержит примерно 7 миллиардов параметров. Чем больше параметров, тем выше уровень возможностей, но и тем больше требования к памяти.

 

Квантование (Quantization)

Точность представления чисел в LLM также влияет на использование VRAM. Традиционно при обучении весы модели сохраняются в формате чисел с плавающей запятой ( floating point , FP ). Чем больше битов выделено на число, тем выше точность. Обычно в LLM используются форматы FP16 или BF16 , где каждый вес занимает 16 бит (2 байта) . Это достаточно ресурсозатратно.

Процесс квантования большой языковой модели предполагает уменьшение разрядности чисел, например, до 8-битных целочисленных значений , что позволяет вдвое снизить размер модели.

Кроме весов, каждый слой LLM генерирует промежуточные активации , временно хранящиеся в VRAM, дополнительно увеличивая требования к памяти.

 

Batch Size

Во время инференса LLM обрабатывают входы пакетами ( batch processing ) для повышения эффективности.

Языковая модель работает как функция: она принимает набор токенов-входов и прогнозирует наиболее вероятный последующий токен . Затем этот токен добавляется к входным данным и процесс повторяется.

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

 

Так сколько VRAM нужно?

Поскольку основной потребитель VRAM – это параметры модели, подсчитать необходимый объем памяти можно простой формулой:

VRAM(ГБ)=кількість параметрів×точність (у байтах)109VRAM (ГБ) = frac{ ext{кількість параметрів} imes ext{точність (у байтах)}}{10^9}

С учетом дополнительных затрат (активации, размер контекста, внутренние буферы CUDA) нужно добавить примерно 20% запаса :

VRAM=(Кількість параметрів×Точність8)×1.2VRAM = left( frac{ ext{Кількість параметрів} imes ext{Точність}}{8} ight) imes 1.2

Для LLaMA 2-7B с точностью FP16 получим:

VRAM=(7×109×168)×1.2=16.8 ГБVRAM = left( frac{7 imes 10^9 imes 16}{8} ight) imes 1.2 = 16.8 ext{ ГБ}

Для запуска этой модели в нативном FP16-формате требуется не менее 16.8 ГБ VRAM .

Источник

 

Понимание требований к GPU VRAM и правильная настройка модели помогает оптимизировать производительность и выбрать лучшее оборудование для работы с LLM. Следует учитывать не только количество параметров, но и техники оптимизации, такие как квантование и регулировка batch size, чтобы эффективно использовать доступную видеопамять.