tgoop.com/quant_prune_distill/213
Last Update:
BitNet: Scaling 1-bit Transformers for Large Language Models
[Статья][Официального кода нет]
Пойдем в обратном хронологическом порядке и откатимся на несколько месяцев и 0.58 битов назад по отношению к статье.
Собственно, здесь по существу и расписана вся экспериметнальная постановка, на которой основывается статья с тернарной квантизацией.
Метод
Линейные слои заменяются на BitLinear
, где элементы принимают только два значения -1 и 1. Если вес больше среднего элемента по матрице - то он 1, иначе -1. И общий масштаб равен среднему модулю веса. Максимально дешево и сердито 😈. Такая операция недифференцируема, потому используется STE. На этапе обучения авторы хранят полный тензор весов во float.
Активации квантуются в 8 бит с помощью равномерной сетки.
Чтобы веса лучше квантовались, перед линейным слоем стоит LayerNorm.
Вычисление среднего значения для определения среднего значения по тензору требует синхронизации при model parallelism. И во избежание лишней коммуникации между процессами при распределенном обучении среднее считается по части матрицы, лежащей на данном процессе.
Странно, что они не рассматирвают поканальное квантование, или даже группами по 256: выразительность больше, а размер модели все еще не сильно отличается от 1 бита.
Далее авторы приводят табличку, показывающую насколько энергоэффективнее INT8 по сравнению с fp16 на разных техпроцессах. На случай, если Грета будет ревьюером.
Эксперименты
Обучают на смеси Pile, CommonCrawl, CC-Stories, RealNews модели размером от 125M до 6.7B. По перплексии полученные модели ожидаемо хуже бейзлайна в fp16, но зато, если нормализовать на энергопотребление, то BitNet смотрится весьма представлительно.
Обучение BitNet с STE требует большего learning rate для адекватной сходимости (~8e-4), на котором fp16 расходится.
По 0-шот бенчам якобы не слишком сильно уступают fp16 трансформеру, однако вопрос в том, насколько хорошо был затюнен сам бейзлайн, и сами бенчи были выбраны по-хитрому. BitNet 6.7B выдает 55.9% на бенчах, но при этом качество случайной модели 43.8% и относительный отрыв от рандом выглядит не таким большим.
Конкурентые PTQ подходы, стартующие с fp16 трансформера конкренто ломаются в низкой битности (тогда еще не вышли QuIP# и AQLM).
Вывод
С одной стороны, неплохо, что это уже как-то работает, но бенчи и бейзлайны были подобраны не слишком честно) BitNet1.58 выдает уже значительно более высокое качество, благодаря возможности принимать хотя бы 0-ое значение.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/213