Опубликовано
Бонус: колибри кормит кита. Часть 1 - 744B локально на 16-24 GB VRAM
Автор: Гусев Николай [портфолио]
Темы: ai-agents, benchmarks, llm-api, local-models
Бонус: колибри кормит кита - 744B локально на 16-24 GB VRAM
Гусев Николай · сентябрь 2026
Первая часть была про 8 GB VRAM и кванты по пять гигабайт. У части читателей железо посерьёзнее: 4070 Ti Super, 4080, 4090, 7900 XTX. 16-24 GB. Для вас - отдельная история и другой ход мысли.
Бонус вышел объёмным, поэтому в двух частях. Здесь - почему 744B не обязан влезать в карту, меню восьми моделей и честные скорости. Продолжение: Часть 2 - FreeToken, спекулятивный декодинг и практика выходного дня.
Часть 1. Предел, который не пробить покупкой
Обычная логика роста: больше VRAM - больший квант. 8 GB - Q4 малыша, 24 GB - Q6/Q8 у модели побольше. Логика рабочая, пока модель влезает целиком. А фронт-модели 2026 года - это сотни миллиардов параметров и терабайты в FP8. Ни в одну потребительскую карту такое не влезает. Ни в какую. Вывод кажется очевидным: фронт - только через API.
Проект colibri спрашивает: а зачем модели влезать?
Часть 2. JIT для весов
Colibri (github.com/JustVugg/colibri) - движок инференса на чистом C, ноль зависимостей, Apache 2.0. Появился в июле 2026, за два месяца собрал 26 тысяч звёзд и восемь семейств моделей. Живой: релизы, issue-трекер, культура измерений.
Идея. У MoE-модели на каждый токен работает малая доля весов. У GLM-5.2: 744 миллиардов всего, ~40 миллиардов активных, и от токена к токену меняются лишь ~11 GB. Colibri делит модель на две части. Dense-слой (attention, shared experts, эмбеддинги, ~17 миллиардов параметров) живёт резидентно: 9.9 GB в int4. Остальные 19,456 экспертов лежат на диске (~370 GB) и стримятся по требованию: роутер предсказывает выбор на слой вперёд (измеренная предсказуемость - 71.6%), чтение перекрывается вычислением, горячие эксперты кэшируются и закрепляются в быстрой памяти.
Это JIT, только для весов. Компилятор не компилирует всю программу - он смотрит, какие пути реально горячие, и компилирует их. Colibri не грузит модель - он раскладывает параметры по иерархии VRAM / RAM / NVMe ровно тогда, когда роутер доказал, что они нужны. И чем дольше работаешь, тем точнее кэш подстраивается под твою нагрузку: движок запоминает, какие эксперты трогают именно твои задачи.
Главный контракт: нехватка быстрой памяти меняет только скорость. Роутер и точность одинаковы, ответил эксперт из VRAM или с диска. Приложение не может молча получить "другую модель".
А теперь переверни картинку. В этой схеме VRAM - не комната, куда надо впихнуть всё. VRAM - кэш верхнего уровня. И владелец 16-24 GB внезапно оказывается богачом: dense-часть резидентно, сверху терабайтный склад экспертов на NVMe, а карта держит гигабайты самых горячих экспертов. Переменная окружения CUDA_EXPERT_GB задаёт, сколько гигабайт VRAM отдать под этот кэш.
Часть 3. Меню и честные цифры
Движок один, на каждое семейство - свой C-файл, фронтенд одинаковый: coli chat / serve / web.
Qwen3.6 35B-A3B. Контейнер int4 ~20 GB, на 24 GB карте влезает целиком. Замер проекта: CUDA-тир экспертного хранилища ускорил декод с 1.44 до 10.05 tok/s на двух 8 GB картах. Это уже рабочая скорость, не игрушка.
Qwen3.8-Flash-Next 125B (~65 GB на диске) - золотая середина между "влезло" и "прёт".
DeepSeek V4 Flash 284B. 137 GiB экспертов, один токен трогает 301 из них. Нативный чекпоинт читается без конвертации: fp4-эксперты и fp8-dense как есть.
GLM-5.2 744B - флагман: 372 GB, dense 9.9 GB резидентно, нативная MTP-спекуляция.
GLM-5.3-Flash 321B - то же семейство, но со зрением: читает картинки.
Inkling 975B. int4-эксперты плюс bf16-dense 49.4 GB; если столько RAM нет, встроенный инструмент сжимает dense до 15.3 GB за один проход.
Kimi K3 2.8T. Стримит MXFP4-эксперты прямо из оригинальных шардов Hugging Face, снапшот ~1.6 TB. Сначала проверь, сколько свободно на NVMe.
Честные скорости из документации проекта (end-to-end, не маркетинг):
25 GB RAM, холодный кэш: 0.05-0.1 tok/s. Это пол, с которого проект начинался, и его не прячут.
128 GB RAM, только CPU: ~1.8 tok/s на тёплом кэше.
Одна машина с ноутбучной RTX 5070 Ti: 1.07 tok/s.
6× RTX 5090, полная резидентность: 5.8-6.8 tok/s.
Вывод для владельца одной карты класса 4080/4090: на 744B это порядка токена в секунду. Не чат-скорость. Двигать эту цифру будут твой NVMe и RAM, а не VRAM.
Часть 4. Практика: выходные с колибри
Что нужно: NVMe с запасом (скорость стрима - это твоя скорость декода), RAM от 25 GB, любая ОС - release-архивы готовые, на Windows хватает coli.cmd.
Шаг 1. Начни с Qwen3.6. Контейнер int4-gs64 с Hugging Face (~20 GB). Прогони свой типовой промпт, запиши tok/s.
Шаг 2. Тот же промпт в LM Studio с GGUF-квантом той же модели. Запиши второе число. Это самый честный A/B выходного дня: два движка, одна модель, одно железо.
Шаг 3. Познакомься с планировщиком: coli plan покажет раскладку VRAM/RAM/диск под твою машину, coli doctor --deep прогонит префлайт по тензорам и шардам, coli tune измерит и сохранит быстрый профиль.
Шаг 4. Если зашло - GLM-5.2 (372 GB). Качай правильный контейнер: group-scaled gs64 с int8 MTP-головой (huggingface.co/mastouri/GLM-5.2-colibri-int4-g64-with-int8-mtp). Старые per-row int4 зеркала на 9 пунктов хуже по качеству и дают вечные циклы think-режима, а MTP-голова в int4 работает почти впустую: из её черновиков модель принимает от нуля до четырёх процентов, int8 - нормально. Эти грабли собраны сообществом в issue-трекере, не наступай повторно.
Шаг 5. Дашборд ./coli web стоит посмотреть отдельно. Там три вещи: шкала, куда модель разложила свои слои по памяти, разбор времени ответа по этапам и карта всех 19,456 экспертов - чем горячее эксперт, тем ярче он горит, а цветом показано, откуда он приехал. Первый раз в жизни видно, как физически думает MoE.
Ещё две грабли с фактами.
O_DIRECT даёт +34% декода на дисках с DRAM-кэшем, но на QLC и безбуферных может быть нейтральным или вредным. Не верь - мерь (DIRECT=1).
Второй SSD с копией модели подключается в полосу: движок измерит пропускную способность обоих и распределит экспертов по хэшу. Пара из 9 GB/s + 3 GB/s читает экспертов на треть быстрее, чем один быстрый диск. Если модель целиком не влезает - есть частичное зеркало: планер ранжирует шарды по твоей истории роутинга (.coli_usage) и раскладывает по бюджету места.