AI · 27 сентября 2026, 14:26

Автор Habr разогнал локальный Qwen на двух RTX 3060 почти в четыре раза

Пользователь Habr показал, как на двух RTX 3060 12 ГБ разогнал локальный запуск Qwen3-27B с 9 до 40 токенов/с при 128K контекста. Ключом стали тензорное распараллеливание и встроенный MTP от Unsloth.

Автор Habr подробно разобрал оптимизацию запуска модели Qwen3-27B в формате Q4_K_M на домашнем ПК с процессором Core i7-4790, 32 ГБ DDR3 и двумя RTX 3060 по 12 ГБ (24 ГБ VRAM суммарно), без NVLink и CUDA P2P. Цель — получить приватную альтернативу облачным Codex и Claude Code, не жертвуя качеством модели и длиной контекста.

В исходной конфигурации (layer split, Q4 KV-кэш, 131072 токенов) скорость генерации на длинном контексте падала примерно до 9 токенов/с. Переход с layer split на tensor split без смены модели и квантизации почти удвоил скорость: на ~120K контекста — с 8,89 до 16,09 токенов/с, на ~65K — с 11,35 до 20,27.

Дальнейшее ускорение дал встроенный Multi Token Prediction (MTP) в сборке Unsloth Qwen3-27B-UD-Q4_K_M, где черновые MTP-тензоры находятся в одном файле с основной моделью. Это позволило одновременно уместить в 24 ГБ VRAM полные 128K контекста, tensor split, Q8 KV-кэш и self-MTP. В контролируемом тесте с 120K входных токенов итоговая скорость достигла 28,16 токенов/с (рост в 3,17 раза к исходному режиму), а в реальной сессии OpenCode средняя скорость по логам составила 39,6 токенов/с.

Отдельно подобрана глубина speculative decoding: в синтетическом тесте выигрывал n-max=1, но в реальном OpenCode n-max=3 оказался быстрее примерно на 22% за счёт более длинных принимаемых цепочек в типичной кодовой нагрузке.

Попутно проверены и отброшены несколько гипотез: NCCL на связке без P2P оказался на 7% медленнее встроенного механизма, а попытка переиспользовать буферы основной модели и внешнего MTP через ветку QVAC не дала результата из-за разных backend-объектов.

Качество проверено двумя smoke-тестами: long-context retrieval (30/30 фактов и цепочек на 65K и 120K) и coding-бенчмарком с восемью мини-репозиториями и скрытыми тестами (8/8 задач, 46/46 скрытых проверок). Автор подчёркивает, что это не замена большим публичным бенчмаркам, но явной регрессии после оптимизации не зафиксировано.

Финальный конфиг закреплён за конкретным образом llama.cpp (b10991), так как поведение tensor split с квантованным KV-кэшем зависит от версии.

Источник: Habr: Искусственный интеллект