Энтузиаст запустил GLM-5.2 на ноутбуке с 25 ГБ RAM: без дистилляции, но на скорости от 0,05 токена в секунду

от автора

Разработчик-одиночка под ником JustVugg представил Colibri — движок, который запускает открытую модель GLM-5.2 с 744 миллиардами параметров на обычном компьютере с 25 ГБ оперативной памяти. Для сравнения, даже 2-битный квант моделей этого семейства требует порядка 220 ГБ памяти. На момент написания текста проект собрал более двух тысяч звезд на GitHub.

GLM-5.2 — флагманская открытая модель китайской Z.ai, веса опубликованы под лицензией MIT: 744 миллиарда параметров всего, из них около 40 миллиардов активных на токен, контекст до миллиона токенов. На кодинг-бенчмарках она считается сильнейшей открытой моделью, которая «дышит» в спину закрытым конкурентам вроде Opus 4.8 и GPT-5.5. Проблема в том, что при классическом подходе все веса модели должны находиться в памяти одновременно — отсюда минимум для запуска в сотни гигабайт.

Ключевое наблюдение автора Colibri: в MoE-архитектуре от токена к токену реально меняется лишь малая часть задействованных весов. Плотная часть модели — внимание, эмбеддинги и общие эксперты, около 17 миллиардов параметров — постоянно находится в памяти в int4-кванте и занимает 9,9 ГБ. А 21 504 маршрутизируемых эксперта, каждый примерно по 19 МБ, лежат на NVMe-накопителе (около 370 ГБ) и подгружаются по требованию.

Важная оговорка: модель не урезана и не дистиллирована, все 744 миллиарда параметров на месте, но веса сжаты до 4 бит — это тот же компромисс, что и у привычных квантов GGUF.  На каждый новый токен модель опрашивает 8 экспертов в каждом из 75 MoE-слоев, так что без прогретого кэша один токен обходится примерно в 11 ГБ прочитанных с диска данных (о том, как это влияет на износ — дальше по тексту).

Поверх стриминга работает многослойное кэширование: LRU-кэш на каждый слой, страничный кэш операционной системы как бесплатный второй уровень, плюс движок умеет записывать, каких экспертов реально вызывает нагрузка пользователя, и закреплять самых «горячих» в свободной памяти. Чем дольше пользуешься Colibri, тем выше доля попаданий в кэш и тем реже система обращается к диску.

Есть и другие инженерные решения:

  • спекулятивное декодирование через родную MTP-голову модели (78-й слой) — по замерам автора, она дает 2 токена за один проход без потери качества: вывод идентичен обычному жадному декодированию;

  • MLA-внимание со сжатым KV-кэшем — 576 чисел на токен вместо 32 768, в 57 раз компактнее;

  • ядра квантования int8/int4/int2 под AVX2 с масштабами на каждую строку весов; упаковка проверена бит-в-бит против эталона.

Цена всего этого — скорость. На своей машине автор измерил 0,05–0,1 токена в секунду на холодном старте. По его же прикидкам, нативный Linux с быстрым NVMe даст 0,5–1 токен в секунду. На Hacker News комментаторы предложили заменить чат тикетным интерфейсом — поставил задачу, вернулся через часы.

Там же отмечают, что стриминг экспертов — это чтение, которое не изнашивает ячейки SSD, но многочасовые прогоны греют дешевые накопители, что может привести к более быстрому износу. Сам JustVugg и не спорит: «Мне было неважно, что выходит 0,1 токена в секунду. Важен был путь к цели — я просто хотел, чтобы это заработало любой ценой, пусть и медленно».

Сам движок занимает примерно 1300 строк на чистом C без зависимостей (лицензия Apache 2.0); нужен Linux или WSL2, процессор с AVX2, от 16 ГБ оперативной памяти и около 370 ГБ на локальном NVMe под готовый int4-квант с Hugging Face. Интереснее другое: автор подчеркивает, что писал и тестировал движок на сравнительно скромном железе — 12 ядер, 25 ГБ памяти, урезанный виртуализацией диск — поэтому у более мощных конфигураций будет запас роста. Чем больше свободной памяти, тем больше горячих экспертов там закрепится: по оценке, рабочая станция со 128–256 ГБ может выйти на 5–15 токенов в секунду, а это уже режим диалога, пусть и медленного. Правда, автор честно помечает эти цифры как расчет, а независимых замеров пока не появилось.

На данный момент это один из самых экстремальных вариантов локального запуска передовой языковой модели. Открытый вопрос пока один — не просела ли модель в int4: JustVugg просит сообщество прогнать бенчмарки и прислать замеры, потому что на его ноутбуке такой прогон затянулся бы на недели.

P.S. Поддержать меня можно подпиской на канал «сбежавшая нейросеть», где я рассказываю про ИИ с творческой стороны.

ссылка на оригинал статьи https://habr.com/ru/articles/1058050/