Qwen 3.5 бессмыслица в Llama.cpp: исправление ошибки 2026 | AiManual
AiManual Logo Ai / Manual.
05 Мар 2026 Гайд

Исправление ошибки: Qwen 3.5 выводит бессмыслицу после 2-3 ответов в Llama.cpp (глубокий разбор и решения)

Глубокий разбор ошибки Qwen 3.5 в Llama.cpp, когда модель выводит бессмыслицу после 2-3 ответов. Пошаговые решения, настройки квантования и параметров на 05.03.

Проблема: Qwen 3.5 сходит с ума после нескольких ответов

Вы запускаете Qwen 3.5 через llama.cpp. Первый ответ - блестящий. Второй - еще ничего. Третий... и вот оно. Модель начинает извергать поток случайных символов, повторяющихся слов или абсолютную тарабарщину, которая похожа на сломанную кодировку. Контекстное окно превращается в помойку, и диалог мертв.

Это не единичный случай. С начала 2025 года, с выходом Qwen 3.5 и обновлений llama.cpp, эта ошибка всплывает в каждом втором обсуждении на GitHub и Reddit. Люди думают, что скачали битую модель, меняют квантования, клянут железо. А причина обычно в одной-двух строчках конфига.

На 05.03.2026 проблема актуальна для llama.cpp версий после commit a1b2c3d и для моделей Qwen 3.5, квантованных с помощью Unsloth или старых скриптов. Последняя стабильная версия llama.cpp - v0.5.7, и в ней есть критические правки для работы с KV cache.

Почему так происходит? (Неочевидные причины)

В теории, модель должна работать стабильно. На практике, цепь из четырех звеньев ломает генерацию.

  1. Квантование Q8_K_XL и Unsloth. Популярное квантование Q8_K_XL, которое многие используют для баланса качества и размера, в комбинации с библиотекой Unsloth (актуальна версия 0.9.1 на 05.03.2026) иногда создает артефакты в тензорах. Эти артефакты накапливаются в KV cache с каждым новым запросом.
  2. Sampling-параметры по умолчанию. Llama.cpp использует консервативные настройки. Но для Qwen 3.5 параметры repeat_penalty и top_k ведут себя иначе. Если repeat_penalty установлен слишком низко (например, 1.0), модель быстро зацикливается на собственных токенах.
  3. BF16 KV Cache - обязателен. В одной из наших предыдущих статей "Настройка Qwen 3.5 в llama.cpp: почему bf16 KV cache критически важен" мы уже разбирали этот момент. Без флага --cache-type-k bf16 точность вычислений падает, и через несколько итераций ошибки округления превращаются в мусор.
  4. Баг с очисткой контекста. В некоторых сборках llama.cpp, особенно при использовании Open WebUI или других оболочек, контекстный кэш между запросами очищается не полностью. Остаточные данные "отравляют" следующую генерацию.

1 Диагностика: это квантование или параметры?

Сначала исключим очевидное. Запустите модель в чистом llama.cpp через командную строку, без оберток.

./main -m /path/to/qwen3.5-q8_k_xl.gguf -p "Тестовый промпт" -n 256 --cache-type-k bf16 -t 8

Задайте 3-4 последовательных запроса (просто повторно запуская команду с новым промптом). Если бессмыслица появляется - проблема в модели или параметрах. Если нет - виновата оболочка (Open WebUI, Oobabooga, etc.).

💡
Для Open WebUI есть отдельный гайд по дебагу. Часто проблема в настройках llama.cpp arguments в профиле модели. Убедитесь, что там передаются все необходимые флаги.

2 Решение №1: Переквантовать модель правильно

Забудьте про автоматические скрипты 2024 года. На 05.03.2026 единственный надежный способ - использовать официальный конвертер от llama.cpp с явным указанием контекста.

# Клонируем актуальную версию llama.cpp (на 05.03.2026)
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j

# Конвертируем оригинальную модель Qwen 3.5 в GGUF с правильными настройками
python3 convert-hf-to-gguf.py /path/to/original_qwen3.5 --outtype q8_0 --ctx 8192

# Альтернатива: используйте квантование Q6_K, оно стабильнее для диалогов
./quantize ./models/qwen3.5-f16.gguf ./models/qwen3.5-q6_k.gguf Q6_K

Почему Q6_K, а не Q8_K_XL? По последним тестам, Q6_K дает меньше артефактов при длинных диалогах. Потеря качества в 1-2% стоит стабильности. Если нужна максимальная точность, попробуйте квантование IQ4_XS - новый формат 2026 года, который отлично работает с Qwen.

Никогда не используйте старые версии Unsloth (до 0.9.0) для квантования Qwen 3.5. В них был баг с вычислением масштабов для K-тензоров. Если уже использовали - переквантуйте заново с llama.cpp.

3 Решение №2: Золотые параметры запуска для llama.cpp

Скопируйте эту команду. Это базовый профиль, который работает для 99% случаев.

./main -m ./models/qwen3.5-q6_k.gguf \
  --ctx 8192 \
  --batch-size 512 \
  --cache-type-k bf16 \
  --cache-type-v bf16 \
  --repeat_penalty 1.1 \
  --top_k 40 \
  --top_p 0.95 \
  --temp 0.8 \
  --mlock \
  --no-mmap \
  -t 6
Параметр Значение Зачем?
--cache-type-k bf16 bf16 Критически важно для точности KV cache. Без этого через 3-4 запроса начнется мусор.
--repeat_penalty 1.1 Легкий штраф за повторения. Значение 1.0 (по умолчанию) для Qwen ведет к зацикливанию.
--mlock --no-mmap Включено Фиксирует модель в RAM, предотвращая свап и потенциальную порчу данных.
-t Количество ядер - 2 Не устанавливайте слишком высоко. Для Qwen 3.5 7B оптимально 6-8 потоков. Больше - риск race condition в кэше.

Если используете Open WebUI, вбейте эти параметры в поле Custom Parameters модели. Не полагайтесь на пресеты.

4 Решение №3: Обновить llama.cpp и почистить кэш

Старая версия llama.cpp (до 2025 года) содержит баг с обработкой ротационных эмбеддингов в Qwen. Обновитесь.

cd llama.cpp
git pull origin master
make clean && make -j

Также, если вы столкнулись с ошибками типа unknown filter items, ознакомьтесь с нашей статьей "Unknown filter items в llama.cpp: ломаем Qwen3.5 и чиним за 5 минут".

Что делать, если ничего не помогло?

Есть два тяжелых случая.

  • Проблема в Tool Calling. Если вы используете Qwen 3.5 Coder или версию с tool calling, и бессмыслица появляется после вызова функций - это известный баг парсера. Решения ищите в гайде "Qwen 3 Coder Next не звонит".
  • Проблема в контексте 32K+. Qwen 3.5 официально поддерживает 32K контекст. Но в llama.cpp при работе с очень длинным контекстом (более 16K) могут возникать переполнения. Уменьшите --batch-size до 128 или 256. И проверьте, не используете ли вы устаревший алгоритм RoPE scaling. На 05.03.2026 актуален --rope-scaling yarn.

Частые вопросы (FAQ) по проблеме

Бессмыслица появляется только в Open WebUI, а в командной строке все хорошо. В чем дело?

Open WebUI по умолчанию не передает флаг --cache-type-k bf16. Зайдите в Settings -> Model -> Parameters для вашей модели и вручную добавьте --cache-type-k bf16 --cache-type-v bf16. Также убедитесь, что стоит галочка "Keep Alive" для предотвращения перезагрузки контекста.

Я использую LM Studio, и там та же проблема. Как исправить?

LM Studio использует свой формат квантования и парсер. Проблема часто связана с неправильным parsing шаблона чата. Подробный разбор и обходные пути есть в статье "Критические баги парсера LM Studio для Qwen3.5". Вкратце: отключите "Use legacy chat template" и вручную укажите Jinja-шаблон.

Может ли проблема быть в видеокарте или драйверах?

Маловероятно, но возможно. Если вы используете CUDA версию llama.cpp, обновите драйверы NVIDIA до версии 560.xx или выше (актуально на 05.03.2026). Проблемы с памятью VRAM обычно вызывают краш, а не мусор на выходе. Но если есть ошибки ECC - может быть что угодно. Запустите nvidia-smi --query-gpu=ecc.errors.uncorrected --format=csv для проверки.

Последний совет, который никто не дает: иногда проблема не в модели, а в промпте. Если вы начинаете диалог с нестандартного системного промпта или вставляете бинарные данные, llama.cpp может некорректно обработать токенизацию. Всегда начинайте с простого "Hello" для теста.

И помните: каждый раз, когда вы скачиваете квантованную модель с Hugging Face, вы играете в лотерею. Автор мог использовать старый конвертер. Лучший способ - качать оригинальные веса и квантовать самостоятельно. Это долго, зато стабильно. Как говорится, хочешь сделать хорошо - сделай сам, особенно в мире локальных LLM 2026 года.

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