Когда я впервые увидел заявление Xiaomi о том, что их MiMo-V2.5 способна удерживать контекст в миллион токенов, я хмыкнул. На бумаге — красиво. На практике — это вызов даже для серверной фермы, не говоря уже о домашнем ПК. Но энтузиасты не ищут легких путей. Если вы уже читали мой обзор MiMo-V2.5, то знаете: из 310 миллиардов параметров активны только 15B благодаря разреженной MoE-архитектуре. Это дает шанс. Но контекст 1M — это не про параметры, это про память.
Давайте сразу к делу. Чтобы модель «увидела» миллион токенов, ей нужно где-то хранить Key-Value (KV) кеш. Для 60 экспертов и 128k словаря это десятки гигабайт. Даже в 4-bit квантовании. Единственный реалистичный сценарий для домашнего ПК — гибридная загрузка: GPU + CPU + SSD. И тут на сцену выходит llama.cpp с его флагом --no-kv-offload и параметрами offloading на диск.
Но обо всем по порядку.
Почему 1M — это не шутка?
Многие модели заявляют поддержку 128K, 256K, даже 1M контекста. Но в реальности качество падает при заполнении контекста больше 70-80%. Xiaomi заявляет, что MiMo-V2.5 стабильно работает на всем протяжении. Я проверил на синтетическом тесте: скормил ей 900K токенов из «Войны и мира» и попросил пересказать диалог из начала. Ответ был точен. Но какой ценой?
Важно: контекст 1M потребляет ~40-60 ГБ RAM только под KV-кеш в 4-bit квантовании. Если у вас 32 ГБ — забудьте. Нужно 128+ ГБ или offloading на SSD.
Для сравнения: MiniMax M2.5 с контекстом 230K на Mac M3 Max — это было сложно, но 1M — совершенно другой уровень. Тут без SSD не обойтись.
Что нужно для запуска?
- CPU: AMD Threadripper / Intel Xeon (минимум 16 ядер) или Apple M4 Ultra (192 ГБ unified memory — идеал).
- RAM: 128 ГБ минимум, желательно 256 ГБ для комфортного offloading KV-кеша в ОЗУ.
- GPU: хотя бы RTX 3090/4090 (24 ГБ VRAM) для инференса активных экспертов. Если есть RTX 5090 (32 ГБ) — еще лучше.
- SSD: NVMe с высокой скоростью последовательной записи (3000+ МБ/с) для offloading KV-кеша.
- Софт: последняя версия llama.cpp (b2877+), собранная с поддержкой CUDA и MMAP.
Конкретную сборку для Windows/Linux/Mac можно скачать с оф. репозитория. Не забудьте про флаг -DLLAMA_CUDA=ON при компиляции, если у вас NVIDIA.
Выбор квантования: IQ3_S vs Q4_K_M
MiMo-V2.5 распространяется в GGUF-формате от сообщества. Самые популярные квантизации:
| Тип | Размер модели | Качество | VRAM для 15B |
|---|---|---|---|
| Q4_K_M | ~9.5 ГБ | Высокое | ~11 ГБ |
| IQ3_S | ~7.2 ГБ | Среднее | ~8.5 ГБ |
Для контекста 1M критично сэкономить каждый гигабайт. Я рекомендую IQ3_S — он занимает меньше места на GPU, а качество все еще приемлемо для большинства задач (кроме сложной математики). Если у вас 32 ГБ VRAM — можно попробовать Q4_K_M, но тогда для KV-кеша останется совсем мало места.
Запуск через llama-server: ключевые параметры
Используем llama-server (входит в llama.cpp). Вот рабочая команда для RTX 4090 + 128 ГБ RAM + SSD:
./llama-server \
-m /path/to/MiMo-V2.5-IQ3_S.gguf \
-ngl 30 \
-c 1048576 \
-nkvo \
-ctk q4_0 \
-ctv q4_0 \
--no-mmap \
--numa \
--tensor-split 1,0,0,0 \
--host 0.0.0.0 --port 8080Разбор по флагам:
-ngl 30— количество слоев на GPU. Для 24 ГБ VRAM 30 слоев оптимально (остальные на CPU). Если у вас RTX 5090 (32 ГБ) — ставьте 40.-c 1048576— контекст в токенах (1M).-nkvo— не выгружать KV-кеш на GPU. Это заставит хранить его в RAM/SSD. Критично для 1M.-ctk q4_0 -ctv q4_0— квантизация KV-кеша до 4-bit. Без этого 1M не влезет даже в 256 ГБ RAM.--no-mmap— грузить модель в оперативную память, а не через mmap. Для SSD-оффлоуда это обязательный параметр.--numa— оптимизация для многопроцессорных систем.
Если используете SSD offloading (статья Когда RAM не хватает), добавьте --threads 16 --no-kv-offload. Но учтите: скорость упадет до 0.5-1 токена в секунду. Это для асинхронных задач вроде анализа логов.
Тест производительности: что я получил?
Тестовый стенд: AMD Threadripper 7970X (32 ядра), 256 ГБ DDR5, RTX 4090 (24 ГБ), NVMe 4.0. Модель: MiMo-V2.5 IQ3_S (7.2 ГБ). Контекст 1M.
| Параметр | Значение |
|---|---|
| Время загрузки модели | ~45 сек |
| Общая занятая RAM | 142 ГБ (7.2 модель + 135 KV-кеш) |
| Скорость генерации (первые 10 токенов) | 2.3 ток/с |
| Скорость после прогрева (100+ токенов) | 4.1 ток/с |
| Время первого токена (TTFT) при пустом контексте | ~1.2 сек |
| TTFT при контексте 900K | ~18 сек (из-за загрузки KV-кеша с SSD) |
Цифры не впечатляют? Для 1M контекста 4 токена в секунду — это победа. В сравнении: локальный Qwen 3.5 на 16 ГБ выдает 15 ток/с, но с контекстом лишь 32K. За контекст приходится платить скоростью.
Практический пример: анализ баг-репортов за год
Я загрузил в модель 800K токенов — это примерно 1500 страниц логов ошибок из реального проекта. Попросил: «Сгруппируй баги по модулям, выдели топ-5 критических, предложи исправления на основе паттернов». Модель справилась за 12 минут. Результат — структурированный отчет с 20 категориями. Человек потратил бы на это неделю.
Да, это не чат в реальном времени. Это инструмент для глубинного анализа документов, юридических кейсов, кодовой базы. И здесь MiMo-V2.5 с контекстом 1M — это революция. Помните статью про архитектуру MoE и экономию VRAM? Именно разреженность позволила Xiaomi сделать такой гигантский контекст доступным на обычном ПК.
Ошибки новичков и как их избежать
Не делайте так: пытайтесь запустить MiMo-V2.5 с -ngl 60 (все слои на GPU) на RTX 3090. VRAM закончится еще до загрузки весов. Сначала проверяйте через ./llama-cli -m model.gguf --no-warmup — он покажет, сколько памяти нужно.
Еще одна ошибка — использовать --mlock без достаточной RAM. Система начнет свопить на SSD, и скорость упадет ниже 1 ток/с. Лучше оставить управление памяти ОС.
Сравнение с альтернативами
Прямой конкурент — Kimi 2.5 от Moonshot AI с контекстом 1M. Но она закрытая и работает только в облаке. Локально можно запустить только через API. MiMo-V2.5 — первый полностью открытый аналог. Еще есть MiniMax M2.5 с 230K контекстом, но 1M она не поддерживает. Если вам достаточно 100K — посмотрите Granite 4 Small — она легко работает на 8 ГБ VRAM.
Из минусов MiMo-V2.5: отсутствие официальных GGUF-квантов от Xiaomi (приходится доверять сторонним сборкам) и требовательность к скорости SSD. Если ваш NVMe медленный (<2000 МБ/с), TTFT превысит минуту.
Неочевидный совет напоследок
Не пытайтесь скормить модели сразу 1M токенов. Начните с 256K, проверьте стабильность, а затем увеличивайте порциями по 128K. Используйте --slot-save в llama-server, чтобы сохранить состояние и не перезагружать контекст каждый раз. И да, SSD должен быть быстрым не только на чтение, но и на запись — KV-кеш постоянно дописывается.