PowerShell скрипт для автоматической настройки llama.cpp под MoE модели | AiManual
AiManual Logo Ai / Manual.
22 Мар 2026 Инструмент

Автоматизация настройки llama.cpp для MoE-моделей: PowerShell-скрипт для поиска оптимальных nCpuMoe и batch size

Готовый скрипт для автоматического подбора nCpuMoe и batch size в llama.cpp для MoE моделей типа Qwen 3.5 MOE. Экономит часы ручной настройки.

Ручной подбор параметров в llama.cpp - это боль. Особенно для MoE

Запускаешь Qwen 3.5 MOE 40B в llama.cpp v4.1.2, видишь параметры --nCpuMoe и --batch-size, и начинается ад. Выставить мало - модель ползет как улитка. Выставить много - получаешь ошибку "out of memory" и краш процесса. Ты тратишь полдня, перебирая значения вручную, а потом пишешь табличку в Excel. Знакомо?

В марте 2026 года это уже не проблема. Я нашел (и немного доработал) PowerShell-скрипт, который делает всю черновую работу за тебя. Он методом бинарного поиска находит максимальные значения nCpuMoe и batch size, которые твое железо может переварить без падений.

💡
nCpuMoe в llama.cpp - это количество CPU-потоков для вычислений в экспертах MoE-модели. Batch size - размер пачки токенов для параллельной обработки. Их оптимальные значения зависят от конкретного железа, версии llama.cpp и даже фазы луны. Шутка. Но почти.

Что делает этот скрипт и почему это гениально просто

Скрипт не требует глубоких знаний PowerShell. Он делает три вещи:

  1. Запускает llama.cpp с разными значениями nCpuMoe (от минимального к максимальному) и смотрит, не упадет ли процесс.
  2. Проверяет разные batch size для найденного оптимального nCpuMoe, чтобы выжать еще немного скорости.
  3. Выдает готовую команду для запуска твоей модели с идеальными параметрами.

Весь процесс занимает 5-10 минут вместо твоих трех часов ручного тыкания. Скрипт использует бинарный поиск - тот же алгоритм, что и в игре "угадай число", только здесь он угадывает настройки для твоего GPU и CPU.

А что там с альтернативами? LM Studio и прочие обертки

LM Studio, Ollama и прочие графические обертки над llama.cpp хороши для новичков. Но когда дело доходит до тонкой настройки MoE-моделей, они безнадежно отстают. Они либо вообще не показывают параметры вроде nCpuMoe, либо предлагают слайдеры с шагом, который не подходит для твоего железа.

В статье "Почему LM Studio медленнее llama.cpp для MoE-моделей" мы разбирали, как эти обертки добавляют свои накладные расходы. Этот скрипт работает напрямую с llama.cpp, без посредников.

Важно: скрипт написан для Windows и PowerShell. Если ты на Linux или macOS, тебе придется переписать его на bash. Или использовать WSL. Но в 2026 году большинство энтузиастов все еще сидят на Windows, потому что драйвера для новых видеокарт там выходят быстрее.

Как это работает изнутри: алгоритм без магии

Скрипт не просто перебирает значения подряд. Он умный. Сначала он определяет максимальное количество потоков на твоем процессоре. Потом запускает llama.cpp с nCpuMoe, равным половине от максимума. Если не падает - увеличивает. Если падает - уменьшает.

То же самое с batch size. Но здесь есть нюанс: batch size сильно зависит от доступной VRAM. Для MoE-моделей вроде Qwen 3.5 MOE 40B на RTX 4090 с 24 ГБ максимальный batch size может быть 512, а на RTX 4070 с 12 ГБ - только 128. Скрипт это учитывает.

Параметр Что делает Типичный диапазон (на 2026 год)
nCpuMoe Число CPU потоков для экспертов MoE. Больше - быстрее, но до предела. 4-16 для 8-ядерных CPU, 8-32 для 16-ядерных
batch size Сколько токенов обрабатывать за раз. Влияет на использование VRAM. 32-1024, зависит от модели и видеокарты

Пример запуска: от хаоса к порядку

Представь, у тебя есть свежий билд llama.cpp от марта 2026 года, модель Qwen3.5-MOE-40B-Q4_K_M.gguf и желание получить максимальную скорость. Без скрипта ты бы делал так:

./main -m Qwen3.5-MOE-40B-Q4_K_M.gguf --nCpuMoe 8 --batch-size 256 -p "Привет"
# Смотришь, не упало ли. Потом меняешь на 16...
# Потом на 12... Потом batch size меняешь...
# Через 20 запусков начинаешь ненавидеть все MoE-модели.

Со скриптом все проще. Запускаешь его, указываешь путь к llama.cpp и модели, и идешь пить кофе. Через 7 минут получаешь отчет:

Оптимальные параметры найдены! nCpuMoe: 14, batch-size: 512. Используй команду: ./main -m model.gguf --nCpuMoe 14 --batch-size 512 --threads 10

Обрати внимание на --threads 10. Скрипт часто находит, что не все потоки CPU нужно отдавать под MoE. Часть лучше оставить для других операций модели. Это перекликается с нашими выводами из статьи про баг с --threads -1. Автоматическое определение потоков - зло.

Кому этот скрипт спасет жизнь (или хотя бы сэкономит время)

  • Энтузиастам, которые тестируют разные MoE-модели. Каждая модель - Qwen 3.5 MOE, GPT-OSS 120B, Granite 4 Small - требует своих настроек. Скрипт избавляет от ритуала "подбора заклинаний" для каждой.
  • Разработчикам, которые делают свои форки llama.cpp. После каждого изменения в коде нужно проверять, не сломалась ли производительность. Скрипт дает воспроизводимые результаты.
  • Владельцам нестандартного железа. У тебя два процессора в системе или необычная видеокарта? Ручной подбор превращается в квест. Скрипт проходит его за тебя.

Если ты только начинаешь с llama.cpp и MoE, сначала прочитай базовый гайд по аргументам llama.cpp. Потом вернись сюда за автоматизацией.

А что насчет ограничений? Скрипт не волшебная палочка

Скрипт не увеличит твою VRAM и не разгонит процессор. Если у тебя 8 ГБ VRAM, а модель требует 10, никакой nCpuMoe не поможет. Придется либо квантовать сильнее, либо использовать CPU-only режим, как в нашем руководстве по CPU-инференсу.

Еще скрипт не учитывает температуру процессора. Он находит параметры, при которых llama.cpp не падает от нехватки памяти. Но если твоя система перегревается и троттлит через 10 минут работы - это твои проблемы. Мониторь температуру сам.

Где взять этот скрипт и как его запустить

Скрипт выложен на GitHub. Ищи по ключевым словам "llama.cpp moe optimizer powershell". На март 2026 года актуальная версия - 2.0, с поддержкой новых флагов llama.cpp v4.1.x.

Базовая команда запуска выглядит так:

.\Optimize-MoeParams.ps1 -LlamaPath ".\main.exe" -ModelPath ".\model.gguf" -TestPrompt "Hello"

Скрипт попросит подтвердить, что ты понимаешь риски (он будет нагружать твою систему по полной), и начнет работу. В процессе он будет выводить текущие тестируемые значения и результаты - "Success" или "Failed".

Закрой все лишние приложения перед запуском. Скрипт загрузит твой CPU и GPU на 100%. Если в фоне работает браузер с 50 вкладками, результаты будут неточными.

Что дальше? Будущее автоматической настройки llama.cpp

Этот PowerShell-скрипт - только начало. К концу 2026 года, я уверен, в саму llama.cpp встроят подобный авто-тюнер. Или появится отдельная утилита, которая будет анализировать твое железо, скачивать подходящую квантованную модель и настраивать ее одним кликом.

Но пока этот скрипт - лучшее, что есть для Windows-пользователей. Он превращает многочасовую рутину в фоновый процесс. Включил, подождал, получил команду, запустил модель с максимальной скоростью. И забыл про геморрой с подбором параметров.

P.S. Если скрипт найдет для твоего Ryzen 9 7950X оптимальный nCpuMoe 14, а не 32 - не удивляйся. Помни историю с тормозящими MoE-моделями: больше потоков не всегда значит быстрее. Иногда меньше - значит оптимальнее.

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