Qwen на RTX 3060

Кодинг-модель на 12 ГБ видеопамяти

Серия замеров на одном домашнем ПК: что пробовали, что сработало, что нет.

Qwen3.8-27B, Q4_K_M

Qwen3.8-27B, Q6_K_M

Qwen3.6-35B-A3B, Q5_K_XL

видеопамять карты: 12 288 МиБ

16,5 ГБ

23,1 ГБ

27,2 ГБ

Светлая часть полосы не помещается в видеокарту и уходит в оперативную память. Ещё нужно место под контекст.

RTX 3060, 12 ГБi5-11400, 6 ядер32 ГБ DDR4-3200SSD для моделей

Как мы меряли

  • Реальная глубина. Скорость смотрим в OpenCode, внутри длинной сессии, а не коротким запросом.
  • Один параметр за раз. Иначе непонятно, что дало результат.
  • Чистая машина. Перед серьёзным замером перезагружаем ПК.

Токенов в контексте при замере

короткий запрос curl

старт сессии OpenCode

глубокая сессия OpenCode

≈30

≈13,5K

до 36K

На коротком замере рейтинг конфигураций несколько раз выходил обратным тому, что показывала работа в OpenCode.

Три кванта Qwen3.8-27B на реальной глубине

Один и тот же рецепт, четыре хода в OpenCode, контекст 13,5–14,8K токенов.

IQ4_XS

Q4_K_S

Q4_K_M

4,4 tok/sпринято 80%

5,7 tok/sпринято 79%

6,6 tok/sпринято 87%

Q4_K_M весит больше, но драфт MTP угадывает у него чаще. Скорее всего, поэтому он быстрее. Это наше предположение, отдельно мы его не проверяли.

64 слоя модели. Рецепт сообщества: часть слоёв считает процессор.

слои 0–45: FFN в оперативной памяти слои 46–63: целиком на видеокарте Внимание всех слоёв остаётся на видеокарте.

Что не сработало

Плоский -ngl 56 с MTP вместо рецепта с переносом тензоров (IQ4_XS)

На коротком тесте 8,7–9,3 tok/s, на реальной глубине 2,9–3,0. Рецепт держал 4,3–4,7.

Вернуть 2 слоя Q6_K_M с процессора на видеокарту

На контексте 19K: 3,01 против 3,85 tok/s, на 22% медленнее. Запас видеопамяти съел кэш контекста.

ngram-mod для Qwen3.6-35B-A3B: подсказки из уже написанного текста

Принято 2–18% черновиков. Скорость 14,7 и 23,2 tok/s против 30–32 без него.

Gemma 4 26B A4B вместо Qwen

SWE-bench Verified: 17,4% против 73,4% у Qwen3.6-35B-A3B. Цифры из опубликованного сравнения, не наши замеры.

Обновление llama.cpp ускорило обработку промпта

Скорость чтения промпта при контексте около 8K токенов.

0.4.0-dev
сборка 10878

0.5.0-dev
сборка 11146

42–52

215–226

Системный промпт OpenCode, около 13,5K токенов: примерно 4–5 минут против минуты. Это расчёт по измеренным скоростям.

AVX-512 включён: llama.cpp загружает ggml-cpu-icelake.

Находка: MTP для Qwen3.6-35B-A3B

MTP: модель угадывает несколько токенов вперёд и проверяет их за один проход.

В обычном файле этого модуля нет. Он есть в отдельной сборке Unsloth, мы взяли Q5_K_XL.

40 слоёв. Эксперты 37 слоёв в оперативной памяти (--n-cpu-moe 37), остальное на видеокарте.

эксперты в оперативной памяти эксперты на видеокарте

7,8K, без MTP

7,8K, с MTP

24K, без MTP

24K, с MTP

31,77

38,79 +22%принято 89%

29,63

27,61 −7%принято 58%

В рабочем диапазоне до 20K выигрыш есть. На 24K MTP угадывает хуже, и выигрыш пропадает.

Одна настройка до и после перезагрузки

Qwen3.8-27B, Q4_K_M. Конфиг, сборка и задача те же.

до перезагрузки, 17,6K

после, 25,4K

после, 35,4K

1,92

5,19

6,74

Скорость выросла в 2,7–3,5 раза, хотя контекст стал глубже. Нагрев процессора или состояние памяти: что именно, мы не выясняли.

Итог: скорость на разной глубине контекста

01020304050 010K20K30K40K tok/s глубина контекста, токенов 6,65,26,7 38,831,829,627,6
0

tok/s у Qwen3.6-35B-A3B с MTP на контексте 7,8K

На контексте около 25K: 27,6 tok/s у 35B с MTP и 5,2 у 27B. Разница в 5,3 раза.

35B-A3B с MTP

35B-A3B без MTP

27B Q4_K_M, замеры на разной глубине

Рабочая конфигурация и что осталось проверить

Qwen3.6-35B-A3B, Q5_K_XL с MTP, ежедневный запуск

llama-server -m Qwen3.6-35B-A3B-UD-Q5_K_XL.gguf
  --no-mmproj -ngl 999 --n-cpu-moe 37
  -c 262144 -fa on -t 8 --parallel 1
  --cache-type-k q8_0 --cache-type-v q8_0
  --spec-type draft-mtp --spec-draft-n-max 2

Проверено в OpenCode на глубине 7,8K и 24K.

  • --spec-draft-n-max 3. На 7,8K дал 44,5 tok/s и 93% принятых. На 24K не мерили.
  • Число потоков -t. Значения 6, 8 и 12 не перебирали.
  • MTP у 35B после свежей перезагрузки. На глубине не перемеряли.
  • Качество кода. Модели сравнивали по скорости, а не своими тестами на качество.
0:00 / 1:30

Цифры и условия замеров

Все скорости это генерация ответа в OpenCode на проекте FastAPI. Замеры квантов 27B сделаны до обновления llama.cpp, замеры MTP для 35B после. Звёздочкой отмечено то, что не проверено на глубине.

КонфигурацияКонтекст, токеновtok/sПринято MTP
Qwen3.8-27B IQ4_XS, рецепт с переносом FFN13,5–14,8K≈4,4≈80%
Qwen3.8-27B Q4_K_S, тот же рецепт13,5–14,8K≈5,7≈79%
Qwen3.8-27B Q4_K_M, тот же рецепт13,5–14,8K≈6,6≈87%
Qwen3.8-27B Q6_K_M, все 64 слоя FFN на процессореходы OpenCode≈4,3
Qwen3.8-27B Q4_K_M до перезагрузки17,6K1,9272,5%
Qwen3.8-27B Q4_K_M после перезагрузки25,4K5,1963,1%
Qwen3.8-27B Q4_K_M после перезагрузки35,4K6,7493,2%
Qwen3.6-35B-A3B Q5_K_M без MTP, --n-cpu-moe 347,8K / 24K31,77 / 29,63
Qwen3.6-35B-A3B Q5_K_XL с MTP, --n-cpu-moe 37, n-max 27,8K / 24K38,79 / 27,6189% / 58%
То же, n-max 3*7,8K44,4693%