Размер модели LLM, требования к памяти и квантование

Gábor Bíró 12 ноября 2024 г.
3 мин. чтения

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

Размер модели 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.

Квантование: снижение требований к памяти

Квантование — это метод, направленный на уменьшение размера модели и объема занимаемой памяти, обычно за счет некоторой потери точности. Во время квантования параметры модели (веса, а иногда и активации) преобразуются в числовой формат с более низкой точностью.

Как работает квантование?

  1. Исходный формат: Модели обычно обучаются с использованием форматов FP32 или FP16 (16-битное число с плавающей запятой).
  2. Целевой формат: Во время квантования параметры преобразуются в такие форматы, как INT8 (8-битное целое число), FP8 или другие типы с более низкой точностью.
  3. Сопоставление: Квантование включает в себя создание соответствия между диапазоном значений в исходном формате (например, FP32) и диапазоном значений в целевом формате (например, INT8). Это сопоставление определяет, как представлять исходные значения, используя ограниченный диапазон целевого формата, и может быть линейным или нелинейным.
  4. Округление: На основе сопоставления исходные значения «округляются» до ближайшего представимого значения в целевом формате.
  5. Потеря информации: Этот процесс округления неизбежно приводит к некоторой потере информации, что может привести к снижению точности модели. Задача квантования состоит в минимизации этой потери точности.

Пример (квантование INT8):

  • FP32: Одно число занимает 4 байта.
  • INT8: Одно число занимает 1 байт.

Если мы квантуем модель с 175 миллиардами параметров из FP32 в INT8, размер модели уменьшается с 700 ГБ до 175 ГБ! Это значительная экономия, позволяющая запускать модель на более мелких и менее дорогих графических процессорах (хотя часто с небольшим снижением производительности).

Методы квантования:

  • Пост-тренировочное квантование (PTQ): Квантование выполняется после того, как модель была полностью обучена. Это самый простой метод, но он может привести к большей потере точности.
  • Квантование с учетом обучения (QAT): Операции квантования имитируются или включаются в сам процесс обучения. Модель учится компенсировать потерю точности, вызванную квантованием. Обычно это обеспечивает лучшую точность, чем PTQ, но требует больше времени и вычислительных ресурсов для обучения.

Заключение

Квантование — важный метод для эффективного запуска крупномасштабных LLM. Он позволяет значительно уменьшить размер модели и требования к памяти, делая эти мощные модели доступными для более широкого круга пользователей и оборудования. Однако квантование связано с компромиссом в отношении точности, поэтому выбор подходящего метода квантования и числового формата для конкретной задачи имеет решающее значение. Аппаратная поддержка (например, эффективные операции INT8 на графических процессорах) является ключевым фактором для быстрого и эффективного запуска квантованных моделей. Эволюция числовых форматов (FP32, FP16, BF16, INT8, FP8) и их аппаратная поддержка напрямую связаны с квантованием, совместно обеспечивая создание и развертывание все более крупных и сложных LLM.

Gábor Bíró 12 ноября 2024 г.