tgoop.com/quant_prune_distill/389
Last Update:
“GIVE ME BF16 OR GIVE ME DEATH”? ACCURACY-PERFORMANCE TRADE-OFFS IN LLM QUANTIZATION
[Статья] [Нет кода]
Введение
Квантизаций за последние годы вышло мерено-немерено разного качества и степени сжатия. В идеале, конечно же, хочется не просесть по качеству, и при этом добиться снижения издержек на инференс LLM и ускорения генерации текста.
Академические бенчмарки часто дают чрезмерно оптимистичную оценку, не всегда согласующуюся с пользовательским опытом на практике.
В данной работе, авторы исследуют несколько конфигураций квантизации в режиме малой просадки качества и выводят набор практический предписаний в зависимости от задачи и приложения.
Метод/Эксперименты/Результаты
Авторы рассматривают 3 варианта квантизации:
1️⃣ W8A8-FP (поддерживаемый только на Hopper/Ada Lovelace+)
2️⃣ W8A8-INT
3️⃣ W4A16
В первом случае веса сжимают просто через RTN квантизацию, в остальных применяют оптимизированный GPTQ (с поиском оптимальных скейлов) с калибровкой на OpenPlatypus. В случае 4-битной квантизации весов сравнивают еще и с AWQ.
Замеряют качество по трем сериям задач (на Llama-3.1 {8B, 70B, 405B}):
1️⃣ Open LLM Leaderboard V1
2️⃣ Open LLM Leaderboard V2
3️⃣ И так называемые Real-World задачи - Arena-Hard, HumanEval, HumanEval+
На Open LLM Leaderboard V1 все методы в пределах 99% качества исходной модели, за исключением задачи TrurthfulQA, где наблюдается просадка до 3%.
На Open LLM Leaderboard V2 имеет тоже место почти полное восстановление с наиболее заметной просадкой на BigBenchHard.
На ArenaHard, HumanEval, HumanEval+ тоже все хорошо.
AWQ бывает немного лучше на Open LLM Leaderboard, но заметно уступает на Real-World задачах.
Далее смотрят на похожесть генераций на Arena-Hard у исходной модели через ROUGE-1, ROUGE-L и BertScore. ROUGE порядка 0.6-0.7, но по всей видимости, это означает большую похожесть 😅 .
Для оценки скорости рассматривают разные сценарии:
1️⃣ Длинный промпт / короткий выход
2️⃣ Промпт и выход примерно одной длины
3️⃣ Короткий промпт / длинный выход
Инференс гоняют на vLLM, как проверенном и быстром движке. Замеры гоняют на A6000, A100, H100.
Рассматривают сценарий сихронной и асинхронной (подается батч запросов) генерации.
В синхронном случае почти всегда быстрее всего работает W4A16 квантизация, кроме длинного промпта (compute-bound режим) и инференса H100, где предпочтительнее FP8, INT8 W8A8 квантизация.
В асинхронном сценарии INT4 предпочтительнее на более low-end девайсах, а FP8 при инференсе на H100.
Вывод
Квантовать модели полезно? 😝
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/389