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

Кронекером по Фишеру: как при сжатии LLM учесть кривизну второго порядка и не умереть

На связи Вика Чекалина из команды «Мультимодальный ИИ» AIRI. Сегодня мы поговорим о том, как выкручиваться, когда вычислительных ресурсов мало и для деплоя необходимо сжать LLM, но так, чтобы потеря в качестве была минимальной. Логично [1], что нужно использовать дополнительную информацию — например, матрицу Фишера (FIM), которая содержит в себе информацию о важности и взаимодействии параметров модели. 

Но FIM реальных LLM слоев просто огромные, и работать с ними напрямую вычислительно тяжело или просто невозможно. Люди придумывают различные упрощения: например, можно отталкиваться от предположения, что матрица Фишера диагональна — это сильно сокращает объём памяти [2], однако корреляция между различными параметрами слоя теряется навсегда. Мы решили не идти на такие компромиссы и придумали метод [3], который быстро и легко позволяет параметризировать полную недиагональную матрицу Фишера без потери информации о корреляции.

В условиях ограниченных вычислительных ресурсов особенно востребовано пост‑тренировочное сжатие моделей, то есть уменьшение уже обученной модели без дорогостоящего переобучения. Оно позволяет ускорить инференс и сократить потребление памяти. Один из методов этого подхода — низкоранговое сжатие слоев: матрицу весов W in mathbb{R}^{ntimes m}раскладывают через SVD W=U S V^top, оставляют r старших сингулярных компонент и собирают из них два слоя меньшего размера:

W approx W_1 W_2, qquad W_1=U_r S_r^{1/2} in mathbb{R}^{ntimes r}, quad W_2=S_r^{1/2} V_r^top in mathbb{R}^{rtimes m}.(1)

При r ll min(n, m) хранение W_1, W_2 требует меньше памяти, а проход Wx=W_1(W_2 x)– меньше вычислений.

Обычный SVD минимизирует норму реконструкции весов и считает все параметры слоя равнозначными. Но для качественного сжатия — когда модель показывает минимальное падение качества — нужно знать, какие веса критичны, а какими можно пожертвовать, а также как ошибки [4] в разных местах могут компенсировать или усиливать друг друга. Это описывается важностью параметров и информацией об их кросс‑корреляциях.

Веса слоя как матрично-нормальное распределние

Допустим, что модель предобучена и находится в локальном минимуме, а веса слоя W in mathbb{R}^{ntimes m} по матрично-нормальному закону (matrix normal, MN) с плотностью

p(W)=frac{exp!left(-tfrac{1}{2},mathrm{tr}!left[Sigma_1^{-1}(W - W^star),Sigma_2^{-1}(W - W^star)^topright]right)}{(2pi)^{nm/2},|Sigma_2|^{,n/2},|Sigma_1|^{,m/2}}. qquad text{(2)}

По определению, ковариация выражается через произведение Кронекера, а обратная к ней матрица точности есть информация Фишера этой гауссианы по параметру среднего:

mathrm{Cov}big(mathrm{vec}(W)big)=Sigma_2 otimes Sigma_1, qquad mathcal{I}_F=Sigma_2^{-1} otimes Sigma_1^{-1}.qquad text{(3)}

Здесь Sigma_1 in mathbb{R}^{ntimes n} и Sigma_2 in mathbb{R}^{mtimes m} описывают ковариацию строк и столбцов матрицы весов и одновременно служат кронекеровыми факторами кривизны — приближением второго порядка к поверхности потерь.

Оптимальное разложение весов слоя GFWSVD

Допустим, у нас есть параметры несжатой модели theta^star и набор всех возможных сжатий mathcal{C}, которые дают сжатую модель с параметрами theta. Оптимизация сжатия соответствует минимизации потерьDelta{mathcal L} по всем сжатиям theta=mathcal{C}(theta^star) с учётом кривизны:

underset{mathcal{C}}{min};left(theta^star - mathcal{C}left(theta^starright)right)^top mathbf{H} left(theta^star - mathcal{C}left(theta^starright)right), qquad text{(4)}

Докажем следующую теорему, которая говорит нам о том, что сингулярное разложение весов слоя, перевзвешенных с помощью матриц корреляций Sigma_1 и Sigma_2 из формул (2) и (3) оптимально относительно минимизации потерь сжатой модели:

Теорема 3.1. Пусть W^star in mathbb{R}^{ntimes m} — матрица весов одного слоя обученной нейронной сети. Предположим, что выполнены следующие условия:

  1. Модель обучена на supervised‑задаче с MLE‑функционалом (например, кросс‑энтропийной функцией потерь).

  2. Эмпирическая матрица Фишера mathcal{I}_F одного слоя W^star, допускает кронекерову факторизацию mathcal{I}_F approx A otimes B.

  3. Веса W^star взяты из MVN‑распределения по формуле (2) в окрестности оптимума.

При этих условиях оптимальное ранг‑r приближение W^star, минимизирующее приращение потерь Delta{mathcal L}, задаётся формулой

widehat{W}_r=L_B^{-top}, widetilde{W}_r, L_A^{-1}, qquad text{(5)}

где L_A и L_B получены из соответствующих разложений Холецкого, A=L_A L_A^top и B=L_B L_B^top; widetilde{W}_r получается ранг‑r усечённым SVD вспомогательной матрицы widetilde{W}=L_B^top W^star L_A.

Здесь A=Sigma_2^{-1}, B=Sigma_1^{-1}— кронекеровы факторы информации Фишера.

Доказательство

В предположении, что функция потерь порождена методом максимального правдоподобия (MLE), гессиан в точке оптимума совпадает с информацией Фишера. Следовательно, уравнение (2) можно заменить суррогатной задачей

min_{mathcal{C}} bigl(theta - mathcal{C}(theta^{star})bigr)^{top} mathcal{I}_{F} bigl(theta - mathcal{C}(theta^star)bigr)  qquad text{(6)}

при operatorname{vec}(mathbf{W}^{star})=theta^{star} и operatorname{vec}(mathbf{W})=mathcal{C}(theta^{star}). Подставляя mathcal{I}_F=mathbf{A} otimes mathbf{B}  и применяя разложение Холецкого к множителям A и B, получаем:

begin{align} &operatorname{vec}(mathbf{W}^{star}-mathbf{W})^{top} (mathbf{L_A}mathbf{L_A}^{top} otimes mathbf{L_B}mathbf{L_B}^{top})  operatorname{vec}(mathbf{W}^{star}-mathbf{W}) notag \ &=operatorname{vec}(mathbf{W}^{star}-mathbf{W})^{top}  (mathbf{L_A} otimes mathbf{L_B})(mathbf{L_A}^{top} otimes mathbf{L_B}^{top})  operatorname{vec}(mathbf{W}^{star}-mathbf{W}) notag \ &=operatorname{vec}(mathbf{L_B}^{top}(mathbf{W}^{star}-mathbf{W})mathbf{L_A})^{top}  operatorname{vec}(mathbf{L_B}^{top}(mathbf{W}^{star}-mathbf{W})mathbf{L_A}) notag \ &=bigl|mathbf{L_B}^{top}(mathbf{W}^{star}-mathbf{W})mathbf{L_A}bigr|_{F}^{2}  end{align} qquad text{(7)}

Было установлено, что в предположении mathbf{W} sim mathcal{MN}(mathbf{W}^{star}, mathbf{B}^{-1}, mathbf{A}^{-1})  оптимальное решение этой задачи может быть получено с помощью стандартного SVD вспомогательной матрицы widetilde{mathbf{W}} (SVD есть решение MLE для распределений вида (2)). Итоговое решение находится в два шага:
1) поиск оптимального решения ранга r для вспомогательной задачи: widetilde{mathbf{W}}_{r}=operatorname{SVD}_{r}(mathbf{L_B}^{top}mathbf{W}^{star}mathbf{L_A})  ,
2) восстановление оптимального решения исходной задачи посредством обратного преобразования: widehat{mathbf{W}}_{r}=mathbf{L_B}^{-top}widetilde{mathbf{W}}_{r}mathbf{L_A}^{-1}, что даёт наилучшее решение для уравнения (7).

Следовательно, разложение widehat{mathbf{W}}_r представляет собой оптимальное сжатие mathcal{C} для уравнения (6), которое, в свою очередь, обеспечивает минимальный прирост ошибки для заданной задачи, определённой уравнением (4).

Конец доказательства.

Другими словами, наша теорема гарантирует нам оптимальность низкорангового сжатия, если, конечно, мы сможем получить A и B — инвертированные матрицы ковариацийSigma_1 и Sigma_2. Рисунок 1 иллюстрирует, что такой вид сжатия слоя весов — с перевзвешиванием на корень из матриц ковариаций — является обобщением обычного SVD, где не учитывается ни важность, ни корреляции параметров, а также взвешенно-диагональной версии SVD (FWSVD, о нём чуть ниже), где учитывается только важность параметров.

Рисунок 1. Три вида сжатия весов: SVD не учитывает на важность, ни взаимосвязь параметров, FWSVD учитывает только важность, GFWSVD учитывает и то, и то.

Рисунок 1. Три вида сжатия весов: SVD не учитывает на важность, ни взаимосвязь параметров, FWSVD учитывает только важность, GFWSVD учитывает и то, и то.

FWSVD как частный случай

FWSVD был предложен [5] в 2022 году. Этот подход взвешивает единичную матрицу SVD по диагональной матрице Фишера. Покажем коротко, что диагональный FWSVD — частный случай нашего разложения GFWSVD. FWSVD минимизирует

min_{W_1, W_2} big| D W^star - D W_2 W_1 big|_F^2, qquad D=sqrt{mathrm{diag}big(mathbb{E}[G G^top]big)},

то есть перевзвешивает веса одной диагональной матрицей D. В наших терминах это соответствует вырожденной кронекеровой аппроксимации Фишера, где одна сторона — единичная матрица, а другая — диагональная: mathcal{I}_F approx I_m otimes widetilde{D}. Решение задачи min_{widetilde{D}} |mathcal{I}_F - I_m otimes widetilde{D}|_F даёт

widetilde{d}=tfrac{1}{m},mathrm{diag}big(mathbb{E}[G G^top]big),

то есть widetilde{D}=D^2 с точностью до константы 1/m. Подставляя mathcal{I}_F=I_m otimes widetilde{D} в Теорему 3.1, получаем факторы

W_2=D^{-1}hat{U}_r sqrt{hat{S}_r}, qquad W_1=sqrt{hat{S}_r},hat{V}_r^top,

где hat{U}_r hat{S}_r hat{V}_r^top — ранг‑r SVD матрицы D W^star. Это ровно решение задачи FWSVD. Таким образом, в рамках GFWSVD диагональный FWSVD всегда с нами, но теперь мы учитываем недиагональные части фактор‑матриц с обеих сторон (и, соответственно, недиагональные элементы матрицы Фишера).

От гессиана к факторам: разложение большой матрицы без матрицы

Казалось бы, дело за малым — написать разложение Кронекера матрицы Фишера и спокойно делать оптимальное сжатие! Однако это матрица с квадратичной размерностью относительно размера линейного слоя, то есть для слоя LLaMA 2 размерами несколько тысяч на несколько тысяч параметров матрица Фишера будет матрицей размера миллион на миллион. Её проблематично даже загрузить на гпу, не то, что делать её разложение.

Помня, что мы работаем в точке минимума, мы считаем гессиан и матрицу Фишера тождественными. Матрица Фишера в нашей задаче определяется внешнее прозведение вытянутых градиентов:

mathcal{I}_F=frac{1}{|D|}sum_{i=1}^{|D|} g_i g_i^T,  qquad text{(8)}

где G_i in mathbb{R}^{ntimes m} — матрица градиентов весов слоя на i‑м батче, а g_i=mathrm{vec}(G_i) — соответствующий ей вектор.

Кронекерово разложение сводится к SVD матрицы Фишера после перестановки (widetilde{mathcal{I}}_F), а SVD — к операции matvec/rmatvec, то есть умножению некоего вектора на матрицу widetilde{mathcal{I}}_Fvec{v}, vec{v}widetilde{mathcal{I}}_F. Матрица mathcal{I}_F после перестановки будет иметь вид:

widetilde{mathcal{I}}_F=frac{1}{|D|}sum_{i=1}^{|D|} G_i otimes G_i.

Как уже было отмечено, для объекта размером несколько миллионов на несколько миллионов (для LLM‑слоя размера mtimes n widetilde{mathcal{I}}_F имеет размерm^2times n^2) провести разложение затруднительно. Перевод же в спарс‑вид сильно замедляет matvec/rmatvec, который предполагает проход по всем элементам матрицы.

Мы обошли эти ограничения, используя свойство произведения Кронекера

(K otimes L),mathrm{vec}(C)=mathrm{vec}(K^top C L),

которое сводит операцию умножения вектора на матрицу m^2 times n^2 к последовательному умножению трёх матриц размера линейного слоя (а это умножение идет на GPU очень быстро). Матрица Фишера в её полном виде не материализуется. Для вектора z=mathrm{vec}(Z), где Z in mathbb{R}^{ntimes n} и G_i in mathbb{R}^{ntimes m}, умножение на матрицу Фишера справа будет иметь вид:

widetilde{mathcal{I}}_F, z=frac{1}{|D|}sum_{i=1}^{|D|} mathrm{vec}!left(G_i^top Z, G_iright).

Новый Алгоритм 1 разложения Кронекера для гессиана линейного слоя выглядит так:

Требования: список градиентов {g_i}, число батчей |D|
1: I_F  ← (1/|D|) Σ g_i g_iᵀ            # не материализуется
2: Ĩ_F  ← (1/|D|) Σ G_i ⊗ G_i           # не материализуется
3: (u, σ, vᵀ) ← старший сингулярный триплет Ĩ_F (результат SVD)
4: b ← u · σ
5: a ← v
6: B ← reshape(b, (m, m))
7: A ← reshape(a, (n, n))
8: return (B, A)

Здесь старший сингулярный триплет определяется SVD, прочитанным с новыми ускоренными matvec/rmatvec.

Алгоритм 1 имеет теоретическую сложность n^3 относительно обычного n^4, но практически расчёт факторов для одного слоя популярной модели LLaMA 2 7B проходит примерно за минуту (ранее это было более 9 часов).

Замеры скорости получения фактор‑представлений для разных LLM — на рисунке ниже:

Время получения разложения гессиана для слоев LLM разных размеров.

Время получения разложения гессиана для слоев LLM разных размеров.

Ура! Теперь оптимальное разложение весов слоя достижимо за реальное время.

Валидация

Как следует из предыдущего параграфа, теперь мы можем быстро получать факторы для перевзвешивания матрицы линейного слоя, и применять к перевзвешанным параметрам оптимальное низкоранговое разложение (наше GFWSVD).

Алгоритм разложения примерно одинаков для любых DL‑моделей (в том числе LLM):

  1. на калибровочном датасете собираем градиенты на нескольких шагах (для LLM — примерно 100);

  2. по формуле (8) они дадут приближение матрицы Фишера в оптимуме(так называемый эмпирический Фишер);

  3. раскладываем его с помощью Алгоритма 1 и получаем A, B;

  4. с помощью A^{½}, B^{½} перевзвешиваем непосредственно веса слоя W, применяем низкоранговую декомпозицию, умножаем результат на обратные факторы, получаем сжатый слой в виде (1): W_1=B^{-1/2}U_r S_r^{1/2}, W_2=S_r^{1/2} V_r^top A^{-1/2},

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

Учёт корреляций на синтетических данных

Мы обучаем MLP с нуля на бинарной классификации, где ковариация входных признаков задана явно в трёх режимах (Рисунок 2): изотропном ( Sigma=I, корреляций нет), анизотропном (случайное линейное преобразование, неструктурированные зависимости) и тёплицевом (Sigma_{ij}=rho^{|i-j|}, структурированные затухающие корреляции, характерные для последовательных данных).

Целевые слои раскладываются нашим методом GFWSVD, и валидационная точность сравнивается с диагональным приближением Фишера и с обычным, невзвешенным SVD (yf hbceyrt отмечено как baseline). Результат подтверждает интуицию [6]: в изотропном режиме диагональ работает не хуже, но для скоррелированных данных GFWSVD выходит вперёд, и разрыв максимален в области сильного сжатия или низких рангов (левая часть картинки).

Рисунок 2. Три режима.

Рисунок 2. Три режима.

Llama3.1 8B

Второй тест — реальная LLM: Llama 3.1 8B, обученная на очень большом объёме данных. Её веса сильно скоррелированы и слабо избыточны, поэтому она особенно сложна для сжатия. Мы сравниваем GFWSVD с несколькими бейзлайнами:

  • FWSVD — уже упомянутый диагональный Фишер: учитывает важность параметров, но не их корреляции;

  • ASVD, SVD‑LLM — активационные методы: важность оценивается по нормам активаций (прокси, а не прямая чувствительность);

  • Basis Sharing — сильный интересный бейзлайн. В то время как мы ловим корреляции между параметрами, Basis Sharingловит корреляции между слоями модели.

Кроме стандартного замера перплексии, мы валидируем сжатую модель на датасетах здравого смысла — ARC Easy, ARC Challenge, HellaSwag, PIQA, WinoGrande, OpenBookQA. Эти бенчмарки покрывают взаимодополняющие аспекты рассуждения: ARC Easy содержит школьные вопросы по естественным наукам с вариантами ответа, где ARC Challenge собран из вопросов, на которых ошибаются поисковые и словарные бейзлайны; HellaSwag проверяет выбор правдоподобного продолжения ситуации, PIQA — понимание физических свойств объектов и повседневных действий, WinoGrande — разрешение местоименных кореференций, требующее контекстных знаний, а OpenBookQA — применение известного научного факта к новой ситуации.

Таблица 3. Llama 3.1 8B Instruct, сжатие от 20% до 50% на WikiText-2 (WT2), PTB и среднего по шести датасетам commonsense‑рассуждений. Для перплексии меньше — лучше (↓), для точности больше — лучше (↑).

Метод

WT2 ↓

PTB ↓

Сжатие

AVG ↑

Full model

7.20

11.50

0%

0.63

FWSVD

354

864

20%

0.35

ASVD

145

1672

0.35

Basis Sharing

18.54

90.05

0.52

GFWSVD (Ours)

22.57

42.40

0.53

FWSVD

4372

6824

30%

0.33

ASVD

1456

4232

0.34

Basis Sharing

32

286

0.46

GFWSVD (Ours)

35

58

0.48

FWSVD

11072

15376

40%

0.32

ASVD

2992

13193

0.33

Basis Sharing

78

1083

0.39

GFWSVD (Ours)

69

101

0.39

FWSVD

18992

23088

50%

0.31

ASVD

4039

46189

0.31

Basis Sharing

203

3506

0.35

GFWSVD (Ours)

176

501

0.36

Значения точности приведены со стандартным отклонением примерно ±0.01, опущенным для читаемости.

Анализ таблицы показывает, что при сжатии от 20% до 50% GFWSVD заметно обходит методы, сжимающие слои независимо (FWSVD и ASVD), и превосходит Basis Sharing на всех уровнях сжатия вплоть до 50%. То есть для модели с сильно скоррелированными весами учёт внутрислойных корреляций даёт больше, чем межслойных. На 50% (это довольно сильный коэффициент сжатие для низкоранговых методов) почти все методы, кроме GFWSVD и basis sharing, показывают скор рандомного гадания. Единственные методы, при которых модель не рассыпается — GFWSVD и Basis Sharing, причем наш метод обгоняет его на 3%.

BERT

Мы также посмотрели, как метод ведёт себя на модели BERT — с неплотными, несильно скоррелированными параметрами. Мы применили GFWSVD к её слоям и провалидировали на бенчмарке GLUE (General Language Understanding Evaluation) — стандартном наборе из девяти задач понимания естественного языка. 

На рисунке ниже приведен результат: красная линия соответствует нашему методу GFWSVD, зеленая — FWSVD (чистодиагональный), ASVD — перевзвешиванию весов на информации из активаций. Видно, что учет корреляций начинает тем больше, чем больший уровень сжатия мы делаем. 

Кронекером по Фишеру: как при сжатии LLM учесть кривизну второго порядка и не умереть - 98

Заключение

В этой работе мы рассматриваем задачу низкорангового сжатия предобученных слоев LLM. Мы показали, что оптимальное сжатие получается, когда веса слоя перевзвешены на корень из обратных фактор‑матриц информации Фишера. В недиагональных элементах этих факторов хранится информация о корреляциях весов модели, и мы предложили метод, который делает расчет полных факторов возможным и быстрым.

Применение к реальным LLM показало, что наибольшей производительности метод достигает моделях с плотными, коррелированными весами (LLaMA3 8B). На иных моделях важность информации и корреляциях становится важна на высоких степенях сжатия. Больше подробностей в нашей статье [3], которую мы опубликовали на ICML 2026.

А ещё этот подход также работает и для квантизации [7], но об этом как-нибудь в другой раз…

Буду рада ответить на ваши вопросы!

Автор: Sayan_kotor

Источник [8]


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

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

URLs in this post:

[1] Логично: http://www.braintools.ru/article/7640

[2] памяти: http://www.braintools.ru/article/4140

[3] метод: https://arxiv.org/abs/2505.17974v2

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

[5] предложен: https://openreview.net/pdf?id=uPv9Y3gmAI5

[6] интуицию: http://www.braintools.ru/article/6929

[7] квантизации: https://aclanthology.org/2026.acl-long.1805/

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

www.BrainTools.ru

Rambler's Top100