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

Эта статья написана в схожем ключе, но нас наиболее интересует, возможно ли напрямую квантовать предобученные модели при экстремальных настройках, в том числе, при двоичных весах (0 и 1). Уже имеющиеся работы нацелены на обучение моделей с нуля. Но в открытом доступе сейчас достаточно много отличных предобученных моделей, таких как Llama2. Более того, обучение с нуля — это ресурсозатратная задача в пересчёте как на вычисления, так и на данные, поэтому такие подходы не слишком доступны в свободном сообществе.

В этой статье мы подробно разберём крайне малоразрядное (2 и 1-разрядное) квантование предобученных моделей с применением HQQ+. HQQ+ — это адаптация HQQ (полуквадратичного квантования), в которой для повышения производительности используется адаптер с низкой размерностью. Наши результаты показывают, что при обучении лишь небольшой части весов в верхней части HQQ-квантованной модели (даже одноразрядной), качество вывода значительно возрастает, такая модель может даже превосходить небольшие модели полной точности.

Модели находятся на Hugging Face: 1-разрядная2-разрядная.

Введение

Квантование небольших предобученных моделей с экстремально малой битовой шириной — это задача не из лёгких. Мы уже продемонстрировали, что сравнительно крупные модели, такие, как Mixtral, хорошо справляются с квантованием 2-разрядных моделей. Но в то же время модели поменьше, например популярная Llama2-7B, буксуют на таких экстремальных уровнях квантования. Более того, качество серьёзно падает при квантовании 1-разрядных моделей.

Цель данного эксперимента — продемонстрировать сообществу те результаты, которых предполагается достичь при тонкой настройке таких моделей в самых экстремальных условиях квантования. Мы удивились, но при тонкой настройке лишь крошечной доли всех параметров (приблизительно 0,65%) качество выходных результатов серьёзно повышается. В частности, мы наблюдали:

  • 1-разрядный случай: если непосредственно применять 1-разрядное квантование к небольшим моделям, в частности, Llama2-7B, достигаются неоптимальные результаты. Правда, при условии тонкой настройки модели качество её вывода серьёзно улучшается. Примечательно, что тонко настроенная 1-разрядная базовая модель обходит по производительности даже 2-разрядную Quip#, несмотря на то, что обучали её всего лишь примерно на ~2,8K токенов с контекстным окном 1024.

  • 2-разрядный случай: если предоставить более специализированные данные, то 2-разрядная модель справляется очень хорошо. Фактически, базовая 2-разрядная модель Llama2-7B с HQQ+ превосходит модель молной точности при обработке викитекста. Чат-модель превосходит собственную версию полной точности на датасете GSM8K, если дать ей достаточно математических данных и информации для рассуждений.

Эффективное перемножение матриц при малоразрядном квантовании

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

Новый взгляд на деквантование

Этап деквантования в HQQ можно выразить как Wr=(Wq−z)s, где Wr соответсвует деквантованным весам, Wq — квантованным весам, а метапараметры z и s — векторам нулевого и калибровочного коэффициента соответственно. Чтобы в рамках этой статьи не усложнять объяснение, пропустим описание этапов перестроения, необходимых в случае, если мы применяем группирование.

Операция перемножения матриц при прямом распространении (без учёта члена сдвига) принимает вид:

xWr=x((Wq−z)s)

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

xWr=x(Wqs+u),

где u=−z⊙s и ⊙ — это точечное умножение (произведение Адамара). Обратите внимание: поскольку u — это вектор, прямое матричное перемножение неприменимо между x и u. Тем не менее, его можно сформулировать как перемножение матриц ранга 1:

xWr=x(Wq)s+x1Tu.         (формула 1)

Как в 1-разрядной, так и в 2-разрядной ситуации перемножение матриц с квантованными весами можно реализовать в виде операций сложения, и умножение как таковое для этого не требуется:

  1. В случае с двоичными весами Wq состоит из нулей и единиц, здесь требуются только операции сложения.

  2. В случае с двухразрядным квантованием можно переписать Wq как сумму бинарной и тернарной матрицы, и в обоих случаях можно полноценно воспользоваться перемножением матриц без умножения, что реализуется в смешанном ядре. Единственное изменение, которое потребуется ввести — использовать диапазон [−1,0,1,2] вместо исходного [0,1,2,3]:

[201−1]2bit=[1010]binary+[100−1]ternary

Тонкая настройка с применением адаптеров низкой размерности

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

Как следует из крайнего правого члена в формуле 1, нулевая точка действует в качестве поправочного коэффициента матрицы ранга 1 между Wqs и исходными весами, и адаптер низкой размерности, в сущности, повышает ранг этого поправочного коэффициента, что улучшает результаты квантования.

Пусть LA и LB — это параметры адаптера ранга r с низкой размерностью. Тогда операция перемножения матриц при прямом распространении принимает вид:

x(Wq)s+x1Tu+xLTALB

Как было подробно описано в нашей более ранней работе о отсечении низких рангов в Llama, ранг суммы двух матриц ниже или равен сумме их рангов. Следовательно, x1Tu+xLTALB можно объединить как член рангом r+1 и получить:

x(Wq)s+xLA¯TLB¯,

где LA¯ и LB¯ получаются в результате низкорангового разложения матрицы 1Tu+LTALB.

Датасеты

Адаптеры низкой размерности обучались методом дообучения с учителем (Supervised Fine-Tuning) на различных датасетах, имеющихся в открытом доступе. Для базовой модели и чат-модели использовались разные датасеты. Подробности ниже:

Базовая модель

wikitext-2-raw-v1 (~2,8K): Этот датасет целиком применялся для дообучения базовой модели. На нем закладывается основа для общего понимания языка.

Чат-модели

1.      timdettmers/openassistant-guanaco: Этот датасет полностью использовался для тонкой настройки чат-модели.

2.     microsoft/orca-math-word-problems-200k: подмножество данного датасета применялось для того, чтобы улучшить способности модели по решению математических задач на работу со словами.

3.     meta-math/MetaMathQA: другое подмножество этого датасета применялось для того, чтобы дополнительно улучшить способности модели к математическим логическим выводам.

4.     HuggingFaceH4/ultrafeedback_binarized (chosen answers only): подмножество ответов, выбранных из этого датасета, использовалось, чтобы донастроить возможность модели генерировать согласованные и релевантные ответы.

Что касается размеров подмножества, мы воспользовались случайной выборкой
из 10K токенов для 2-разрядной модели и 25K токенов для 1-разрядной модели.

Контрольные точки

Мы сравнили показатели производительности модели Llama2-7B в трёх конфигурациях: FP16 (полная точность), HQQ (без тонкой настройки) и HQQ+ (со слоями адаптеров) при использовании групп размером 8. Для этих опытов мы выбрали модель Llama2-7B, так как она относительно невелика, её архитектура хорошо изучена, а также с ней легко экспериментировать. Мы оценили производительность предобученной базовой модели и чат-модели.

Базовые модели

Для базовых моделей мы учли результаты Quip# (2-разрядной), а также ультрасовременный метод квантования, предложенный в работе Tseng et al. Насколько нам известно, не существует никакой функционирующей 1-разрядной модели, кроме нашей для Llama-7b. Но для справки мы включим и результаты по 2-разрядной Quip#.

1-разрядная модель

Модели

FP16

HQQ (1-разр)

HQQ+ (1-bit)

Quip# (2-разр)

Wiki Perplexity

5.18

9866

8.53

8.54

VRAM (ГБ)

13.5

1.76

1.85

2.72

Время прямого распространения (с)

0.1

0.231

0.257

0.353

1-разрядное квантование приводило к существенному снижению качества в сравнении с моделью, работающей с полной точностью; в результате пользоваться нашей моделью было почти невозможно. Правда, введя адаптерные слои, мы смогли уменьшить перплексию модели до 8,53, в результате чего модель немного улучшилась и стала сравнима с 2-разрядной моделью Quip#, перплексия которой составляет 8,54, несмотря на то, что в ней только двоичные веса.

2-разрядная модель

Модели

FP16

HQQ (2-разр)

HQQ+ (2-разр)

Quip# (2-разр)

Wiki Perplexity

5.18

6.06

5.14

8.54

VRAM (ГБ)

13.5

2.6

2.69

2.72

Время прямого распространения (с)

0.1

0.221

0.27

0.353

2-разрядная модель HQQ обходит Quip# даже без какой-либо калибровки. После дообучения адаптерных слоёв примечательно, что данная модель достигает снижения перплексии по сравнению с моделью полной точности. Это существенное открытие, поскольку оно позволяет предположить, что квантование с применением HQQ+ не только сокращает место, занимаемое моделью в памяти, но и потенциально помогает повысить качество конструирования языка в рамках этой модели.

Чат-модели

Для базовых моделей мы учли результаты Quip# (2-разрядной), а также ультрасовременный метод квантования, предложенный в работе Tseng et al. Насколько нам известно, не существует никакой функционирующей 1-разрядной модели, кроме нашей для Llama-7b. Но для справки мы включим и результаты по 2-разрядной Quip#.

1-разрядная модель

Модели

FP16

HQQ (1-разр)

HQQ+ (1-bit)

Quip# (2-разр)

Wiki Perplexity

5.18

9866

8.53

8.54

VRAM (ГБ)

13.5

1.76

1.85

2.72

Время прямого распространения (с)

0.1

0.231

0.257

0.353

1-разрядное квантование приводило к существенному снижению качества в сравнении с моделью, работающей с полной точностью; в результате пользоваться нашей моделью было почти невозможно. Правда, введя адаптерные слои, мы смогли уменьшить перплексию модели до 8,53, в результате чего модель немного улучшилась и стала сравнима с 2-разрядной моделью Quip#, перплексия которой составляет 8,54, несмотря на то, что в ней только двоичные веса.

2-разрядная модель

Модели

FP16

HQQ (2-разр)

HQQ+ (2-разр)

Quip# (2-разр)

Wiki Perplexity

5.18

6.06

5.14

8.54

VRAM (ГБ)

13.5

2.6

2.69

2.72

Время прямого распространения (с)

0.1

0.221

0.27

0.353

2-разрядная модель HQQ обходит Quip# даже без какой-либо калибровки. После дообучения адаптерных слоёв примечательно, что данная модель достигает снижения перплексии по сравнению с моделью полной точности. Это существенное открытие, поскольку оно позволяет предположить, что квантование с применением HQQ+ не только сокращает место, занимаемое моделью в памяти, но и потенциально помогает повысить качество конструирования языка в рамках этой модели.

Какие же модели лучше: квантованные или малые языковые?

С одной стороны, если обучать относительно малые модели с нуля, требования к вычислительной мощности не так высоки, а сама модель тренируется быстрее. Такие модели как Qwen1.5 демонстрируют многообещающие результаты и могут быть привлекательны для применения в некоторых областях. Правда, согласно нашим выводам, сильно квантованные крупные модели, в которых используются такие методы как HQQ+, могут давать ещё более высокую производительность, но при этом занимать не так много места в памяти.

Ещё раз подчеркнём, что эти результаты получены на относительно небольшой модели Llama2-7B. При достаточно мелком квантовании без применения адаптерного слоя, как в случае с базовой версией HQQ, наблюдаем, что показатели тем выше, чем крупнее рассматриваемая модель. Например, ранее квантованная модель Mixtral с применением базовой версии HQQ показывает, насколько сильно можно уменьшить площадь модели в памяти, сохранив при этом высокую производительность и серьёзно обходя по этому показателю относительно мелкие модели.

Заключение

Наши экспериментальные 2- и  1-разрядные квантованные версии модели Llama2-7B с адаптером низкой размерности, квантованные с применением предложенного подхода HQQ+, ярко демонстрируют потенциал экстремально малоразрядного квантования применительно к моделям машинного обучения. Несмотря на те проблемы, с которыми приходится сталкиваться при таких минималистичных настройках, качество вывода удаётся серьёзно улучшить. Мы показали, что в тонко настроенных моделях можно выгодно использовать потенциал оптимизированного перемножения низкоранговых матриц, таким образом существенно снижая потребность в вычислительной мощности и памяти. В таком случае большие языковые модели становятся доступнее. Притом, что бинарные и тернарные ядра для перемножения матриц пока не существуют, надеемся, что наша работа подстегнёт интерес как к программным, так и к аппаратным разработкам, и уже в ближайшем будущем мы увидим их результат.   

Цитирование

@misc{badri2023hqq,
	title = {Towards 1-bit Machine Learning Models},
	url = {https://mobiusml.github.io/1bit_blog/},
	author = {Hicham Badri and Appu Shaji},
	month = {March},
	year = {2024}

Комментарии (1)


  1. sergehog
    17.04.2024 09:43
    +2

    А можно вычитать статью? Читать же невозможно. Пойду читать оригинал