Мы живём в эпоху LLM — компании применяют на практике всё более крупные модели с миллиардами параметров. Это здорово, потому что большие модели открывают пользователям сервисов новые возможности, но не всё так просто. Размер накладывает ограничения — запускать такие модели очень дорого, а на пользовательских компьютерах — ещё дороже и сложнее. Поэтому часто исследователи и инженеры сначала обучают большую модель, а потом придумывают, как сжать её с минимальными потерями качества, чтобы сделать доступнее. 

Модели выкладываются в формате float16, где на один вес выделяется 16 бит. Два года назад человечество научилось хорошо сжимать нейросети до 4 бит с помощью таких методов, как GPTQ. Но на этом исследователи не остановились, и сейчас актуальная задача — сжатие моделей до 2 бит, то есть в 8 раз. 

Недавно исследователи Yandex Research совместно с коллегами из IST Austria и KAUST предложили новый способ сжатия моделей в 8 раз с помощью комбинации методов AQLM и PV-tuning. Он уже доступен разработчикам и исследователям по всему миру — код опубликован в репозитории GitHub. Специалисты также могут скачать сжатые с помощью наших методов популярные опенсорс-модели. Кроме того, мы выложили обучающие материалы, которые помогут разработчикам дообучить уменьшенные нейросети под свои сценарии.

О том, как исследователи пришли к сегодняшним результатам, мы расскажем на примере двух «конкурирующих» команд и их state-of-the-art алгоритмов сжатия — QuIP и AQLM. Это короткая, но увлекательная история «противостояния» исследователей, в которой каждые пару месяцев случаются новые повороты, появляются оптимизации и оригинальные подходы к решению проблем.

Методика

В качестве примера мы будем использовать Llama2 13b. Вместе с ней выпустили ещё две модели — размерами 7b и 70b. Для оценки качества сжатия моделей в академических работах обычно используется перплексия — эта метрика показывает, насколько нейросеть считает правильный текст необычным. Чем меньше перплексия, тем лучше модель.

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

Для каждого метода сжатия будем брать перплексию и смотреть на соответствующий ей размер модели.

Квантизация LLM с гарантиями

В середине 2023 года у группы учёных из Корнеллского университета выходит статья QuIP, где авторы впервые серьёзно рассуждают о возможностях сжатия нейросетей в 8 раз. Идея метода заключается в том, что в больших языковых моделях 99% весов ведут себя одинаково — их можно легко сжать с малыми потерями. Но оставшийся 1% — выбросы — сильно выделяются на фоне соседей и создают неточности при сжатии. 

Авторы QuIP придумали трюк, с помощью которого веса перемешиваются, решая проблему выбросов. Алгоритм сжимает Llama2 13b до перплексии 13,5. Кажется, что результат плохой, ведь он соответствует модели размером всего 0,43m параметров. Но это первый результат, где перплексия после сжатия осталась двузначной. Например, GPTQ сжимает эту же модель до перплексии 123. Поэтому результат QuIP стал настоящим прорывом.

Экстремальная компрессия LLM с помощью аддитивной квантизации

Через полгода, в январе 2024-го, выходит статья об AQLM учёных из Яндекса и Института науки и технологий Австрии (ISTA). В основе метода — аддитивная квантизация, которую предложил для решения задач поиска научный руководитель Yandex Research Артём Бабенко ещё в 2014 году. 10 лет спустя команда нашла новое применение технологии: сжимать большие языковые модели, стремясь сохранить максимальное качество.

AQLM сжимает Llama2 13b до перплексии, соответствующей 3,7b-модели. Это намного лучше, чем QuIP — такой моделью уже можно пользоваться.

Конкуренты не отстают — апгрейд QuIP до QuIP#

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

QuIP# работает лучше, чем AQLM, улучшая SOTA-квантизацию Llama2 13b до эффективного размера в 5,3b параметров.

Новая глава в истории AQLM

В конце мая появляется ответ от создателей AQLM, на этот раз в сотрудничестве с исследователями из KAUST — технического исследовательского университета в Саудовской Аравии. Статья предлагает улучшение для AQLM — продвинутый алгоритм файн-тюнинга PV-tuning. Если в статье QuIP# в файн-тюнинге участвуют только непрерывные параметры, по которым идут градиенты, в PV-tuning модифицируются все параметры модели, включая дискретные.

На данный момент AQLM + PV-tuning — лучший алгоритм двухбитной квантизации с точки зрения качества. Он сжимает Llama2 13b до эффективного размера в 6,9b, лишь немного не дотягивая до 7b-модели.

С каждым годом квантизация нейросетей становится эффективнее — стоимость инференса уменьшается в разы, а большие модели с открытыми весами теперь можно запускать на компьютерах домашнего класса. Могли ли мы мечтать всего пару лет назад, что такую большую модель, как, например, Llama3 70b, можно будет запускать на RTX 3090? В 2024-м это уже реальность. 

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

Комментарии (8)


  1. rPman
    23.07.2024 10:21

    Есть шанс 'домашнему' обывателю запустить llama3.1-400b без потери качества на своем железе!?


    1. Aizz
      23.07.2024 10:21

      Вряд ли. Учитывая, что неквантизированую llama3-70b нужно было запускать на парочке 3090, да с 64 оперативы, Даже квантизация не поможет 400b дотянуть хотя бы до такого уровня.
      Видел темы на реддите, там 4-х битную квантизированную версию запускали на 10 3090.


    1. Mike_666
      23.07.2024 10:21
      +2

      Запустить-то получится, к примеру в режиме инференса с диска, но вот использовать для чего-то полезно в ближайшие несколько лет - нет. Скорость в 1/3 токена в час вряд ли для чего-то подойдёт.


    1. rPman
      23.07.2024 10:21

      Формально можно запустить на кластере, хоть с оперативной памятью, но скорость будет отвратительной


    1. shares-caisson
      23.07.2024 10:21

      Смотря насколько домашнему. Если у пользователя есть тысяч десять на серверные железки, то можно запустить на процессоре, какой-нибудь жирный эпик (или пару) и полтерабайта памяти (даже писать такое страшно, но это уже доступная "дома" реальность). Ллмки охочи до скорости памяти, поэтому куча каналов будет в плюс.


      1. rPman
        23.07.2024 10:21

        4х машины с 128гб ram с почти любым процессором не такие дорогие как кажется, на основе ddr4 и дешёвой intel примерно 70т.р. за компьютер (корпус и систему охлаждения лучше сколхозить)


    1. Zoolander
      23.07.2024 10:21

      Два макбука и квантизация 4бит и специальный софт https://x.com/ac_crypto/status/1815969489990869369

      Софт - делает кластер из нескольких машин

      https://github.com/exo-explore/exo

      Не проверял, прочитал сам утром


  1. slivka_83
    23.07.2024 10:21

    Планируется ли сжатие Meta-Llama-3-70B-Instruct по методу AQLM-PV?

    А то сейчас есть только базовая версия Meta-Llama-3-70B-AQLM-PV-2Bit-1x16-2Bit-1x16