July 2, 2023

SqueezeLLM

Dense-and-Sparse Quantization


[Cтатья][Репозиторий]


Сжатие больших языковых моделей (LLM) - область крайне горячая и актуальная в нынешние времена, в связи с потребностью и запросом на инференс моделей размером более 10 миллиардов параметров в условии ограниченных ресурсов. Потому и работы по данной тематике выходят, как грибы в лесу после дождя.

Статья, рассматриевая в данном сюжете вышла в начале июня.

В основе предложенного подхода лежат 2 идеи:

  1. Sensitivity-based non-uniform quantization. Неоднородное квантование использующее разложение ошибки до второго порядка для определения оптимальной конфигурации весов.
  2. Dense-sparse decomposition. Веса распределяются на основную массу и выбросы, которые не квантуются.

Ниже рассмотрим каждый пункт подробнее.


Sensitivity-based non-uniform quantization

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

Но как выбрать интервалы оптимальным образом?

Сравнение однородного и неоднородного разбиения

Можно минизировать разницу между исходными значениями и квантованными, выражаемую L2 расстоянием (скажем, при помощи 1-мерного k-means), но нас интересует качество работы модели в целом. И во множестве работ используют разложение лосса по формуле Тейлора до 1-го или 2-го порядка. В точке оптимума первая произодная, как известно - 0 (для достаточно хороших функций), потому ориентироваться приходится на члены 2-го порядка.

Считать в лоб Гессиан даже для маленьких моделей из vision - гиблая затея, а для LLM тем более. Поэтому в данной работе вместо Гессиана используют матрицу Фишера, а точнее только ее диагональ. Для оценки берется маленькая подвыборка - небольшой набор последовательностей.

В итоге, авторы сего труда прогоняются взвешенный диагональную матрицы Фишера k-means и получают квантованные веса модели.

Dense-sparse decomposition

Следующим краеугольным камнем метода является разделение весов на выбросы, которые от греха подальше держат в исходном представлении, и остальные веса.

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

Кроме того, маленькая доля весов прилично выбивается по абсолютной величине и, убрав всего 0.01% самых больших весов, можно сузить диапазон значений в 5-10 раз.

Идея про выбросы в процедуре квантизации возникала ранее уже в ряде работ.

Операция матричного умножения в итоге разбивается на плотную часть в низкой битности и разреженное умножение в исходной точности (float16, bfloat16):

Спарсные операции медленные - но так как их мало, можно добиться реального ускорения. И авторы написали соотвествующие CUDA kernels.

Результаты


Метод тестируется на моделях из семейства LLaMA. В самой статье приведены результаты только на 7B, 13B, 30B, недавно в репозитории проекта добавили чекпоинты 65B модели.

Для оценки матрицы Фишера используют 100 случайных последовательностей из C4.

При рассмотрении оутлаеров рассматривают 3 постановки:

  • без выбросов
  • 0.05% самых чувствительных по метрике Фишера весов
  • 0.45% среди которых веса из пункта выше, и еще некоторая доля на основе абсолютной величины

Для валидации модели используются стандартные бенчмарки по causal language modeling в соооветсвии с протоколом GPTQ .

На битности 3-4 метод обыгрывает GPTQ, AWQ бейзлайны. Разница более заметна на низкой битности.

Учет выбросов повышает качество модели при небольшом приросте перплексии (ухудшении качества).

Кроме того, авторы валидируют instruction-finetuned версию LLaMA - Vicuna. На MMLU вышло неплохо.

И на Vicuna бенчмарке - сравнении ответов моделей на наборе промтов по мнению GPT4, квантованные SqueezeLLM модели проигрывают меньше исходной float модели по сравнению с конкурентными подходами.

И имеет место реальное ускорение модели (замеры проводились на A6000). Однако даже небольшая доля sparse весов замедляет время работы, потому их должно быть немного.

Важны все компоненты метода:

  • Неоднородное квантование
  • Приближение гессиана для оценки чувствительности
  • И учет обоих типов выбросов

Итого, довольно солидная работа по квантованию моделей с хорошими результатам. Несколько удивительно, что столь грубое приближение матрицы Гессе работает так хорошо - диагональное приближении на основе всего 100 примеров, но, предположительно, межвесовые корреляции имеют меньшее значение по сравнению с computer vision. Не хватает сравнения с SpQR

Модели выложены и код для валидации моделей, но до сих пор нет кода квантизации.