Почему ваш Qwen3.5 27B тормозит и как это исправить прямо сейчас
Загрузили Qwen3.5 27B в Ollama, а он думает 30 секунд перед каждым ответом? Или после квантования модель начала генерировать абракадабру? Знакомо. Модель мощная, но жадная до ресурсов. Хорошая новость: сообщество LocalLLaMA уже нашло рабочие рецепты. Плохая — большинство гайдов устарели за последний год. Вот свежие данные на март 2026.
Железо: что реально нужно для комфортной работы
Забудьте про минимальные требования из документации. На практике для 27B параметров нужен запас.
| Конфигурация | Скорость (токен/с) | Качество | Рекомендация |
|---|---|---|---|
| CPU только (AVX2) | 1.5-3 | Высокое | Только для тестов. Q4_K_M. |
| 1x RTX 4090 (24GB) | 25-40 | Высокое | Оптимально. Полная загрузка слоев. |
| 2x RTX 3090 (48GB) | 45-60 | Высокое | Идеально для production. |
| RTX 3060 12GB + CPU | 8-15 | Среднее | Сплит -ngl 20-25 слоев на GPU. |
Ошибка номер один: пытаться запихнуть всю модель в видеопамять, которой не хватает. llama.cpp начнет свопиться в оперативку, и скорость упадет в 10 раз. Всегда используйте флаг -ngl для явного указания числа слоев на GPU.
Квантование: что работает в 2026 году, а что уже устарело
Тренды меняются. То, что было эталоном год назад, сегодня проигрывает новым методам.
Выбор формата
- Q4_K_M — золотая середина. Потери качества 1-3% относительно FP16, сжатие в 4 раза. Для большинства задач этого достаточно. Используйте, если сомневаетесь.
- Q5_K_M — если у вас есть запас видеопамяти. Качество почти идентично оригиналу, но модель все еще на 40% меньше.
- IQ4_XS — новый фаворит 2025-2026. Интеллектуальное квантование, разработанное специально для моделей размером 20B+. Дает лучшее соотношение размер/качество, но требует последней версии llama.cpp (коммит после декабря 2025).
- Избегайте Q2_K и Q3_K для Qwen3.5 27B. Модель теряет связность речи и логику. Это не Llama 2, она чувствительнее к агрессивному квантованию.
# Конвертация в IQ4_XS (актуально на март 2026)
./llama-cli -m ./qwen3.5-27b-f16.gguf --outfile ./qwen3.5-27b-IQ4_XS.gguf --outtype iq4_xs
# Для классического квантования используйте llama.cpp квантайзер:
python llama.cpp/quantize.py ./qwen3.5-27b-f16.gguf ./qwen3.5-27b-Q4_K_M.gguf Q4_K_M
Настройка llama.cpp: флаги, которые меняют всё
Запуск модели с дефолтными параметрами — это как ехать на Ferrari с ручным тормозом. Вот конфиг, собранный из десятков обсуждений на Reddit.
1 Базовый запуск с оптимизацией скорости
./llama-cli -m ./qwen3.5-27b-Q4_K_M.gguf \
-ngl 40 \ # 40 слоев на GPU (для 24GB карты)
-c 8192 \ # Контекст 8K (можно 16K, если хватит RAM)
-b 512 \ # Пакетный размер для предзаполнения
-t 12 \ # Количество потоков CPU (для оставшихся слоев)
-ins \ # Режим интерактивного чата (ключево для Qwen)
--mlock \ # Держать модель в RAM (избегать свопа)
--no-mmap \ # Отключить mmap, если возникают странные ошибки
-np 4 \ # Параллелизм для предзаполнения (новый флаг в 2026)
-cb # Потоковый вывод ответа
-np (parallel prefill) появился в конце 2025 и ускоряет обработку системного промпта и первых токенов в 2-3 раза на многоядерных CPU. Обязательно обновите llama.cpp, как описано в нашем гайде по обновлению.2 Тонкая настройка качества генерации
Стандартные temperature=0.7 и top_p=0.95 для Qwen3.5 27B часто дают слишком «водянистый» текст. Сообщество предлагает более жесткие параметры.
./llama-cli -m ./qwen3.5-27b-Q4_K_M.gguf \
--temp 0.5 \ # Пониженная температура для большей детерминированности
--top-p 0.85 \ # Более агрессивный отсев маловероятных токенов
--repeat-penalty 1.15 \ # Сильнее штрафовать повторы (Qwen склонен к зацикливанию)
--repeat-last-n 64 \ # Смотреть на последние 64 токена для штрафа
--mirostat 2 \ # Включить Mirostat 2.0 для динамического контроля "творчества"
--mirostat-lr 0.1 \ # Скорость обучения Mirostat (начать с 0.1)
--mirostat-ent 3.0 # Целевая энтропия (ниже = более предсказуемо)
Mirostat — это не магия, а алгоритм, который динамически подстраивает температуру во время генерации, чтобы поддерживать постоянный уровень «удивления» модели. Для технических текстов ставьте --mirostat-ent 2.5, для творческих — 4.0.
Распределение по нескольким GPU: чтобы не было мучительно больно
Если у вас две карты с разным объемом памяти (например, 4090 и 3060), распределение слоев вручную критически важно.
# НЕПРАВИЛЬНО: просто указать -ngl 99
# Модель попытается загрузить всё на первую карту и упадет.
# ПРАВИЛЬНО: использовать --tensor-split
./llama-cli -m ./qwen3.5-27b-Q4_K_M.gguf \
--tensor-split 20,10 \ # 20GB на первую GPU (индекс 0), 10GB на вторую
-ngl 99 # Загрузить все возможные слои на GPU
Как рассчитать? Пример: у вас 4090 (24GB) и 3060 (12GB). Модель Q4_K_M 27B занимает ~17GB. Выделите 12GB на первую карту и 5GB на вторую: --tensor-split 12,5. Остальное догрузится в RAM.
С multi-GPU в llama.cpp до начала 2026 были известные проблемы с падениями, особенно на Qwen. Если столкнетесь с crash'ами, проверьте, что у вас точно последняя версия, и посмотрите наше руководство по исправлению ошибок Qwen в llama.cpp.
Оллома: когда нужна простота, а не контроль
Ollama — это удобно, но его настройки спрятаны. Модифицируйте Modelfile.
# Modelfile для Ollama (создайте файл и выполните ollama create qwen27b-custom -f ./Modelfile)
FROM ./qwen3.5-27b-Q4_K_M.gguf
# Параметры системы
PARAMETER num_gpu 40
PARAMETER num_thread 12
# Параметры генерации (Ollama использует немного другие имена)
PARAMETER temperature 0.5
PARAMETER top_p 0.85
PARAMETER repeat_penalty 1.15
PARAMETER num_ctx 8192
# Новый в 2026: seed для воспроизводимости
PARAMETER seed 42
# Шаблон (важно для Qwen!)
TEMPLATE """{{ .Prompt }}"""
# Да, шаблон пустой, потому что Qwen сам управляет форматированием чата.
# Но если модель глючит, попробуйте явный шаблон из документации.
Почему модель иногда «сходит с ума» и как это предотвратить
Вы получили три нормальных ответа, а на четвертый модель начинает выводить случайные символы или зацикливается. Знакомая картина? Основные причины:
- Переполнение кэша K-V. При длинных сессиях чата кэш ключей-значений может фрагментироваться. Решение: периодически перезапускать контекст. Или используйте новую функцию
--prompt-cacheв llama.cpp, которая стабильно работает с марта 2026. - Слишком агрессивное квантование. Перейдите с Q3_K на Q4_K_M или Q5_K_M.
- Ошибка в RoPE кодировке. У Qwen3.5 немного иная реализация позиционного кодирования. Убедитесь, что ваша llama.cpp собрана с поддержкой
LLAMA_QWEN3(это теперь по умолчанию в последних версиях).
Если ошибка появляется после 2-3 ответов, почти наверняка дело в кэше. Включите --prompt-cache и укажите --prompt-cache-all, чтобы кэшировать системный промпт.
Бенчмарки: чего реально ожидать
Цифры на столе. Тестирование на конфигурации: i9-13900K, 64GB DDR5, RTX 4090 24GB, модель Q4_K_M, контекст 4096.
| Бэкенд / Настройка | Предзаполнение (токен/с) | Генерация (токен/с) | Примечание |
|---|---|---|---|
| llama.cpp (CUDA) -ngl 99 | ~180 | ~35 | Эталон для локального запуска. |
| vLLM (FP16) | Очень высокое | 50+ | Только если много RAM и нужна максимальная пропускная способность. Сложная настройка. |
| Ollama (по умолчанию) | ~120 | ~28 | Удобно, но чуть медленнее из-за оверхеда. |
| CPU only (24 потока) | ~15 | ~2.5 | Терпимо только для редких запросов. |
Вывод: llama.cpp с полной загрузкой GPU — король скорости для одиночных запросов. Если вы обслуживаете множество параллельных запросов, смотрите в сторону оптимизированного vLLM.
Один секрет, о котором молчат в официальной документации
Qwen3.5 27B, как и многие современные модели, обучена с вниманием к конкретному формату промпта. Если вы просто скармливаете ей текст в интерактивном режиме, она работает. Но если вы явно укажете роли (System, User, Assistant) в формате ChatML, качество ответов, особенно по инструкциям, вырастет заметно.
# Вместо просто: "Напиши код на Python для чтения CSV"
# Используйте:
prompt = """<|im_start|>system
You are a helpful coding assistant.<|im_end|>
<|im_start|>user
Напиши код на Python для чтения CSV файла.<|im_end|>
<|im_start|>assistant
"""
llama.cpp автоматически применяет этот формат при использовании флага -ins, но для API вызовов нужно делать это вручную. Разница особенно заметна в задачах, требующих точного следования инструкциям.
Что дальше? Экспериментируйте с контекстом
Стандартный контекст 8K — это не предел. Модель поддерживает 16K и даже 32K, но цена — скорость и память. Если вам нужна длинная память, увеличивайте -c 16384, но будьте готовы к тому, что потребление RAM/VRAM вырастет почти линейно. На 16K контекста с Q4_K_M моделью запасайте минимум 32GB общей памяти.
И последнее: обновляйтесь. Коммиты в llama.cpp, улучшающие работу именно с Qwen, выходят раз в месяц. Тот пулл-реквест, что ускорил Qwen на 30% в прошлом году, — не последний. Сообщество не спит. Ваш текущий билд, скорее всего, уже устарел.