← Все статьи
2026-04-24 08:02 · 🌐 СНГ (tech/AI)

Ollama в 3 раза медленнее llama.cpp: как выжать максимум из локальной модели

Запустить локальную LLM через Ollama — просто, но за удобство платишь скоростью: на MoE-моделях llama.cpp генерирует токены в 3 раза быстрее. А стандартный квант Q4_K_M, который грузится по умолчанию везде, давно устарел.

Ollama в 3 раза медленнее llama.cpp: как выжать максимум из локальной модели

Тест на RTX 4060 16 ГБ с моделью Qwen3.6-35B-A3B: Ollama выдаёт 16 t/s при контексте 4K, llama.cpp с квантом UD-Q4_K_XL45 t/s. Разрыв 2,8×. При контексте 32K Ollama падает до 11 t/s, llama.cpp остаётся быстрее в 3,2 раза. При этом оба инструмента использовали все 16 ГБ видеопамяти — дело не в железе.

Контекст

Ollama и LM Studio — стандартный вход в локальные LLM для большинства пользователей. Установил, запустил, работает. Но под капотом Ollama использует движок GGML из llama.cpp, при этом не активирует ряд ключевых оптимизаций. Для Dense-моделей разница незначительна, но для MoE-архитектур — существенна.

MoE (Mixture of Experts) — это архитектура, при которой во время генерации одного токена активируется только часть параметров. Например, у Qwen3.6-35B-A3B: 35B — общий объём параметров, A3B — активных только 3B. Это даёт скорость, но создаёт «дыры» в нагрузке на GPU: если разреженные тензоры попали на видеокарту, она простаивает.

llama.cpp автоматически распознаёт MoE-модель и переключается в режим ncmoe (n-cpu-moe): выгружает не целые слои, а точечно — все тензоры Внимания на GPU, а эксперты распределяются между CPU и GPU. Результат: эффективность GPU 100% вместо 30% в стандартном режиме ngl, который Ollama использует для любых моделей без исключения.

Аналитика

Проблема не только в скорости. Стандартный квант Q4_K_M, который грузится по умолчанию в Ollama и LM Studio, создаётся по статичной схеме квантования, разработанной несколько лет назад. Тесты по метрике KLD (Kullback-Leibler divergence, измеряет деградацию относительно оригинала BF16) показывают: классический Q4_K_M по качеству соответствует кванту UD-Q3_K_XL, который весит на 4,4 ГБ меньше. То есть пользователь получает модель с качеством Q3, думая что запускает Q4.

Динамические кванты — UD-серия от Unsloth, кванты от Ubergarm и Bartowski — работают иначе: каждый слой квантуется индивидуально, тензоры Внимания (attn) квантуются слабее или сохраняются ближе к оригиналу, общие эксперты в MoE — в Q6/Q8, а роутинговые — агрессивнее. Калибровочный датасет imatrix определяет, какие блоки «откликаются» на реальные задачи — они квантуются мягче.

Отдельного внимания заслуживает история форка: ik_llama.cpp — проект автора K-квантов и i-квантов, который ушёл из основного llama.cpp и продолжает разработку SOTA-квантов самостоятельно. Его IQK-кванты весят меньше стандартных при лучшем качестве и скорости деквантования. Это важно для тех, кому не хватает нескольких ГБ, чтобы вместить модель целиком в VRAM.

Кейсы применения в бизнесе

B2B-SaaS стартап с локальным AI-ассистентом: если продукт предполагает обработку длинных документов (контракты, отчёты, переписка), переход с Ollama на llama.cpp с квантом UD-Q4_K_XL даёт троекратный прирост скорости ответа без апгрейда железа. На контексте 32K — критично для RAG-пайплайнов. Сервер поднимается как OpenAI-compatible API, интеграция в существующий стек — один параметр в конфиге.

Корпорация с legacy-инфраструктурой и требованиями к приватности: данные не покидают периметр, inference на внутреннем сервере. llama.cpp поддерживает также Anthropic Messages API, то есть можно подключить Claude Code или любой агент без изменения кода. Режим --models-dir позволяет держать несколько моделей и переключаться на лету.

SMB и локальный бизнес в КР/СНГ: модель Qwen3.6-35B-A3B в кванте UD-Q4_K_XL влезает в 24 ГБ RAM при работе без GPU — подходит для офисного сервера без дискретной видеокарты. Скорость ниже, но для задач суммаризации, классификации, генерации шаблонных текстов — приемлемо. Стоимость: разовая закупка железа против ежемесячной подписки на API.

Кейсы в личной жизни

Разработчик: llama.cpp запускает OpenAI-compatible API на localhost, который подхватывает любой IDE-плагин или агент (OpenCode, Qwen Code и другие). Переключение с Ollama занимает 15 минут: скачать portable-архив, выбрать UD-квант на HuggingFace, запустить llama-server с нужным контекстом. Скорость генерации кода на RTX 4060 вырастает с 16 до 45 t/s.

Контент-мейкер и фрилансер: длинный контекст (32K+) позволяет загрузить весь черновик статьи, транскрипт видео или переписку с клиентом и работать с ним без потери нити. При этом квант UD-Q2_K_XL при том же весе превосходит по качеству IQ2_M — то есть можно запустить более крупную модель на том же железе.

Исследователь и студент: llama.cpp через параметр -c N позволяет точно управлять размером контекста и через CUDA_VISIBLE_DEVICES — распределять нагрузку между несколькими GPU. Web-клиент на порту 8080 включает превью HTML-кода, настройку сэмплинга и статистику генерации в реальном времени.

Как применить сегодня

  • Скачайте portable llama.cpp с GitHub ggml-org/llama.cpp/releases: CUDA 12 для Nvidia (+ отдельный архив DLL), Vulkan для AMD/Intel.
  • На HuggingFace найдите нужную модель, в строке поиска добавьте «unsloth» — выбирайте кванты с префиксом UD и суффиксом XL вместо стандартного Q4_K_M.
  • Запустите: llama-server.exe -hf unsloth/Qwen3.6-35B-A3B-GGUF:UD-Q4_K_XL -c 32000 — сервер сам определит MoE и включит ncmoe.
  • Подключите любое приложение к :8080/v1 (OpenAI API) или используйте Anthropic Messages API для Claude Code.
  • Если VRAM не хватает — попробуйте кванты ik_llama.cpp (IQK-серия): меньший размер при лучшем качестве, особенно полезны на моделях 30B+.
← Все статьи