Архитектура: Потоковая передача экспертов (Expert Streaming)
Основная проблема запуска моделей уровня 744B параметров на CPU — нехватка памяти. Colibri решает её через разделение модели на две части:
- Плотная часть (Resident): ~17B параметров (включая attention, общие эксперты и эмбеддинги) хранятся в ОЗУ в квантованном виде int4. Это занимает всего 9.9 ГБ памяти.
- Маршрутизируемые эксперты (On-Disk): Оставшиеся ~727B параметров распределены по 21 504 экспертам (75 слоев MoE × 256 экспертов + голова MTP). Они хранятся на диске (~370 ГБ) и загружаются потоково по мере необходимости. Для ускорения используется LRU-кэш на уровне слоя и опциональное «горячее» хранилище.
Производительность и оптимизации
Движок написан на чистом C (один файл glm.c, ~2400 строк) без зависимостей от BLAS или Python во время выполнения. Реализованы специфичные для GLM-5.2 оптимизации:
- MLA Attention: Сжатый KV-кэш (576 float/токен вместо 32 768), что уменьшает объем данных в 57 раз.
- Speculative Decoding (MTP): Нативная поддержка много-токенного прогнозирования. При использовании головы MTP в int8 скорость составляет 2.2–2.8 токена за один проход (принятие черновиков 39–59%).
- Grammar-forced drafts: Возможность принудительного генерирования токенов на основе грамматики (GBNF) для JSON или структурированного вывода, что повышает эффективность до ~1.0 принятия черновиков.
- DSA Sparse Attention: Реализация «молниеносного индексатора» GLM-5.2, выбирающего топ-2048 ключей на слой.
Сравнение метрик (WSL2, 12 ядер, 25 ГБ RAM, NVMe)
| Метрика | Значение |
|---|---|
| Размер модели на диске (int4) | ~370 ГБ |
| Занимаемая ОЗУ (резидентная часть) | 9.9 ГБ |
| Время загрузки | ~30 секунд |
| Пиковое потребление RSS | ~20 ГБ (автоматически ограничено) |
| Стоимость чтения диска (холодный старт) | ~11 ГБ/токен (ограничение ~0.05–0.1 tok/s) |
| Скорость с MTP (теплый кэш) | 2.2–2.8 токена/forward |
Практическое применение и ограничения
Colibri демонстрирует, что запуск frontier-моделей возможен на оборудовании дешевле одного GPU H100. Однако производительность сильно зависит от скорости дисковой подсистемы. При холодном старте (отсутствие кэша экспертов в ОЗУ) скорость ограничена пропускной способностью NVMe (~1 ГБ/с случайного чтения).
Разработчики предупреждают: хотя чтение не изнашивает SSD, интенсивная работа может вызывать перегрев дисков и свопинг, если система исчерпает ОЗУ. Для стабильной работы рекомендуется использовать SSD с хорошим терморегулированием и следить за доступной памятью через флаг --ram.
Модель GLM-5.2 в формате int4 доступна на Hugging Face, а конвертер из FP8 в int4 позволяет скачивать чанки по 5 ГБ, не требуя 756 ГБ свободного места на диске одновременно.
Источник: Github ↗
