QUANT_PRUNE_DISTILL Telegram 314
SpinQuant: LLM quantization with learned rotations
[Статья][Код]

Если в названии статьи встречаются вместе Spin и Quant - это наверняка что-то из области физики. Но нет, это снова про квантизацию LLM

Ранее в ряде работ (QuIP, QuIP#, QuaRot) было показано, что поворот на случайную ортогональную матрицу сильно облегчает квантизацию.

И в этой работе ребята из Meta предложили развитие идеи, дающее лучшее качество на Weight + Activation (+cache) квантизации.

Метод

Наличие выбросов в отдельных каналах активаций сильно затрудняет квантизацию (так как per-channel квантизация обычно не поддерживается в железе). Ортогональные матрицы “размазывают” выбросы в весах и активациях между каналами, так что все активации имеют примерно один и тот же порядок. Но конкретный выбор ортогональной матрицы имеет значение.

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

Случайные Адамаровы матрицы из QuIP гораздо лучше, но все разброс существенен и нет гарантий на оптимальность.

Потому предлагается искать “хорошие” матрицы поворота с помощью оптимизации на Stiefel многообразиях, параметризующих ортогональные матрицы. Оптимизация представляет собой градиентный спуск на многообразии. А именно Кэли SGD.

Есть 4 места куда можно вкрутить поворот:
R1 - В residual перед Attention и FFN
R2 - Между V и O матрицами в Attention
R3 - В Query/Key
R4 - Между активацией в FFN

Первые два поворота можно влить в параметры модели без изменения выходов модели, последние же придется считать на каждом прогоне. Потому предложенная процедура оптимизации применяется для поиска оптимальных R1, R2 матриц. А в случаях R3, R4 используют дешевые Адамаровы матрицы, кои практически не замедляют работу LLMки и почти ничего не весят.

Для оптимизации используют небольшой набор из Wikitext-2.

Результаты

Процедура оптимизации матриц занимает час с небольшим на меньших представителях семейства 🦙 на 8 A100 и полдня для 70B моделей.

Замеряют по классике качество на перплексии и 0-шотах.

Рассматривают 3 сценария:
1️⃣ Weight only quantization
2️⃣ Weight + activation quantization
3️⃣ Weight + activation + KV cache quantization

По качеству операжают бейзлайны (ближайший QuaRot примерно на 1% в среднем). В Weight-only quantization где-то бага при замерах AQLM и QuIP#, ибо эти методы сжимают модели почти без просадки (если верить бенчам, а не здравому смыслу) почти без просадки.

Метод работает как с RTN (Round-to-nearest), так и c GPTQ.

Важны все матрицы, но большой прирост дает будто бы добавление R4 - вращение внутри FFN.

Вывод

Квантизация весов/активаций и кэша в 4 бита на текущий момент, наверное, то что дает самое большое ускорение инференса на современных GPU, потому и представляет значительный практический интерес. И улучшение качества - это хорошо. При квантизации активаций (и кэша) просадки все еще значительные и есть куда улучшаться.
👍7



tgoop.com/quant_prune_distill/314
Create:
Last Update:

SpinQuant: LLM quantization with learned rotations
[Статья][Код]

Если в названии статьи встречаются вместе Spin и Quant - это наверняка что-то из области физики. Но нет, это снова про квантизацию LLM

Ранее в ряде работ (QuIP, QuIP#, QuaRot) было показано, что поворот на случайную ортогональную матрицу сильно облегчает квантизацию.

И в этой работе ребята из Meta предложили развитие идеи, дающее лучшее качество на Weight + Activation (+cache) квантизации.

Метод

Наличие выбросов в отдельных каналах активаций сильно затрудняет квантизацию (так как per-channel квантизация обычно не поддерживается в железе). Ортогональные матрицы “размазывают” выбросы в весах и активациях между каналами, так что все активации имеют примерно один и тот же порядок. Но конкретный выбор ортогональной матрицы имеет значение.

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

Случайные Адамаровы матрицы из QuIP гораздо лучше, но все разброс существенен и нет гарантий на оптимальность.

Потому предлагается искать “хорошие” матрицы поворота с помощью оптимизации на Stiefel многообразиях, параметризующих ортогональные матрицы. Оптимизация представляет собой градиентный спуск на многообразии. А именно Кэли SGD.

Есть 4 места куда можно вкрутить поворот:
R1 - В residual перед Attention и FFN
R2 - Между V и O матрицами в Attention
R3 - В Query/Key
R4 - Между активацией в FFN

Первые два поворота можно влить в параметры модели без изменения выходов модели, последние же придется считать на каждом прогоне. Потому предложенная процедура оптимизации применяется для поиска оптимальных R1, R2 матриц. А в случаях R3, R4 используют дешевые Адамаровы матрицы, кои практически не замедляют работу LLMки и почти ничего не весят.

Для оптимизации используют небольшой набор из Wikitext-2.

Результаты

Процедура оптимизации матриц занимает час с небольшим на меньших представителях семейства 🦙 на 8 A100 и полдня для 70B моделей.

Замеряют по классике качество на перплексии и 0-шотах.

Рассматривают 3 сценария:
1️⃣ Weight only quantization
2️⃣ Weight + activation quantization
3️⃣ Weight + activation + KV cache quantization

По качеству операжают бейзлайны (ближайший QuaRot примерно на 1% в среднем). В Weight-only quantization где-то бага при замерах AQLM и QuIP#, ибо эти методы сжимают модели почти без просадки (если верить бенчам, а не здравому смыслу) почти без просадки.

Метод работает как с RTN (Round-to-nearest), так и c GPTQ.

Важны все матрицы, но большой прирост дает будто бы добавление R4 - вращение внутри FFN.

Вывод

Квантизация весов/активаций и кэша в 4 бита на текущий момент, наверное, то что дает самое большое ускорение инференса на современных GPU, потому и представляет значительный практический интерес. И улучшение качества - это хорошо. При квантизации активаций (и кэша) просадки все еще значительные и есть куда улучшаться.

BY КПД


Share with your friend now:
tgoop.com/quant_prune_distill/314

View MORE
Open in Telegram


Telegram News

Date: |

Judge Hui described Ng as inciting others to “commit a massacre” with three posts teaching people to make “toxic chlorine gas bombs,” target police stations, police quarters and the city’s metro stations. This offence was “rather serious,” the court said. How to Create a Private or Public Channel on Telegram? Hui said the messages, which included urging the disruption of airport operations, were attempts to incite followers to make use of poisonous, corrosive or flammable substances to vandalize police vehicles, and also called on others to make weapons to harm police. When choosing the right name for your Telegram channel, use the language of your target audience. The name must sum up the essence of your channel in 1-3 words. If you’re planning to expand your Telegram audience, it makes sense to incorporate keywords into your name. A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first.
from us


Telegram КПД
FROM American