- BrainTools - https://www.braintools.ru -

HIGGS: Новый алгоритм квантования нейросетей

С развитием LLM, более актуальной становится проблема сокращения вычислительных затрат. Одним из самых эффективных решений является квантование – представление параметров модели в низкой точности (например, 4 бита вместо 32). Однако существующие методы квантования страдают от отсутствия строгого теоретического обоснования и оптимальности. HIGGS – новый подход, который решает эти проблемы, основываясь на доказанной авторами теореме линейности.
Статья на arXiv [1]
HuggingFace [2]

Что такое квантование и почему оно важно?

Квантование – один из наиболее эффективных способов уменьшения размера и вычислительных затрат больших моделей (таких как Llama и Qwen). Базовый подход предполагает разбиение задачи на отдельные послойные задачи:

  • Каждый слой l модели представлен весовой матрицейW_l in mathbb{R}^{d_{in} times d_{out}}

  • Квантование слоя сводится к выбору квантованных весов hat{W}_l, минимизирующих некоторую ошибку [3] (обычно MSE [4]).

Пример квантизации весов из 32-bit в 16-bit

Пример квантизации весов из 32-bit в 16-bit

Подробнее про квантизацию можно посмотреть здесь [5](очень подробное объяснение с картинками)

Однако до сих пор оставался неясным вопрос, как послойная ошибка влияет на общую точность модели (например, perplexity). На практике разные слои по-разному влияют на общую ошибку модели, и текущие методы не учитывают это различие в значимости слоев.

Что такое perplexity?

Метрика perplexity отражает, насколько хорошо модель предсказывает выборку текста. Чем меньше значение perplexity, тем лучше модель справляется с предсказанием. Perplexity вычисляется по формуле:

text{Perplexity}(W)=expleft(-frac{1}{N}sum_{i=1}^{N}log p(w_i|w_{1}, w_{2}, dots, w_{i-1})right),

где:

  • W=(w_1, w_2, ..., w_N) — это последовательность слов (или токенов) в тестовой выборке;

  • p(w_i|w_{1}, w_{2}, dots, w_{i-1}) — вероятность того, что модель предскажет слово w_i , зная предыдущие слова;

  • N — количество слов в тестовой выборке.

Perplexity связана с понятием кросс-энтропии [6] и энтропии информации [7]. Кросс-энтропия характеризует разницу между двумя распределениями вероятностей: истинным распределением данных и распределением, предсказанным моделью. Perplexity является экспонентой от кросс-энтропии, выраженной в битах. Таким образом, чем меньше perplexity, тем ближе распределение, предсказанное моделью, к истинному распределению данных, и тем меньше энтропия, возникающая при генерации следующего слова.

Оценка сложности языковой модели для последовательности токенов.

Оценка сложности языковой модели для последовательности токенов.

Теорема линейности

Авторы статьи формулируют и доказывают ключевую теорему линейности, связывающую ошибки квантования отдельных слоёв с ростом общей perplexity модели. Теорема утверждает следующее:

При условии, что ошибки квантования относительно малы, среднее значение perplexity квантованной модели hat{W} может быть аппроксимировано формулой:

E[text{PPL}(hat{W})] approx text{PPL}(W^*) + sum_{l=1}^{L} alpha_l t_l^2,

где:

  • W^*– исходные веса предобученной модели.

  • hat{W}– квантованные веса.

  • a_l – коэффициенты, зависящие только от исходных весов слоя l.

  • t_l^2– относительная ошибка квантования слоя:

t_l^2=frac{E[|hat{W}_l - W^*_l|_F^2]}{|W^*_l|_F^2}.

Почему это важно?

Эта теорема впервые чётко показывает, что глобальная ошибка (perplexity) линейно зависит от послойных ошибок квантования. Это открывает два новых направления:

1. Оптимальное послойное квантование: минимизация perplexity сводится к минимизации ошибок MSE послойно.

2. Динамическое квантование: выбор разной битности квантования для каждого слоя с учётом его значимости.

Метод HIGGS

Основываясь на теореме линейности, строится новый метод квантования HIGGS (Hadamard Incoherence with Gaussian MSE-optimal GridS), состоящий из двух шагов:

  • Предварительное преобразование (Random Hadamard Transform, RHT):

Весовая матрица W_l умножается на случайную матрицу Адамара [8] H, в результате чего распределение весов становится близким к гауссовскому:

W'_l=H cdot W_l

  • Квантование с MSE-оптимальной сеткой:

Весам W'_l присваиваются значения ближайшей точки из заранее вычисленной оптимальной сетки, минимизирующей среднеквадратичную ошибку для нормального распределения:

hat{W}'_l=RoundToNearest(W'_l, G_n^p).

Такое сочетание даёт минимальную ошибку квантования и, благодаря теореме линейности, минимальное увеличение общей perplexity.

Оптимальное распределение битности

Теорема линейности позволяет сформулировать задачу динамического распределения битности следующим образом:

Нужно выбрать битность b_j для каждого слоя так, чтобы минимизировать рост perplexity при заданной средней разрядности b_{max}. Формально это записывается как задача оптимизации:

min_{{b_j}} sum_{l=1}^{L} alpha_l t_{l,j}^2, quad text{при условии} quad sum_{l=1}^{L} b_j d^l leq b_{max} cdot d,

где d^l – размер слоя, d – суммарное число параметров.

Эта задача решается методами динамического программирования, что позволяет найти оптимальное решение за считанные секунды даже для огромных моделей.

Зависимость результатов на PPL WikiText-2 от разрядности

Зависимость результатов на PPL WikiText-2 [9] от разрядности b_{max}

Результаты экспериментов

Авторы проверили HIGGS и динамическое квантование на моделях Llama 3 и Qwen:

  • Метод HIGGS стабильно показывает меньшую perplexity, чем популярные подходы NF (Normal Float) и AF [10](Abnormal Float), особенно в 3-4 бита.

  • Динамическое квантование даёт дополнительный прирост качества.

  • Использование FLUTE [11]GPU-ядер показало ускорение в 2–3 раза по сравнению с FP16, почти без потери точности.

Итог

Таким образом HIGGS решает старые проблемы квантования моделей, основываясь не на эмпирических наблюдениях, а на строгой математически [12] доказанной теореме линейности.

Если вам интересны такого рода посты, можете подписаться на мой канал в telegram [13], там я пишу посты поменьше. В основном я затрагиваю темы применения математики (от базовой до нейросетей) в видеоиграх, но также уделяю внимание [14] видеоиграм как области искусства. Но и про разборы статей не забываю.

Автор: heavychevy

Источник [15]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/14229

URLs in this post:

[1] Статья на arXiv: https://arxiv.org/pdf/2411.17525

[2] HuggingFace: https://huggingface.co/docs/transformers/main/en/quantization/higgs

[3] ошибку: http://www.braintools.ru/article/4192

[4] MSE: https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BE%D1%82%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5

[5] здесь : https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization

[6] кросс-энтропии: https://machinelearningmastery.com/cross-entropy-for-machine-learning/

[7] энтропии информации: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%8D%D0%BD%D1%82%D1%80%D0%BE%D0%BF%D0%B8%D1%8F

[8] матрицу Адамара: https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D0%90%D0%B4%D0%B0%D0%BC%D0%B0%D1%80%D0%B0

[9] PPL WikiText-2: https://paperswithcode.com/sota/language-modelling-on-wikitext-2

[10] AF: https://github.com/davisyoshida/abnormal-floats

[11] FLUTE : https://www.marktechpost.com/2024/07/26/flute-a-cuda-kernel-designed-for-fused-quantized-matrix-multiplications-to-accelerate-llm-inference/

[12] математически: http://www.braintools.ru/article/7620

[13] telegram: http://158.160.36.56:8000/5gMpN

[14] внимание: http://www.braintools.ru/article/7595

[15] Источник: https://habr.com/ru/articles/900696/?utm_source=habrahabr&utm_medium=rss&utm_campaign=900696

www.BrainTools.ru

Rambler's Top100