Размер модели LLM, требования к памяти и квантование
Большие языковые модели (LLM), такие как GPT-3, LLaMA или PaLM, представляют собой нейронные сети огромного размера. Их размер обычно характеризуется количеством параметров (например, 7b, 14b, 72b, что означает 7 миллиардов, 14 миллиардов, 72 миллиарда параметров). Параметр — это, по сути, значение веса или смещения внутри сети. Эти параметры изучаются в процессе обучения и в совокупности представляют собой «знания» модели, определяя, как она обрабатывает информацию и генерирует выходные данные. Современные LLM обладают миллиардами, а иногда и сотнями миллиардов параметров.

Сотни миллиардов параметров приводят к значительным требованиям к памяти:
- Хранение: Параметры модели должны храниться в постоянном хранилище, например, на жестком диске или SSD.
- Загрузка: Чтобы запустить модель (выполнить вывод), параметры необходимо загрузить в память графического процессора (или другого ускорителя).
- Вычисления: Во время выполнения модели графическому процессору необходим постоянный доступ к этим параметрам для выполнения вычислений.
Пример:
Предположим, что модель имеет 175 миллиардов параметров, и каждый параметр хранится в формате FP32 (32-битное число с плавающей запятой).
- Одно число FP32 занимает 4 байта (32 бита / 8 бит на байт).
- 175 миллиардов параметров * 4 байта/параметр = 700 миллиардов байт = 700 ГБ.
Следовательно, только хранение параметров модели требует 700 ГБ пространства! Загрузка и запуск модели требует как минимум столько же VRAM (видеопамяти) на графическом процессоре. Именно поэтому для запуска крупномасштабных LLM необходимы высокопроизводительные графические процессоры с большим объемом VRAM (например, NVIDIA A100, H100). Если бы вместо 4 байтов каждый параметр занимал всего 1 байт (как в формате INT8), требование к памяти в гигабайтах примерно равнялось бы количеству параметров в миллиардах. Например, модели с 175 миллиардами параметров, использующей INT8, потребуется приблизительно 175 ГБ VRAM.
Квантование: снижение требований к памяти
Квантование — это метод, направленный на уменьшение размера модели и объема занимаемой памяти, обычно за счет некоторой потери точности. Во время квантования параметры модели (веса, а иногда и активации) преобразуются в числовой формат с более низкой точностью.
Как работает квантование?
- Исходный формат: Модели обычно обучаются с использованием форматов FP32 или FP16 (16-битное число с плавающей запятой).
- Целевой формат: Во время квантования параметры преобразуются в такие форматы, как INT8 (8-битное целое число), FP8 или другие типы с более низкой точностью.
- Сопоставление: Квантование включает в себя создание соответствия между диапазоном значений в исходном формате (например, FP32) и диапазоном значений в целевом формате (например, INT8). Это сопоставление определяет, как представлять исходные значения, используя ограниченный диапазон целевого формата, и может быть линейным или нелинейным.
- Округление: На основе сопоставления исходные значения «округляются» до ближайшего представимого значения в целевом формате.
- Потеря информации: Этот процесс округления неизбежно приводит к некоторой потере информации, что может привести к снижению точности модели. Задача квантования состоит в минимизации этой потери точности.
Пример (квантование INT8):
- FP32: Одно число занимает 4 байта.
- INT8: Одно число занимает 1 байт.
Если мы квантуем модель с 175 миллиардами параметров из FP32 в INT8, размер модели уменьшается с 700 ГБ до 175 ГБ! Это значительная экономия, позволяющая запускать модель на более мелких и менее дорогих графических процессорах (хотя часто с небольшим снижением производительности).
Методы квантования:
- Пост-тренировочное квантование (PTQ): Квантование выполняется после того, как модель была полностью обучена. Это самый простой метод, но он может привести к большей потере точности.
- Квантование с учетом обучения (QAT): Операции квантования имитируются или включаются в сам процесс обучения. Модель учится компенсировать потерю точности, вызванную квантованием. Обычно это обеспечивает лучшую точность, чем PTQ, но требует больше времени и вычислительных ресурсов для обучения.
Заключение
Квантование — важный метод для эффективного запуска крупномасштабных LLM. Он позволяет значительно уменьшить размер модели и требования к памяти, делая эти мощные модели доступными для более широкого круга пользователей и оборудования. Однако квантование связано с компромиссом в отношении точности, поэтому выбор подходящего метода квантования и числового формата для конкретной задачи имеет решающее значение. Аппаратная поддержка (например, эффективные операции INT8 на графических процессорах) является ключевым фактором для быстрого и эффективного запуска квантованных моделей. Эволюция числовых форматов (FP32, FP16, BF16, INT8, FP8) и их аппаратная поддержка напрямую связаны с квантованием, совместно обеспечивая создание и развертывание все более крупных и сложных LLM.