March 21, 2023

Демократизация ИИ или как запустить ИИ Чатбот LLaMA\Alpaca у вас на компьютере

В последние две недели происходит что-то невероятное. После "слива" самых мощных на данный момент нейросетевых моделей семейства LLaMA, уровня GPT-3.5 и после публикации инструкций для дообучения этих моделей с помощью ChatGPT, энтузиасты начали массово улучшать (дообучать) как сами модели, так и способы их запуска.

LLaMa - большая языковая модель, обученная, готовая к использованию, с весами, 7B, 13B, 33B, 65B и с тех пор модели LLaMa научились запускать на Mac, телефонах, raspbery PI.

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

Экспериментально было обнаружено, что вместо использования 4-байтовой точности FP32 мы можем получить почти идентичный результат вывода с 2-байтовой полуточностью BF16/FP16, что вдвое уменьшает размер модели.
8-битное квантование использует четверть точности, что позволяет использовать только 1/4 часть размера модели! Но это делается не путем простого отбрасывания еще половины битов - квантование осуществляется путем "округления" от одного типа данных к другому.

Достигнув существенных результатов в оптимизации весов моделей LLaMA, энтузиасты смогли понизить и системные требования к оборудованию для запуска этих моделей. В итоге стало возможным запускать квантизированные модели на многоядерных процессорах пользовательского уровня.

После появления в паблике разработки llama.cpp, которая позволяет использовать CPU ядра вместе GPU для инференса, начали появляться многочисленные модификации кода.

Спустя пару недель после слива моделей LLaMA, cотрудники лаборатории Стенфорда выложили в открытый доступ информацию, инструкцию и код о способе дообучения моделей LLaMA с помощью механизма LoRA от Microsoft на датасете из 52 тысяче инструкций, полученных от ChatGPT с помощью автоматизации запросов через API с помощью instruction-following data аналогичного качества на text-davinci-003.

Метод подхватили другие разработчики, которые взяли за основу наработки llama.cpp, LoRA и дообучили модели LLaMA, назвав модель Alpaca. Модели Alpaca научились воспроизводить на консьюмерском железе. Без настройки гиперпараметров или контрольных точек на основе проверки модель LoRA дает результаты, сравнимые с моделью Stanford Alpaca. Дальнейшая настройка может помочь добиться лучшей производительности. Дообучение младшей модели 7B требует порядка 5 часов на RTX 4090.

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

Требования к памяти:
7B => ~4 GB
13B => ~8 GB
30B => ~16 GB
65 => ~32 GB

Доступны сборки для Windows, MacOS, Linux.

Модели доступны на Hugging Face или отсюда:

curl -o ggml-alpaca-7b-q4.bin -C - https://gateway.estuary.tech/gw/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
curl -o ggml-alpaca-7b-q4.bin -C - https://ipfs.io/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
curl -o ggml-alpaca-7b-q4.bin -C - https://cloudflare-ipfs.com/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
# BitTorrent
magnet:?xt=urn:btih:5aaceaec63b03e51a98f04fd5c42320b2a033010&dn=ggml-alpaca-7b-q4.bin&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fopentracker.i2p.rocks%3A6969%2Fannounce
https://btcache.me/torrent/5AACEAEC63B03E51A98F04FD5C42320B2A033010  
https://torrage.info/torrent.php?h=5aaceaec63b03e51a98f04fd5c42320b2a033010  

Запускается из терминала одной строкой:

Alpaca 7B:
D:\alpaca\chat.exe -m D:\alpaca\ggml-alpaca-7b-q4.bin --color -t 24

Приходит на ум ассоциация, что LLaMa и Alpaca - новый Stable Diffusion. Эффект от публикации моделей в паблик и скорость, с которой комьюнити подхватывает наработки и улучшает все их аспекты, становится реактивной.

Помимо оптимизации инференса (запуска моделей), начали появляться инструменты визуального общения, близкие по смыслу к диалоговому интерфейсу ChatGPT.

Например разработка text-generation-webui с помощью веб интерфейса позволяет "обращаться" с языковыми моделями привычным, удобным способом.

Еще один проект Dalai, позволяющий запуска LLaMA и Alpaca локально удобным способом.

Это без преувеличения революция в области демократизации языковых моделей, новый шаг в масс адопшене и достойный ответ проприетарному ChatGPT\GPT-3\4. Более того, считаю, что с публикацией этих весов и достижении возможности запуска этих моделей без мощных GPT, открыт ящик пандоры, который уже невозможно закрыть. Прогресс невозможно остановить. Скоро чатботы будут "в каждом чайнике".