Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
LLM, сжатую до двух бит на вес, удалось приблизить по качеству к исходной модели без полного переобучения. В нерецензированном препринте Huawei, где все числа получили сами авторы, TVQ сократил отставание Llama3-70B в задачах с выбором ответа с 4,5 до 2,6 процентного пункта. Метод можно встроить поверх существующих схем векторной квантизации, не меняя формат модели для запуска.
Как дискретные индексы стали обучаемыми
При векторной квантизации веса линейного слоя делят на короткие векторы. Каждый такой вектор заменяют элементом из небольшой таблицы, а в модели хранят таблицу и целочисленные индексы выбранных элементов. Это сокращает память сильнее скалярной квантизации, которая кодирует каждый вес отдельно.
Основная часть параметров сжатой модели приходится на индексы. Градиентный спуск не умеет напрямую менять их: выбор элемента таблицы дискретен, поэтому его производная почти везде равна нулю. Предыдущие методы обходили проблему локально — подбирали индексы для каждого слоя так, чтобы его выход оставался похож на выход исходного слоя.
TVQ добавляет скрытую непрерывную матрицу весов. На прямом проходе алгоритм находит для неё ближайшее допустимое представление через таблицу и индексы, после чего считает функцию потерь на квантизованных весах. На обратном проходе сквозная оценка градиента (straight-through estimator) передаёт градиент к непрерывной матрице так, словно дискретной операции между ними нет.
После шага оптимизации индексы вычисляют заново. В итоговый файл скрытая матрица не попадает: для запуска по-прежнему нужны только индексы и таблица векторов. Поэтому TVQ меняет способ подготовки модели, но сохраняет структуру QuIP#, QTIP и других схем, включая их ограничения на таблицы и совместное кодирование индексов.
Почему TVQ сравнивает целые блоки
Возможность передавать градиент через индексы сама по себе не задаёт цель обучения. Авторы применили TVQ к дистилляции знаний: сжатая модель повторяет выходы исходной модели, которая выступает учителем.
Оптимизация идёт последовательно по блокам Transformer, а не по отдельным линейным слоям. Для каждого блока сравнивают его выход в исходной и квантизованной моделях. При этом сжатый блок получает активации от уже обработанных сжатых блоков, поэтому обучение учитывает накопленную ранее ошибку.
Такой подход охватывает связи между attention, многослойным перцептроном и остаточными соединениями, но не требует одновременно держать в обучении всю модель. После блоковой стадии авторы дополнительно настраивают небольшой набор непрерывных параметров всей LLM: нормализации, таблицы векторов и выходной слой. Целью служит расхождение между распределениями ответов исходной и сжатой моделей.
Пересчитывать индексы после каждого шага дорого. TVQ умеет обновлять их по расписанию, а для базовой схемы использует приближённый поиск ближайшего вектора. В экспериментах редкий пересчёт сокращал время обучения без заметной потери качества до определённого порога; при слишком длинном интервале модель резко деградировала.
Когда TVQ меняет план квантизации
Метод проверяли на моделях семейств Llama и Mistral. Для калибровки использовали RedPajama, качество измеряли через перплексию на WikiText-2 и C4, а также через долю правильных ответов на WinoGrande, PiQA, HellaSwag и двух вариантах ARC. Перплексия показывает, насколько неуверенно модель предсказывает следующий токен: чем она ниже, тем лучше.
Сравнение охватило AQLM, QuIP#, QTIP, VPTQ и PV-tuning. Самая заметная деталь появилась на Llama3-70B: замена оптимизатора QuIP# на TVQ подняла среднюю точность по сопоставимым задачам с 43,5% до 73,7%. Перплексия не показала разрыв такого масштаба, поэтому выбирать способ квантизации только по ней рискованно.
TVQ имеет смысл добавить в план, если продукт уже ориентируется на векторную квантизацию и крайнее сжатие весов. Команде не придётся разрабатывать новый формат контрольной точки или заменять имеющиеся средства запуска: результат остаётся совместимым с инфраструктурой выбранной схемы.
Цена за качество — отдельная стадия обучения на GPU. В замере для Llama2-70B полный цикл TVQ+QTIP потребовал менее трети вычислений, которые PV-tuning потратил только на свою вторую стадию, однако более простые сочетания TVQ с QuIP# и BasicVQ требовали меньше ресурсов, чем TVQ+QTIP. Поэтому выбор остаётся инженерным: TVQ расширяет доступный компромисс между качеством и затратами, но не отменяет расчёт бюджета под конкретную схему.
Работа не меняет план команд, которым достаточно скалярной квантизации или более высокой разрядности. Её практический результат уже уже: дискретные назначения в векторной квантизации теперь можно оптимизировать по функции потерь целого блока, а не только по локальной ошибке одного слоя.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



