Теперь можно запускать языковую модель с 8 млрд параметров в браузере на обычных устройствах. Это сделал возможным Владимир Малиновский, исследователь из научного отдела Yandex Research. И его проект демонстрирует значительный прогресс в оптимизации крупных языковых моделей для персональных компьютеров и мобильных устройств.
В основе проекта лежит работа с моделью Llama3.1-8B, которая в стандартной конфигурации требует 16 ГБ памяти, используя 16 бит на каждый параметр. Стандартные методы сжатия, такие как nf4, позволяют уменьшить размер до 4 ГБ.
Однако команда Yandex Research совместно с исследователями из университетов ISTA и KAUST разработала более эффективный подход, сочетающий технологии AQLM и PV-tuning.
Технические характеристики решения:
— Сжатие основной части модели до 2 бит на параметр;
— 4-битное и 8-битное сжатие для слоёв головы и эмбеддингов;
— Итоговый размер модели: около 2,5 ГБ;
— Сохранение 80% качества от исходной модели;
— Производительность на MacBook Pro M1: 1,5 токена в секунду (3-4 символа).
AQLM использует аддитивную векторную квантизацию, где каждая строка матрицы разбивается на сегменты по 8 чисел. Каждый сегмент формируется как сумма двух векторов из словарей размером 256 элементов.
На хранение индексов для восьми элементов матрицы тратится 2 раза по 8 бит, что даёт итоговые 2 бита на параметр.
Для сравнения:
— Исходная Llama3.1-8B: 16 ГБ;
— Сжатие методом nf4: 4 ГБ;
— Сжатие AQLM: 2,5 ГБ;
— Несжатая Llama 3.2 3B занимает в 2 раза больше места при меньшей эффективности.
Оптимизация производительности достигается за счёт многопоточности через веб-воркеры, что дало двукратное увеличение скорости. Решение использует model-parallel-подход с разделением матриц по размерности выхода между воркерами.
Для взаимодействия между потоками разработан специальный RPC-стек, обеспечивающий интероп между Rust и JavaScript.
Особенно интересен выбор 8-миллиардной модели для демонстрации. Хотя существуют более лёгкие варианты, такие как Llama 3.2 1B и Llama 3.2 3B, именно модель с 8 миллиардами параметров позволяет наглядно продемонстрировать эффективность алгоритмов сжатия. При этом сжатая 8B модель превосходит по качеству несжатую 3B версию.
Процесс работы с моделью выглядит следующим образом:
1. Первоначальная загрузка модели из облака (занимает несколько минут);
2. Автономная работа без необходимости подключения к интернету;
3. Генерация текста со скоростью 1,5 токена в секунду (MacBook Pro M1).
Важным аспектом проекта является его открытый характер — исходный код доступен на GitHub, что позволяет другим разработчикам изучать и улучшать технологию. Это особенно важно для корпораций, стартапов и исследователей, так как снижает затраты на вычислительные мощности при разработке и использовании LLM.
Протестировать работу модели можно на сайте galqiwi.github.io/aqlm-rs/about.html. Разработчик рекомендует использовать английский язык для общения с моделью, так как это существенно повышает качество ответов.
Текущие ограничения проекта:
— Время ожидания при первой загрузке модели (несколько минут);
— Относительно невысокая скорость генерации (1,5 токена/сек);
— Зависимость производительности от мощности устройства.