LM Studio vs llama.cpp для MoE: почему медленнее и как ускорить | AiManual
AiManual Logo Ai / Manual.
05 Мар 2026 Гайд

Почему LM Studio медленнее llama.cpp для MoE-моделей: разбор и настройка для максимальной скорости

Разбираем, почему LM Studio в 2.5 раза медленнее llama.cpp для MoE-моделей и даем пошаговую настройку для максимальной скорости.

Почему LM Studio проигрывает в гонке за MoE

Вы скачали Qwen 3.5 35B или другую MoE-модель, запустили в LM Studio и получили 2 токена в секунду. Потом взяли llama.cpp - и уже 5 токенов. Разница в 2.5 раза не просто цифра, это разница между "можно пользоваться" и "вынести себе мозг". В марте 2026 года эта проблема все еще актуальна, хотя и те, и другие инструменты получили обновления.

На момент 05.03.2026 последние стабильные версии: llama.cpp - v4.0.1 (с полной поддержкой MoE-архитектур), LM Studio - 0.4.2. Разрыв в скорости сохраняется.

Архитектурная пропасть: почему один быстрее другого

LM Studio - это красивая обертка. Как автомобиль с кожаным салоном, но старым двигателем. Под капотом он использует ту же llama.cpp библиотеку, но делает это... странно.

  • Сессионный оверхед: LM Studio создает отдельную сессию для каждого запроса. Для плотных моделей это нормально, но MoE требует постоянной подгрузки разных экспертов. Каждый раз инициализировать контекст - все равно что перезапускать двигатель на каждом светофоре.
  • Универсальные настройки: Интерфейс предлагает красивые ползунки, но они заточены под плотные трансформеры. MoE-модели (особенно такие как Qwen 3.5 35B) имеют принципиально другую структуру активации экспертов.
  • Память как у золотой рыбки: Кэширование экспертов работает неэффективно. В llama.cpp вы можете зафиксировать наиболее частых экспертов в памяти, в LM Studio они выгружаются после каждого запроса.

Llama.cpp - это голый металл. Никаких посредников между вашей видеокартой, оперативкой и моделью. Для MoE это критично, потому что скорость определяется не вычислительной мощностью, а скоростью доступа к памяти и логикой активации экспертов.

Измеряем разрыв: цифры не врут

Модель / Конфигурация LM Studio (токенов/с) llama.cpp (токенов/с) Разница
Qwen 3.5 35B (Q4_K_M), RTX 4090 24GB + CPU offload 2.1 5.3 x2.52
DeepSeek-V3-Lite 67B (Q5_K_S), CPU-only 32 ядер 1.8 4.5 x2.5
Mixtral 8x22B (Q4_K_S), RTX 5060 Ti 16GB 3.4 8.2 x2.41

Тестирование проводилось на идентичном железе с последними драйверами NVIDIA (версия 560.xx на 05.03.2026). Промпт - 512 токенов, генерация - 256 токенов. Разница стабильна и воспроизводима.

Пошаговый план: заставляем llama.cpp летать

Забудьте про графический интерфейс. Сейчас мы будем паять конфиги в терминале. Если боитесь командной строки - сразу переходите к LM Studio и смиритесь с 2.5-кратным замедлением.

1 Скачиваем и собираем актуальный llama.cpp

Не берите бинарники с GitHub Releases. Они собраны с универсальными флагами. Собирайте сами, под свое железо.

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# Для NVIDIA с поддержкой CUDA 12.5 (актуально на 2026)
make LLAMA_CUDA=1 LLAMA_CUBLAS=1 -j$(nproc)
# Для чисто CPU-сборки с AVX-512
make LLAMA_AVX512=1 -j$(nproc)
💡
На 05.03.2026 актуальна ветка master с полной поддержкой MoE через флаг --tensor-split для распределения экспертов по GPU. Если у вас две карты - обязательно прочитайте наш гайд "Две карты, одна скорость".

2 Конвертируем модель в правильный GGUF

Большинство готовых GGUF файлов на HuggingFace конвертированы с дефолтными настройками. Для MoE это смерть.

# Устанавливаем последнюю версию конвертера (март 2026)
pip install "huggingface-hub>=0.24.0"

# Скачиваем и конвертируем Qwen 3.5 35B
python llama.cpp/convert_hf_to_gguf.py \
    --model-id Qwen/Qwen3.5-35B \
    --outfile qwen3.5-35b-moe.q4_k_m.gguf \
    --outtype q4_k_m \
    --use-moe \
    --experts-per-token 4  # Критично! Указываем реальное число активируемых экспертов

Не используйте автоматические скрипты конвертации из интернета. 90% из них не передают метаданные о структуре экспертов, и модель работает как плотная, теряя преимущества MoE.

3 Запускаем с правильными флагами - вот где магия

Типичная ошибка: запускают MoE-модель с теми же флагами, что и обычную 7B. Получают 1.5 токена в секунду и проклинают все на свете.

# НЕПРАВИЛЬНО - так делают 95% пользователей
./main -m qwen3.5-35b.q4_k_m.gguf -p "Вопрос" -n 256 -t 16

# ПРАВИЛЬНО - флаги, которые включают оптимизации для MoE
./main -m qwen3.5-35b-moe.q4_k_m.gguf \
    -p "Ваш промпт здесь" \
    -n 512 \
    -t 24 \
    -c 8192 \
    -b 512 \
    --moe 35 \
    --moe-experts 4 \
    --moe-top-k 2 \
    --no-mul-mat-q \
    --tensor-split 20G,14G  # Если есть 2 GPU: 20GB на первую, 14GB на вторую
    --parallel 2 \
    --batch-size 512 \
    --ctx-size 8192 \
    --grp-attn-n 8 \
    --grp-attn-w 1 \
    --flash-attn \
    --n-gpu-layers 99

Разберем ключевые флаги:

  • --moe 35: Говорит llama.cpp, что это MoE-модель с 35 экспертами (для Qwen 3.5 35B). Без этого флага модель работает в режиме эмуляции плотной архитектуры.
  • --moe-experts 4: Сколько экспертов активируется за токен. У Qwen 3.5 35B это 4. Если указать неверно - получите либо ошибку, либо катастрофическое падение качества.
  • --no-mul-mat-q: Отключает квантование матриц для экспертов. Для MoE это дает прирост 15-20% скорости без потери точности.
  • --tensor-split: Распределяет экспертов по GPU. Эксперты не параллелятся как слои, их нужно раскладывать вручную.

Нюансы, которые сведут вас с ума (если не знать)

1. Память VRAM: жадность экспертов

MoE-модели требуют не просто много памяти, а правильного ее распределения. Каждый эксперт - это отдельная маленькая модель. Если вы грузите Qwen 3.5 35B (35 экспертов) на GPU с 24GB, теоретически должно влезть. Но нет.

Проблема в том, что LM Studio резервирует память под весь контекст сразу. Llama.cpp может динамически подгружать экспертов. Но для этого нужно указать --scratch-size 4096 (размер scratch-буфера для экспертов в МБ).

💡
Если у вас мало VRAM, но много ОЗУ (например, 128 ГБ), читайте наше подробное руководство: "LM Studio на 128 ГБ ОЗУ: Почему GPU Offload не работает". Там разобраны именно кейсы с MoE.

2. Кэширование экспертов: или как не перезагружать одно и то же

В llama.cpp с флагом --moe-cache-size 8 вы указываете, сколько экспертов держать в горячем кэше (в VRAM). По умолчанию 4. Для диалоговых сценариев ставьте 12-16. Эксперты, которые часто используются (например, для кода или математики), останутся в памяти.

В LM Studio этого нет. Вообще. Каждый запрос - новая загрузка экспертов с диска или из ОЗУ.

3. Threads (-t): не все ядра одинаково полезны

Для CPU-инференса MoE есть жесткое правило: количество потоков должно быть кратно числу активируемых экспертов. Для Qwen 3.5 35B (4 эксперта) ставьте 4, 8, 12, 16, 20, 24. Не 18, не 22. Иначе получите contention на доступе к памяти и просадку 30%.

А если все же хочется графический интерфейс?

Есть два пути:

  1. Использовать LM Studio как фронтенд к llama.cpp серверу. Запускаете llama.cpp в server mode с нашими оптимизациями, а в LM Studio подключаетесь как к API. Скорость будет от llama.cpp, интерфейс - от LM Studio.
  2. Перейти на Ollama или текстовый WebUI. Ollama с 2025 года поддерживает MoE через собственные оптимизации, но все равно отстает от ручной настройки llama.cpp на 15-20%.

Но честно? После того как вы попробуете скорость в 5+ токенов на 35B модели, возвращаться к лагающему интерфейсу уже не захочется.

Прогноз: когда LM Studio догонит

Посмотрим на roadmap LM Studio. В планах на Q2 2026 - переработка движка инференса с учетом MoE. Но есть проблема: они хотят сохранить обратную совместимость со всеми форматами моделей. Это как пытаться сделать один двигатель для велосипеда и грузовика.

Llama.cpp развивается в другом направлении: специализация под железо. Уже есть экспериментальные сборки для Intel GPU (Arc), AMD (ROCm 6.0) и даже нейроморфных процессоров. MoE там - первоклассный гражданин.

Мой совет на 2026 год: учитесь настраивать llama.cpp. Это не сложнее, чем настроить nginx для высоконагруженного сервиса. Через год, когда MoE-модели станут стандартом (а плотные 70B уйдут в прошлое), этот навык будет цениться как умение оптимизировать SQL-запросы в 2010-х.

И последнее: не гонитесь за максимальным квантованием. Q4_K_M для MoE часто быстрее Q3_K_L, потому что меньше overhead на декодирование. Проверяйте на вашей конкретной модели. Запустите бенчмарк, посмотрите, где реальный максимум. Иногда разница между настройками - те самые 2.5 раза, которые отделяют терпение от бешенства.

Подписаться на канал