Введение

Агенты, управляемые LLM, могут помочь нам более эффективно выполнять любое количество задач, будь то проверка кода, написание электронных писем и т. д. Некоторые задачи, которые мы хотим, чтобы они выполняли, требуют больше знаний и опыта в предметной области, чем другие, поэтому мы можем захотеть уточнить настроить нашу собственную модель (подробнее об этом). В настоящее время существует 40 миллиардов моделей параметров с открытым исходным кодом, так почему бы не настроить их с помощью ваших данных и знаний, не передавая их в стороннюю среду?

Тем не менее, существуют серьезные аппаратные (и финансовые) проблемы, связанные с полным использованием возможностей LLM, особенно если мы хотим точно настроить их на основе наших собственных данных и опыта. Не у всех есть несколько тысяч (или десятков тысяч) долларов, чтобы инвестировать в легкодоступные графические процессоры, и их может быть сложно предоставить поставщикам облачных услуг из-за высокого спроса.

Поскольку в последнее время мы были на теме памяти, я хочу поделиться еще одной областью, в которой я рад видеть разработки, связанные с другой областью памяти, а именно с квантованием. Это очень практичный метод, с помощью которого каждый может воспользоваться преимуществами точной настройки своих моделей и устранить барьеры, вызванные аппаратными ограничениями.

Что такое квантование?

В контексте машинного обучения квантование — это процесс, который снижает точность числовых весов, используемых в модели. Цель квантования — сделать модель меньше и повысить вычислительную эффективность за счет небольшого снижения точности.

В типичной нейронной сети веса представлены в виде 32-битных чисел с плавающей запятой. Однако эти высокоточные числа могут требовать больших объемов памяти и вычислительных ресурсов, особенно для больших моделей с миллиардами параметров.

Квантование решает эту проблему, уменьшая точность этих весов. Например, веса могут быть округлены до ближайшего 16-битного, 8-битного или даже 4-битного числа, как в случае с QLoRA, который мы рассмотрим более подробно.

Этот процесс значительно снижает требования к памяти и вычислительную сложность модели, что позволяет запускать большие модели на оборудовании с ограниченной памятью и вычислительной мощностью, например, на мобильных устройствах или отдельных графических процессорах. Исследования показывают, что переход от представлений с плавающей запятой к низкоточным фиксированным целочисленным значениям, представленным в четырех битах или меньше, потенциально может уменьшить объем памяти и задержку в 16 раз; и на самом деле в этих приложениях на практике часто реализуется сокращение от 4x до 8x

Важно отметить, что, хотя квантование может немного ухудшить производительность модели, исследовательские и инженерные усилия, такие как QLoRA, направлены на смягчение этого снижения точности, поэтому квантованная модель работает почти так же хорошо, как полностью настроенная модель без квантования. . Мы также должны отметить, что квантование, как правило, лучше работает с LLM, чем с фундаментальными моделями компьютерного зрения, по разным причинам, даже несмотря на то, что квантование исторически больше популяризировалось миром компьютерного зрения.

Историческое развитие квантования

Квантование в машинном обучении значительно эволюционировало за последние годы, что обусловлено необходимостью развертывания мощных моделей глубокого обучения на устройствах с ограниченной памятью и вычислительной мощностью, таких как мобильные телефоны или периферийные устройства. На заре машинного обучения модели были достаточно малы, чтобы в квантовании не было особой необходимости.

Однако по мере того, как модели начали расти, стала очевидной потребность в представлениях с более эффективным использованием памяти. Исследователи начали изучать арифметику более низкой точности, начиная с 16-битных вычислений с плавающей запятой половинной точности. Ниже приведены некоторые из различных типов квантования, которые могут происходить на разных этапах процесса разработки модели.

  1. Квантование с фиксированной запятой. Квантование с фиксированной запятой, предполагающее представление весов в виде целых чисел, а не чисел с плавающей запятой, было одним из первых используемых методов. Одна из ключевых статей здесь была первой, в которой был предложен этот метод для квантования глубоких сверточных сетей (DCN) и показано, что реализации DCN с фиксированной точкой в ​​​​сочетании с оптимизацией распределения битов между уровнями на самом деле улучшают как память, так и их точность при тестировании. против СИФАР-10. Однако ограниченный динамический диапазон чисел с фиксированной точкой может сделать этот тип квантования менее подходящим для других сетей.
  2. Квантование с плавающей запятой: исследователи также продолжали использовать числа с плавающей запятой более низкой точности, такие как 16-битные числа с плавающей запятой половинной точности, упомянутые ранее. Одной из первых публикаций, посвященных развитию этой техники, было использование 8-битного представления с плавающей запятой (FP8) для обучения глубоких нейронных сетей (ГНС), где они создали гибридный формат FP8 для соответствия различным требованиям точности в процессе обучения модели и новый сквозной распределенный метод обучения. Это обеспечило более широкий динамический диапазон, чем числа с фиксированной точкой, и применимость к большему количеству моделей DNN.
  3. Квантование весов: при квантовании весов веса между нейронами аппроксимируются и ограничиваются, в отличие от традиционного стохастического градиентного спуска, который оценивает градиент на текущей итерации. Например, BinaryConnect признает, что типичные вычисления DNN включают множество операций умножения и сложения, также известных как операции умножения-накопления. В цифровом оборудовании умножители потребляют больше всего энергии и занимают больше всего места. Итак, если веса между нейронами бинарны при прямом и обратном распространении, эти операции умножения-накопления можно упростить до простых операций сложения. Это приводит к повышению эффективности вычислений и повышению производительности.
  4. Квантование активации: Затем исследователи начали квантизировать не только веса, но и активации в сети. Это обеспечивает дополнительную экономию памяти, а также может значительно ускорить вычисления, особенно на оборудовании, предназначенном для арифметических операций с более низкой точностью.
  5. Квантование после обучения и во время обучения. Первоначально большая часть квантования выполнялась после обучения, то есть модель сначала обучалась с полной точностью, а затем квантовалась. Однако это может привести к значительной потере точности. Чтобы решить эту проблему, исследователи начали использовать квантование во время обучения, когда модель обучается с помощью квантования с самого начала. Одним из примеров этого является Структура квантования смешанной точности с учетом качества данных (DQMQ), которая динамически адаптирует разрядность квантования в соответствии с качеством данных. Эта адаптация управляется политикой принятия решений битовой ширины, которую можно изучить во время обучения, и она моделируется как гибридная задача обучения с подкреплением. Это может позволить модели лучше адаптироваться к квантованию, вознаграждая результаты, улучшающие производительность.
  6. Расширенные методы. В последнее время исследователи изучают более продвинутые методы квантования. Например, в этой статье NVIDIA об обучении со смешанной точностью предлагается использовать как одинарную, так и половинную точность. Они хранят копию весов с одинарной точностью, которая накапливает градиенты после каждого шага оптимизатора; эта копия затем округляется до половинной точности для шагов прямого и обратного распространения. Масштабирование потерь помогает гарантировать, что меньшие значения половинной точности не исчезнут. QLoRA использует новую технику двойного квантования для дальнейшего сокращения использования памяти.

Неудивительно, что с развитием фундаментальных моделей, таких как LLM, эта область снова привлекла к себе внимание, и продолжают публиковаться новые исследования этих различных методов. Одной из недавних публикаций, которая показала значительные перспективы на уровне реализации, является QLoRa, а также прокси LoRA, которую мы обсудим далее в контексте LLM.

Квантование LLM: LoRa и QLoRa

QLoRA — это эффективный метод тонкой настройки моделей машинного обучения, особенно для больших языковых моделей. Он предназначен для тонкой настройки LLM на одном графическом процессоре с ограниченным объемом памяти, даже когда сама модель имеет огромное количество параметров, до 65 миллиардов.

Ключевым методом, который использует QLoRA, является обратное распространение градиентов через 4-битную квантованную версию предварительно обученной модели в структуры, называемые адаптерами низкого ранга (LoRA). На практике адаптер — это небольшой модуль, который вставляется в каждый слой уже существующей модели. Адаптер обучается адаптировать входные данные слоя к конкретной решаемой задаче, в то время как ранее существовавшие параметры модели остаются фиксированными (или «замороженными). Их называют низкоранговыми из-за их происхождения из линейной алгебры — матрицы, которую можно разложить на произведение двух матриц меньшего размера. Эта факторизация значительно сокращает количество параметров, которые необходимо изучить и сохранить».

Этот процесс квантования позволяет модели резко сократить использование памяти без значительного снижения производительности задачи. В документе говорится, что QLoRA снижает средние требования к памяти для точной настройки модели параметров 65B с 780 ГБ памяти графического процессора до ‹48 ГБ без ухудшения времени выполнения или производительности прогнозирования по сравнению с 16-битной полностью настроенной базовой версией.

Модель на основе QLoRA под названием Guanaco очень хорошо показала себя в тесте Vicuna, который измеряет производительность диалоговых моделей ИИ. Несмотря на более компактный размер и меньший объем памяти, необходимый для тонкой настройки, он обеспечивает почти такую ​​же производительность, как ChatGPT.

QLoRA представляет три новых метода для экономии памяти и достижения этой производительности:

  1. 4-bit NormalFloat (NF4): новый тип данных, оптимальный для нормально распределенных весов. Используя только 4 бита, он экономит много памяти по сравнению с типами данных более высокой точности.
  2. Двойное квантование: дополнительный уровень квантования поверх 4-битного квантования. Это включает в себя квантование констант квантования с использованием метода LoRA, что приводит к еще большей экономии памяти.
  3. Страничные оптимизаторы. Они управляют использованием памяти, обрабатывая всплески памяти, которые в противном случае могли бы вызвать проблемы. Они следят за тем, чтобы использование памяти оставалось в пределах памяти графического процессора.

QLoRA использовалась для тонкой настройки более 1000 моделей, включая модели разных типов и моделей разного масштаба, некоторые из которых были бы неуправляемы с использованием традиционных методов тонкой настройки. Они обнаружили, что QLoRA может давать самые современные результаты даже с небольшими моделями и небольшими высококачественными наборами данных.

Однако они также обнаружили, что текущие тесты чат-ботов не всегда надежны для точного измерения производительности чат-ботов. Они предоставили подробную разбивку или анализ лимонов, где Guanaco не работает так же хорошо, как ChatGPT, например, математика, неясные вопросы и некоторые типы предположений как часть преамбула. Авторы также признают, что существует необходимость в большем количестве испытаний в более крупных масштабах, поскольку это по-прежнему требует больших вычислительных ресурсов.

Наконец, они выпустили все свои модели и код, используемый для реализации QLoRA, включая ядра CUDA, необходимые для 4-битного обучения. Подробности смотрите в их репозитории GitHub здесь.

Я лично пытался внедрить их код для квантизации нескольких точно настроенных LLM в 7B (работает даже на бесплатном графическом процессоре с одним экземпляром в Google Colab или Kaggle) до диапазона параметров 40B (посмотрите Vast.ai для более дешевых альтернатив графическим процессорам или, если они у вас есть, вы можете сдать их в аренду!) со значительно сниженными требованиями к оборудованию и минимальным влиянием на производительность в конкретных случаях использования. Такие методы, как QLoRA (и LoRA), нуждаются в дальнейшем развитии и могут действительно раскрыть потенциал LLM для более широкого круга людей.

Заключение

С развитием все более крупных базовых моделей и, в частности, LLM, область квантования и ее роль в обработке с эффективным использованием памяти стали критически важными для подлинной демократизации возможностей LLM для более широкой аудитории. Эти методы, первоначально разработанные для повышения эффективности глубокого обучения на мобильных и периферийных устройствах, теперь помогают сделать LLM и, в частности, использование точно настроенных LLM более доступными для всех.

Рекомендации

Курбарио, М., Бенжио, Ю., и Дэвид, Дж. П. (2015). Binaryconnect: обучение глубоких нейронных сетей бинарным весам во время распространения. Достижения в области нейронных систем обработки информации, 28. "Связь".

Деттмерс, Т., Паньони, А., Хольцман, А., и Зеттлемойер, Л. (2023). Qlora: эффективная тонкая настройка квантованных фильмов. препринт arXiv arXiv:2305.14314. "Связь".

Голами, А., Ким, С., Донг, З., Яо, З., Махони, М. В., и Койцер, К. (2021). Обзор методов квантования для эффективного вывода нейронной сети. препринт arXiv arXiv:2103.13630. "Связь".

Ху, Э. Дж., Шен, Ю., Уоллис, П., Аллен-Чжу, З., Ли, Ю., Ван, С., … и Чен, В. (2021). Лора: Низкоранговая адаптация больших языковых моделей. препринт arXiv arXiv:2106.09685. "Связь".

Джейкоб Б., Клигис С., Чен Б., Чжу М., Тан М., Ховард А., … и Калениченко Д. (2018). Квантование и обучение нейронных сетей для эффективного вывода только целочисленной арифметики. В Материалы конференции IEEE по компьютерному зрению и распознаванию образов (стр. 2704–2713). "Связь".

Лин Д., Талати С. и Аннапуредди С. (июнь 2016 г.). Квантование с фиксированной точкой глубоких сверточных сетей. В Международной конференции по машинному обучению (стр. 2849–2858). ПМЛР. "Связь".

Мицкевичюс, П., Наранг, С., Албен, Дж., Диамос, Г., Эльсен, Э., Гарсия, Д., … и Ву, Х. (2017). Тренировка смешанной точности. препринт arXiv arXiv:1710.03740. "Связь".

Сун, X., Чой, Дж., Чен, С.Ю., Ван, Н., Венкатарамани, С., Шринивасан, В.В., … и Гопалакришнан, К. (2019). Гибридное 8-битное обучение с плавающей запятой (HFP8) и логический вывод для глубоких нейронных сетей. Достижения в области нейронных систем обработки информации, 32. "Связь".

Ван Ден Орд, А., и Виньялс, О. (2017). Обучение нейронному дискретному представлению. Достижения в области нейронных систем обработки информации, 30. "Связь".

Ван Ю., Го Дж., Го С. и Чжан В. (2023). Квантование смешанной точности с учетом качества данных с помощью гибридного обучения с подкреплением. препринт arXiv arXiv:2302.04453. "Связь".

Чжоу, К., Лю, П., Сюй, П., Айер, С., Сунь, Дж., Мао, Ю., … и Леви, О. (2023). Лима: Чем меньше, тем лучше для выравнивания. препринт arXiv arXiv:2305.11206. "Связь".