Я давно слежу за развитием локальных LLM, но всегда упирался в одно и то же — либо модель маленькая и качество не устраивает, либо большая и не влезает в видеопамять. Всё изменилось когда я наткнулся на статью про MoE-модели и параметр -cmoe в llama.cpp.
Расскажу как я запустил Qwen3.6 35B-A3B на RTX 4070 12GB с 32GB RAM, настроил его как AI-ассистент для реального проекта в opencode, и почему теперь эта модель у меня работает постоянно.
Железо и ожидания
Моя конфигурация:
GPU: RTX 4070 12GB VRAM
RAM: 32GB DDR4
CPU: 12 физических ядер
OS: Windows 11 + WSL2 (Ubuntu)
Когда я впервые прочитал про Qwen3.6 35B-A3B, я был скептически настроен — 35 миллиардов параметров при 32GB RAM звучит как "не влезет". Но MoE архитектура меняет правила игры.
Почему MoE — это другая история
Обычные (Dense) модели активируют все параметры при генерации каждого токена. MoE (Mixture of Experts) модели устроены иначе: из всех "экспертов" (мини-подсетей) на каждом шаге активируется только небольшая их часть.
Qwen3.6 35B-A3B имеет 256 экспертов на каждом слое, но активирует только 8 routed + 1 shared — то есть реально считает примерно 3 миллиарда параметров на каждый токен, хотя общий вес модели 35B.
Это означает:
Скорость генерации как у маленькой 3B модели
Качество значительно выше за счёт специализации экспертов
Квант Q4_K_M весит всего 22GB — влезает в 32GB RAM
Настройка в LM Studio
Для запуска выбрал LM Studio — удобный GUI поверх llama.cpp. Скачал модель qwen/qwen3.6-35b-a3b квант Q4_K_M (22GB).
Ключевые настройки которые я подобрал:
Параметр |
Значение |
Зачем |
|---|---|---|
Передача на GPU (ngl) |
40 (макс) |
Все слои пытаемся отдать GPU |
Number of layers for MoE onto CPU |
40 |
MoE-веса остаются в RAM |
Flash Attention |
Включён |
Экономия памяти под контекст |
Размер пакета оценки |
8192 |
Быстрая обработка контекста |
Размер пула потоков ЦПУ |
10 |
Чуть меньше макс для стабильности |
Длина контекста |
65 536 |
Баланс качество/память |
Важный момент про ncmoe: логика немного контринтуитивна. Сначала параметром ngl=40 отдаём все слои на GPU, потом параметром ncmoe=40 говорим "но MoE-веса вернуть на CPU". В итоге на GPU остаются только лёгкие тензоры внимания (~6GB VRAM), а тяжёлые MoE-веса лежат в RAM.
До применения -cmoe модель требовала все 12GB VRAM и не влезала. После — занимает 6.2GB VRAM и комфортно работает.
Реальные замеры скорости
Из логов LM Studio при генерации:
eval time = 8228 ms / 347 tokens → 42 tokens/sec (TG)
42 токена/сек при генерации — для 35B модели отличный результат, текст появляется плавно без заметных пауз.
Скорость обработки контекста (PP) сильно зависит от размера запроса — от нескольких секунд на короткие вопросы до минуты при первом запросе с полным анализом кодовой базы. В обычном режиме работы (вопрос-ответ, правка кода) задержка практически не ощущается.
Чем дольше работаете в одной сессии — тем быстрее модель отвечает на новые сообщения, так как KV-кэш переиспользует уже обработанный контекст.
Подключение к opencode в WSL
Модель поднимает OpenAI-совместимый API на порту 1234. IP адрес хоста видно прямо в интерфейсе LM Studio в разделе Developer — поле "Reachable at" (на скриншоте: http://172.18.0.1:1234). Именно этот адрес использую для подключения из WSL.

# Проверить что модель отвечает curl http://172.18.0.1:1234/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen/qwen3.6-35b-a3b", "messages": [{"role": "user", "content": "Hello!"}] }'
В ответе видно reasoning_content — модель думает вслух перед каждым ответом. Для простого "Hello!" она потратила 243 reasoning-токена на анализ приветствия. Для серьёзных задач это большой плюс.
В opencode.json прописываю:
{ "$schema": "https://opencode.ai/config.json", "provider": { "lmstudio": { "npm": "@ai-sdk/openai-compatible", "name": "LM Studio (local)", "options": { "baseURL": "http://172.18.0.1:1234/v1" }, "models": { "qwen/qwen3.6-35b-a3b": { "name": "Qwen3.6 35B a3b (local)" } } } } }
Как модель работает с реальным проектом
Тестировал на своём проекте online-course-platform — микросервисная архитектура на FastAPI + React.
Анализ кодовой базы
Попросил: "Какие улучшения для проекта можешь предложить?"
Модель запустила explore-агент, сделала 173 вызова инструментов, реально прочитала весь код и выдала структурированный список из 23 улучшений с разбивкой по приоритетам
Создание GitHub Issues
Попросил создать детальные issues для найденных проблем. Модель:
Изучила существующие паттерны тестов в проекте (auth, course)
Написала детальные issues с конкретными названиями тестов, структурой файлов, критериями готовности
Создала их через
gh CLIпрямо в репозиторий
Пример issue для тестирования progress-сервиса содержал: структуру тестов, 21 конкретный тест-кейс с ожидаемыми HTTP-статусами, конфигурацию fixtures по аналогии с существующими сервисами. Не абстрактное "написать тесты", а конкретный план — можно посмотреть живой пример.
Качество ответов
По бенчмаркам Qwen3.6 35B-A3B показывает сильные результаты среди MoE моделей — SWE-bench Verified 73.4%, Terminal-Bench 2.0 51.5%, GPQA Diamond 86.0%. Особенно выделяется в agentic coding задачах, обгоняя Dense модели значительно большего размера.
На практике это подтверждается. Модель:
Правильно понимает контекст больших кодовых баз
Генерирует рабочий код без галлюцинаций несуществующих API
Сама исправляет ошибки когда bash возвращает ошибку
Хорошо работает с русским языком
Параметры температуры
Официальная документация Qwen рекомендует для coding задач: temperature=0.6, top_p=0.95. Это совпало с дефолтом LM Studio и на практике работает хорошо — ответы детерминированные, но не механические.
Итог
Qwen3.6 35B-A3B на RTX 4070 + 32GB RAM — это работающий вариант для разработчика который хочет мощный локальный AI-ассистент без облачных расходов и без отправки кода на внешние серверы.
MoE архитектура позволила запустить то, что раньше требовало минимум 80GB RAM. 42 токена/сек — это комфортная скорость для работы в реальном времени.
Если у вас похожее железо и вы ещё не пробовали — рекомендую. Особенно если работаете с кодом и хотите агентский режим через opencode или аналоги.
Железо для воспроизведения:
GPU от 8GB VRAM (проверено на RTX 4070 12GB)
RAM от 32GB (модель займёт ~22GB)
LM Studio последней версии
llama.cpp для более тонкой настройки через CLI
Ссылки:
LM Studio: lmstudio.ai
opencode: github.com/sst/opencode
Комментарии (30)

CiberAlex
22.04.2026 09:40На Radeon RX 9060 XT 16Gb, 32Gb ОЗУ (DDR4), CPU 6-core с параметрами из статьи скорость 17.5 т/с на пустом контексте
Если Number of layers for MoE onto CPU поставить в 0, то скорость уже 27 т/с почему-то. Я так понимаю инференс DDR4 сильно тормозит

foxb
22.04.2026 09:40Скорость выше, так как модель может поместиться в видеопамять GPU 16 ГБ против 12 ГБ.

iMic
22.04.2026 09:40Странно у меня (на i7 12700 + 9060 XT 16 GB + 64 GB DDR4) выше 22 т\с не поднимается - как бы я не крутил Number of layers for MoE onto CPU.
В итоге очередной раз плюнул и вернулся к GPT-OSS-20B - 86 т\с
Причём в обоих случаях бэкенд Vulkan оказывается быстрее родного ROCm (17 и 77 т\с).

DooKoo2
22.04.2026 09:40Ты tps показал на чистом контексте, когда заполнения контекста дойдет до 50-60 тысяч токенов скорость катастрофически упадет, будет 15-20 токенов максимум.

Moog_Prodigy
22.04.2026 09:40Прикольный лайфхак с ncmoe=40, раньше я его вообще чисто на cpu запускал, 5т\сек казалось чудом. А щас полетело ажник на 35т\сек (3060) , причем контекста навалил 200 000 в настройках, и ничего. Если контекста 64 000 сделать, vram занято всего 5,5 гб из 12, поэтому и решил поэкспериментировать. Сначала долго думает, потом "летает".

freelook27
22.04.2026 09:40спасибо за статью, но подключить к claude code, вместо opencode гораздо интересней) достаточно передать парочку переменных

ITDiver77
22.04.2026 09:40А в чём это "гораздо" проявляется?

VBDUnit
22.04.2026 09:40Я думаю речь о сообразительности. Всё таки опусосоннеты посуровей раз в 20, чем даже 122b/397b локальные модельки. Я тоже среди прочих гонял Qwen 3.6 35b a10b 4k_m. Она работает конечно как ракета, там под 10–15 строк в секунду вылетает. Но она, во‑первых на thinking может запросто потратить 10–30 секунд, а то и минуту, что немного портит впечатление от скорости, во‑вторых, может зациклиться, если ее заставлять читать какие‑нибудь консольные выводы при работе ffmpeg или установки пакетов питона. В‑третьих с некоторыми простыми задачами она тупо иногда не справляется. У 27b dense в этом плане получше конечно, но она в ~3 раза медленнее.
Я понимаю что можно взять другой рантайм, можно температуру покрутить и TopK, и ещё что‑нибудь, но когда ты практически решаешь задачу на это не хочется тратить время.
Локальные ЛЛМ на сегодняшний день, ИМХО про рутину и про бизнес‑логику, про установку настройку пакетов. Средние и сложные технические и/или нетривиальные задачи лучше им не давать, если нервы дороги.

alexxxdevelop1
22.04.2026 09:40Спасибо, как раз вовремя для меня, ищу подходящего локального ИИ-ассистента. Хотелось бы статью о том, как вы находите нужную вам модель среди тысяч других на huggingface. Если у меня видеокарта 4080, значит можно поставить модель помощнее, но как ее искать и как играться с параметрами?

VBDUnit
22.04.2026 09:40Самый простой путь — в LMStudio открыть окно скачивания моделей. Там как магазин приложений на смартфоне. Ищите штуки которые поместятся в комп, смотрите число лайков и скачиваний, описание. Нажимаете «Download» — качается в фоне, пока качается одна или несколько моделей можно использовать текущие.


alexxxdevelop1
22.04.2026 09:40Сейчас играюсь с параметрами модели из вашей статьи. По вашим параметрам работает хорошо. Но мне надо, чтобы наоборот модель занимала половину RAM и всю VRAM. А то какой смысл экономить VRAM, если видеокарта простаивает без дела, но при этом из-за забитой RAM я не смогу открыть много программ на компе. Снял галочку "Попробовать mmap()", получил что хотел, но модель уходит в бесконечное размышление над жизнью

VBDUnit
22.04.2026 09:40Я не автор если что)
mmap это вообще пакость. Она нужна вроде как чтобы модель быстрее стала доступна для использования даже пока все веса еще не загрузились, на деле только хуже делает и замедляет всё. На качество она влиять не должна.
Попробуйте всё запихнуть в GPU

То есть мы все слои пихаем в VRAM («Передача на GPU»), KVCache тоже туда. Всё что можно.
Длину контекста можно поставить любую, лишь бы в VRAM влезло. Для комфортной работы лучше 65к или 128к, хотя выше 48к у подобных моделей может начать ухудшаться мышление, особенно на низкой квантизацией (4K_M передаёт привет).

alexxxdevelop1
22.04.2026 09:40А точно не автор, я не обратил внимание. Но с выключенной галочкой вообще не работает. Если галочку включить, то бодренько отвечает и пишет код

rAnto Автор
22.04.2026 09:40Попробуйте уменьшить параметр «Number of layers for MoE onto CPU» (ncmoe). Например, поставьте 20 вместо 40 — тогда половина MoE-весов уйдёт на GPU, загрузив VRAM, а в RAM освободится место. У меня на 12GB VRAM комфортно работает значение 25.


alexxxdevelop1
22.04.2026 09:40У меня чем меньше ставишь ncmoe, тем больше забивается RAM вплоть до 98%. При значении 0 обе RAM и VRAM забиты полностью. Самое комфортное значение получилось максимальное 40 - RAM 80% и VRAM 50%
Модель конечно удивительная. Может все. Работает даже лучше некоторых коммерческих аналогов (по качеству, не по скорости). Завтра буду спаривать ее с OpenClaw

lavandil_by
22.04.2026 09:40LM Studio

У меня с указанными параметрами VRAM осталась занята и выходит в лучшем случае 16т/с на RTX 4070 Ti (12Gb). Подскажите пжл что я делаю не так?

rAnto Автор
22.04.2026 09:40Судя по скриншоту, у вас не выставлен параметр “Number of layers for MoE onto CPU” (ncmoe) — из-за этого все MoE-веса сидят на GPU, VRAM забита под завязку и модель упирается в пропускную способность видеопамяти.
Попробуйте поставить ncmoe в диапазоне 25–40

lavandil_by
22.04.2026 09:40Благодарю, не увидел этот параметр внизу, получилось 54т/с на том же запросе.

Lada-Priora
22.04.2026 09:40Автору спасибо за статью, давно искал что-то похожее. Не знал что есть ideшки которые могут с локальными моделями работать. В общем попробовал настроить как у вас, но что-то не пошло. Lm studio стоит, модель загружена и работает через нее же. Сервер запущен на http://127.0.0.1:1234, есть opencode desktop и vs code расширение, но ни там ни там не смог приконектиться. Ошибки такие: Unexpected endpoint or method. (POST /chat/completions). Returning 200 anyway. Причем запросы идут на сервер.
Джисонка как у вас. Джисонку положил в opencode.json файл в новую папку. Эту же папку открываю через vs code.{
"$schema": "https://opencode.ai/config.json",
"provider": {
"lmstudio": {
"npm": "@ai-sdk/openai-compatible",
"name": "LM Studio (local)",
"options": {
"baseURL": "http://127.0.0.1:1234/v1"
},
"models": {
"qwen/qwen3.6-35b-a3b": {
"name": "Qwen3.6 35B a3b (local)"
}
}
}
}
}

slabnoff
22.04.2026 09:40Спасибо за подсказку!
У меня lm studio через llmster на домашнем сервере (Xeon 2690v4, 64 gb RAM, 5060 ti 16 gb). Попробовал поиграться ключами аналогично вам, не взлетело.
Однако как второй вариант у меня стоит сам llama.cpp без оберток. Включил moe на cpu и квантование кэша. В итоге с контекстом 260000 получил около 36 токенов/с
Строка на запуск (вдруг кому-то надо будет, пока на отладке "гажу" в /root):
/root/llama.cpp/build/bin/llama-server -m “/root/.lmstudio/models/lmstudio-community/Qwen3.6-35B-A3B-GGUF/Qwen3.6-35B-A3B-Q4_K_M.gguf” --host 0.0.0.0 --port 1234 -c 240000 -ngl 99 -t 16 --cpu-moe --cache-type-k q8_0 --cache-type-v q8_0 -b 1024
А как сервис llama.cpp отконфигурирована так:[Unit] Description=llama-server for Qwen3.6-35B-A3B-Q4_K_M.gguf After=network.target
[Service] Type=simple User=root ExecStart=/root/llama.cpp/build/bin/llama-server -m “/root/.lmstudio/models/lmstudio-community/Qwen3.6-35B-A3B-GGUF/Qwen3.6-35B-A3B-Q4_K_M.gguf” --host 0.0.0.0 --port 1234 -c 240000 -ngl 99 -t 16 --cpu-moe --cache-type-k q8_0 --cache-type-v q8_0 -b 1024 Restart=on-failure RestartSec=10
[Install] WantedBy=multi-user.target
Gedeonych
Спасибо за статью и за некоторые метрики. Хочу задать вопрос. Есть ли большое отличие чисто по субъективным ощущениям (можно без метрик, интересно именно пользовательское описание), по сравнению со стандартной работой с "полноценным" Qwen через веб-интерфейс? И насколько оно большое?
Smartor
Я не автор, но имею что сказать:)
Через веб интерфейс у вас работа в стиле копи-паст, а при работе в программе типа opencode и подобных, нейросеть сама пишет код в файлы, сама тестирует и исправляет, вам только руководить процессом и исправлять косяки, опять же через нейросеть, возможно другую:)
Когда нейросеть работает с кодом напрямую, это даёт результат в десятки раз быстрее, чем работать через веб чат. Но в таком режиме нужно озаботиться инструкциями для нейросети, бэкапами, спецификациями, скиллами, промтами, в общем всем тем, чем забит Хабр в последние месяцы.
Насёт разницы локальной модели с полноценной Qwen3.6 Plus, это небо и земля. Думаю, что даже бесплатные модели, которые идут в комплекте с Opencode, будут как минимум не хуже локально запущенной модели с зажатыми лимитами на окно памяти и во всяком случае удобнее для итеративного использования.
Роль локальной генерации - это относительно простые задачи.
ITDiver77
Даже бесплатные это сильно. Так там м2.5 в бесплатных, который далеко не в категории "даже бесплатный". По мне так существенно сильнее дипсик 3.2
Но лимиты на бесплатной - слёзы. Немного попробовать. И в целом это логично))
ontop
Думал тоже поставить протестировать локальную модель, потом сравнил по тестам все они проигрывают бесплатной в Github Copilot GPT5 xhigh и Claude Haiku 4.5.
Наверное смысл такой модели только в одном, сохранить информацию от третьих лиц, так как уже были примеры, когда человек скормил ChatGPT корп. код, который потом стал общедоступным.
В целом поставить такую машину для предприятия где этого никогда не было, будет полезно, потому это все происходящее скорей большой плюс.
SanyaZ7
Для достижения хорошего качества и полноты ответа эта модель много рассуждает, поэтому ждать придется. По 5+ минут рассуждений даже на сравнительно простые вопросы на похожей конфигурации ПК.