На пути к 1-разрядным моделям машинного обучения |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-04-16 14:52 В последнее время активно разрабатываются технологии экстремально малоразрядного квантования, например, BitNet и 1.58 bit. Они пользуются большим интересом в сообществе машинного обучения. Основная идея данного подхода заключается в том, что перемножение матриц с квантованными весами можно реализовать и умножения, что потенциально полностью меняет правила игры применительно к скорости вычислений и эффективности больших моделей машинного обучения. Эта статья написана в схожем ключе, но нас наиболее интересует, возможно ли напрямую квантовать предобученные модели при экстремальных настройках, в том числе, при двоичных весах (0 и 1). Уже имеющиеся работы нацелены на обучение моделей с нуля. Но в открытом доступе сейчас достаточно много отличных предобученных моделей, таких как Llama2. Более того, обучение с нуля — это ресурсозатратная задача в пересчёте как на вычисления, так и на данные, поэтому такие подходы не слишком доступны в свободном сообществе. В этой статье мы подробно разберём крайне малоразрядное (2 и 1-разрядное) квантование предобученных моделей с применением HQQ+. HQQ+ — это адаптация HQQ (полуквадратичного квантования), в которой для повышения производительности используется адаптер с низкой размерностью. Наши результаты показывают, что, обучая лишь небольшую часть весов в верхней части HQQ-квантованной модели (даже одноразрядной), качество вывода значительно возрастает, такая модель может даже превосходить небольшие модели полной точности. Модели находятся на Hugging Face: 1-разрядная, 2-разрядная. Введение Квантование небольших предобученных моделей с экстремально малой битовой шириной — это задача не из лёгких. Мы уже продемонстрировали, что сравнительно крупные модели, такие, как Mixtral, хорошо справляются с квантованием 2-разрядных моделей. Но, в то же время, модели поменьше, например, популярная Llama2-7B, буксуют на таких экстремальных уровнях квантования. Более того, качество серьёзно падает при квантовании 1-разрядных моделей. Цель данного эксперимента — продемонстрировать сообществу те результаты, которых предполагается достичь при тонкой настройке таких моделей в самых экстремальных условиях квантования. Мы удивились, но при тонкой настройке лишь крошечной доли всех параметров (приблизительно 0,65%) качество выходных результатов серьёзно повышается. В частности, мы наблюдали:
Эффективное перемножение матриц при малоразрядном квантовании Этап деквантования HQQ — это линейная операция, для которой нужен как калибровочный, так и нулевой параметр. В этом разделе будет показано, как переписать шаг деквантования именно таким образом, чтобы напрямую пользоваться преимуществами, приобретаемыми при перемножении малоразрядных матриц. Новый взгляд на деквантование Этап деквантования в HQQ можно выразить как Wr=(Wq?z)s, где Wr соответсвует деквантованным весам, Wq — квантованным весам, а метапараметры z и s — векторам нулевого и калибровочного коэффициента соответственно. Чтобы в рамках этой статьи не усложнять объяснение, пропустим описание этапов перестроения, необходимых в случае, если мы применяем группирование. Операция перемножения матриц при прямом распространении (без учёта члена сдвига) принимает вид:
Чтобы воспользоваться таким малоразрядным перемножением матриц, необходимо отделить xWq от остального выражения. Перепишем эту операцию следующим образом:
где u=?z?s и ? — это точечное умножение (произведение Адамара). Обратите внимание: поскольку u — это вектор, прямое матричное перемножение неприменимо между x и u. Тем не менее, его можно сформулировать как перемножение матриц ранга 1: Как в 1-разрядной, так и в 2-разрядной ситуации перемножение матриц с квантованными весами можно реализовать в виде операций сложения, и умножение как таковое для этого не требуется:
Тонкая настройка с применением адаптеров низкой размерности При применении таких методов как BitNet вся сеть целиком обучается с нуля. Вместо этого лучше попробовать обучать адаптеры низкой размерности (LoRA/QLoRA), в настоящее время это наиболее популярный метод тонкой настройки больших моделей. Как следует из крайнего правого члена в формуле 1, нулевая точка действует в качестве поправочного коэффициента матрицы ранга 1 между Wqs и исходными весами, и адаптер низкой размерности, в сущности, повышает ранг этого поправочного коэффициента, что улучшает результаты квантования. Пусть LA и LB — это параметры адаптера ранга r с низкой размерностью. Тогда операция перемножения матриц при прямом распространении принимает вид:
Как было подробно описано в нашей более ранней работе о отсечении низких рангов в Llama, ранг суммы двух матриц ниже или равен сумме их рангов. Следовательно, x1Tu+xLTALB можно объединить как член рангом r+1 и получить:
где LA? и LB? получаются в результате низкорангового разложения матрицы 1Tu+LTALB. Датасеты Адаптеры низкой размерности обучались методом дообучения с учителем (Supervised Fine-Tuning) на различных датасетах, имеющихся в открытом доступе. Для базовой модели и чат-модели использовались разные датасеты. Подробности ниже: Базовая модель wikitext-2-raw-v1 (~2,8K): Этот датасет целиком применялся для дообучения базовой модели. На нем закладывается основа для общего понимания языка. Чат-модели 1. timdettmers/openassistant-guanaco: Этот датасет полностью использовался для тонкой настройки чат-модели. 2. microsoft/orca-math-word-problems-200k: подмножество данного датасета применялось для того, чтобы улучшить способности модели по решению математических задач на работу со словами. 3. meta-math/MetaMathQA: другое подмножество этого датасета применялось для того, чтобы дополнительно улучшить способности модели к математическим логическим выводам. 4. HuggingFaceH4/ultrafeedback_binarized (chosen answers only): подмножество ответов, выбранных из этого датасета использовалось, чтобы донастроить возможность модели генерировать согласованные и релевантные ответы. Что касается размеров подмножества, мы воспользовались случайной выборкой Контрольные точки Мы сравнили показатели производительности модели Llama2-7B в трёх конфигурациях: FP16 (полная точность), HQQ (без тонкой настройки) и HQQ+ (со слоями адаптеров) при использовании групп размером 8. Для этих опытов мы выбрали модель Llama2-7B, так как она относительно невелика, её архитектура хорошо изучена, а также с ней легко экспериментировать. Мы оценили производительность предобученной базовой модели и чат-модели. Базовые модели Для базовых моделей мы учли результаты Quip# (2-разрядной), а также ультрасовременный метод квантования, предложенный в работе Tseng et al. Насколько нам известно, не существует никакой функционирующей 1-разрядной модели кроме нашей для Llama-7b. Но для справки мы включим и результаты по 2-разрядной Quip#. 1-разрядная модель
1-разрядное квантование приводило к существенному снижению качества в сравнении с моделью, работающей с полной точностью; в результате пользоваться нашей моделью было почти невозможно. Правда, введя адаптерные слои, мы смогли уменьшить перплексию модели до 8,53, в результате чего модель немного улучшилась и стала сравнима с 2-разрядной моделью Quip#, перплексия которой составляет 8,54, несмотря на то, что в ней только двоичные веса. 2-разрядная модель
2-разрядная модель HQQ обходит Quip# даже без какой-либо калибровки. После дообучения адаптерных слоёв примечательно, что данная модель достигает снижения перплексии по сравнению с моделью полной точности. Это существенное открытие, поскольку оно позволяет предположить, что квантование с применением HQQ+ не только сокращает место, занимаемое моделью в памяти, но и потенциально помогает повысить качество конструирования языка в рамках этой модели. Чат-модели Для базовых моделей мы учли результаты Quip# (2-разрядной), а также ультрасовременный метод квантования, предложенный в работе Tseng et al. Насколько нам известно, не существует никакой функционирующей 1-разрядной модели кроме нашей для Llama-7b. Но для справки мы включим и результаты по 2-разрядной Quip#. 1-разрядная модель
1-разрядное квантование приводило к существенному снижению качества в сравнении с моделью, работающей с полной точностью; в результате пользоваться нашей моделью было почти невозможно. Правда, введя адаптерные слои, мы смогли уменьшить перплексию модели до 8,53, в результате чего модель немного улучшилась и стала сравнима с 2-разрядной моделью Quip#, перплексия которой составляет 8,54, несмотря на то, что в ней только двоичные веса. 2-разрядная модель
2-разрядная модель HQQ обходит Quip# даже без какой-либо калибровки. После дообучения адаптерных слоёв примечательно, что данная модель достигает снижения перплексии по сравнению с моделью полной точности. Это существенное открытие, поскольку оно позволяет предположить, что квантование с применением HQQ+ не только сокращает место, занимаемое моделью в памяти, но и потенциально помогает повысить качество конструирования языка в рамках этой модели. Какие же модели лучше: квантованные или малые языковые? С одной стороны, если обучать относительно малые модели с нуля, требования к вычислительной мощности не так высоки, а сама модель тренируется быстрее. Такие модели как Qwen1.5 демонстрируют многообещающие результаты и могут быть привлекательны для применения в некоторых областях. Правда, согласно нашим выводам, сильно квантованные крупные модели, в которых используются такие методы как HQQ+, могут давать ещё более высокую производительность, но при этом занимать не так много места в памяти. Ещё раз подчеркнём, что эти результаты получены на относительно небольшой модели Llama2-7B. При достаточно мелком квантовании без применения адаптерного слоя, как в случае с базовой версией HQQ, наблюдаем, что показатели тем выше, чем крупнее рассматриваемая модель. Например, ранее квантованная модель Mixtral с применением базовой версии HQQ показывает, насколько сильно можно уменьшить площадь модели в памяти, сохранив при этом высокую производительность и серьёзно обходя по этому показателю относительно мелкие модели. Заключение Наши экспериментальные 2- и 1-разрядные квантованные версии модели Llama2-7B с адаптером низкой размерности, квантованные с применением предложенного подхода HQQ+, ярко демонстрируют потенциал экстремально малоразрядного квантования применительно к моделям машинного обучения. Несмотря на те проблемы, с которыми приходится сталкиваться при таких минималистичных настройках, качество вывода удаётся серьёзно улучшить. Мы показали, что в тонко настроенных моделях можно выгодно использовать потенциал оптимизированного перемножения низкоранговых матриц, таким образом существенно снижая потребность в вычислительной мощности и памяти. В таком случае большие языковые модели становятся доступнее. Притом, что бинарные и тернарные ядра для перемножения матриц пока не существуют, надеемся, что наша работа подстегнёт интерес как к программным, так и к аппаратным разработкам, и уже в ближайшем будущем мы увидим их результат. Цитирование
Источник: habr.com Комментарии: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||