🔬 Метод
Концептуально нового вроде бы ничего не предлагается. Модифицированный алгоритм GPTQ одновременно обрабатывает разные битности квантизации и ошибка реконструкции получается как взвенная сумма по разным битностям. С теми же весами обновляются неквантизованные веса в GPTQ.
Кроме того, для поиска оптимальной конфигурации под заданную битность опционально применяют EvoPress.
Под это дело пишут быстрые кернелы по типу Marlin под Ampere архитектуру. У реализации две особенности - транспонированный порядок вычислений для использования mma.m16n8k16 операции тензорных ядер, и батчовый кернел деквантизации для хитро запакованных весов.
🧪 Эксперименты
На больших битностях (4-8) работает хуже, чем GPTQ, но дает заметный профит в 3-х битах. EvoPress дает некоторый прирост в сравнении с базовым алгоритмом.
Авторы репродуцируют MatQuant (OmniQuant вариант) и MatGPTQ показывает себя немного лучше на разных битностях.
Написанный кернел дает ускорение порядка 3‑х раз против bf16 для 3 бит, и 3.25 для 2 бит.
💡 Выводы
Кернелы хорошие, но пока в плане качества моделей метод кажется не слишком вкусным. Но при удобном интерфейсе мог бы стать неплохой альтернативной GGUFам.
Post #660
1.86K