Исправление бесконечного мышления Qwen 3.5 9B на Mac через Hugind | AiManual
AiManual Logo Ai / Manual.
05 Мар 2026 Гайд

Как исправить бесконечное мышление Qwen 3.5 9B на Mac: пошаговое руководство с Hugind

Полное руководство по фиксу бесконечной генерации Qwen 3.5 9B на Apple Silicon. Настройка YAML, metal_unified preset, работа с GGUF.

Бесконечная болтовня Qwen 3.5: когда модель не знает, когда остановиться

Запускаешь Qwen 3.5 9B на своем Mac, задаешь простой вопрос, а она... думает. И думает. И продолжает думать. Токены льются рекой, заполняя контекстную память, пока не упрешься в лимит или пока не надоест смотреть на этот поток сознания. Знакомо? Это классическая проблема "infinite thinking", которая с марта 2025 года мучает владельцев Mac с Apple Silicon, использующих GGUF-версии модели.

Проблема не в том, что модель глупая. Qwen 3.5 9B — отличная небольшая модель для локального использования. Проблема в том, как она упакована для metal_unified бэкенда llama.cpp и как Hugind (или другой фронтенд) интерпретирует ее токены завершения.

Актуальность на 05.03.2026: Проблема сохраняется даже в последних GGUF-квантованиях Qwen 3.5 9B от TheBloke. Фикс требует ручной настройки, так как автоматические пресеты часто ошибаются с токенами стоп-последовательностями для этой конкретной архитектуры.

1 Почему Qwen 3.5 зацикливается на Mac?

Корень зла — в несовершенной передаче параметров генерации между слоями софта. Когда ты используешь Hugind (или LM Studio, или другую оболочку над llama.cpp), она создает конфигурационный YAML-файл. Для большинства моделей хватает стандартных пресетов. Но Qwen 3.5 использует нестандартные токены завершения, которые llama.cpp на metal_unified бэкенде иногда игнорирует.

Вот что происходит под капотом:

  • Модель генерирует токен <|endoftext|> как сигнал завершения
  • metal_unified бэкенд llama.cpp его не распознает как стоп-токен
  • Hugind продолжает ждать новых токенов
  • Модель, видя, что генерация продолжается, выдает следующий наиболее вероятный токен
  • Процесс повторяется до заполнения контекста

Похожие проблемы встречались и с другими моделями — например, с Nemotron Nano 3, о чем мы уже писали. Но у Qwen своя специфика.

2 Подготовка: что нужно иметь перед началом

Не пытайся исправить это через настройки интерфейса Hugind. Они не дадут нужной глубины контроля. Тебе понадобится:

  • Mac с Apple Silicon (M1, M2, M3, M4 — не важно)
  • Установленный Homebrew (если нет — /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")
  • Сама модель в GGUF формате. Рекомендую последнюю квантованную версию от TheBloke с Hugging Face. Например, qwen2.5-9b-instruct-q4_K_M.gguf (на 05.03.2026 актуальна версия Qwen 2.5, но проблема та же).
  • Hugind установленный через brew или скачанный с официального сайта

Важно: Если у тебя уже стоит Qwen 3.5 (не 2.5) — процесс идентичен. Разница только в названии файлов. На 2026 год многие продолжают использовать Qwen 3.5 для специфических задач, где ее 9B-версия показывает лучшую производительность на ограниченном железе.

3 Шаг 1: Находим конфигурационные файлы Hugind

Hugind хранит настройки моделей в YAML-файлах. Их расположение зависит от способа установки:

# Если установлен через Homebrew
cd ~/Library/Application\ Support/Hugind/models/

# Если standalone версия
cd ~/.hugind/models/

# Или ищи через Finder
open ~/Library/Application\ Support/Hugind

В этой директории ты найдешь подпапки для каждой загруженной модели. Нас интересует папка с именем, похожим на qwen2.5-9b-instruct-q4_K_M или qwen-3.5-9b-instruct.

4 Шаг 2: Редактируем или создаем config.yaml

В папке модели должен быть файл config.yaml. Если его нет — создай. Вот как выглядит стандартный конфиг, который создает Hugind:

model: qwen2.5-9b-instruct-q4_K_M.gguf
context_length: 8192
gpu_layers: 35
batch_size: 512
threads: 0
metal: true
temperature: 0.7
top_p: 0.9
top_k: 40
repeat_penalty: 1.1
stop:

Видишь проблему? Секция stop: пустая! Hugind не знает, какие токены использовать для остановки генерации для Qwen. Вот почему модель болтает без остановки.

💡
Если ты сталкивался с ошибками контекста в других моделях, например, Qwen Coder 30B, принцип похож — неправильная настройка стоп-токенов ведет к переполнению. У нас есть отдельная статья по этой теме.

5 Шаг 3: Правильный config.yaml для Qwen 3.5/2.5

Замени содержимое файла на это (или отредактируй существующий):

model: qwen2.5-9b-instruct-q4_K_M.gguf
context_length: 8192
gpu_layers: 35
batch_size: 512
threads: 0
metal: true
temperature: 0.7
top_p: 0.9
top_k: 40
repeat_penalty: 1.1
stop:
  - "<|im_end|>"
  - "<|endoftext|>"
  - "<|im_start|>user"
  - "\nuser:"
  - "\nUser:"
  - "\nUSER:"
  - "\n\n"
reverse_prompt:
  - "<|im_start|>user"
auto_prompt: true
multiline_input: false
draft: 8
draft_ctx: 64

Ключевые изменения:

  1. stop — список токенов и последовательностей, при обнаружении которых генерация останавливается. <|im_end|> и <|endoftext|> — основные для Qwen.
  2. reverse_prompt — когда модель встречает эту последовательность, она останавливается и ждет пользовательского ввода. Критически важно для интерактивного режима.
  3. draft и draft_ctx — параметры speculative decoding, который на Apple Silicon может дать прирост скорости, но иногда мешает. Если после фикса все еще есть проблемы — попробуй уменьшить draft до 0.

6 Шаг 4: Принудительный перезапуск Hugind и кэша

Hugind кэширует конфигурацию моделей. Простое редактирование файла может не сработать сразу. Нужно:

# Закрыть Hugind полностью (не просто свернуть)
# Удалить кэш
rm -rf ~/Library/Caches/com.hugind.app
# Если используешь standalone версию
rm -rf ~/.cache/hugind

# Запустить Hugind заново

После запуска выбери модель Qwen 3.5/2.5 в интерфейсе. Hugind должен перечитать конфиг.

Если не помогло: ядерные варианты

Иногда проблема глубже — в самом GGUF-файле или версии llama.cpp, которую использует Hugind. На 05.03.2026 актуальная версия llama.cpp — 2.9.1, но Hugind может использовать собственную сборку.

Вариант A: Запуск напрямую через llama.cpp

Установи llama.cpp через brew и запусти модель вручную:

brew install llama.cpp

cd ~/Downloads  # или где лежит твой GGUF файл
llama-cli -m qwen2.5-9b-instruct-q4_K_M.gguf \
  --color -c 8192 -b 512 --mlock -ngl 35 \
  --reverse-prompt "<|im_start|>user" \
  --stop "<|im_end|>" --stop "<|endoftext|>" \
  -p "<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n"

Если в llama-cli модель останавливается нормально — проблема в Hugind. Если нет — проблема в GGUF-файле.

Вариант B: Переконвертация модели

Скачай оригинальную модель в формате Hugging Face и конвертируй заново с явным указанием токенов:

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j

# Конвертация с указанием токенов
python convert-hf-to-gguf.py \
  ~/models/Qwen2.5-9B-Instruct \
  --outtype q4_K_M \
  --vocab-type bpe \
  --ctx 8192 \
  --add-tokens "<|im_start|>,<|im_end|>,<|endoftext|>"

Это долгий процесс, но он гарантирует, что токены правильно прописаны в GGUF-заголовке.

Частые ошибки и их решения

Ошибка Причина Решение
Модель останавливается после 2-3 слов Слишком агрессивные стоп-токены или низкий top_p Убери лишние стоп-последовательности, оставь только <|im_end|> и <|endoftext|>
Hugind не видит конфиг Файл в неправильной кодировке или с синтаксической ошибкой Проверь YAML на валидность: python -m py_compile config.yaml
Производительность упала после фикса Слишком много GPU layers для твоей видеопамяти Уменьши gpu_layers до 20-25 для 8GB RAM

Важно: Если у тебя Mac с 8GB оперативной памяти, не пытайся загружать все слои на GPU. Qwen 3.5 9B в q4_K_M занимает ~5.5GB, плюс контекст. Оставь 2-3GB для системы. Иначе получишь swapping и тормоза.

А что с другими фронтендами?

Проблема не уникальна для Hugind. В LM Studio, OpenCode, даже в llama.cpp через долгую память настройки — везде нужно явно указывать стоп-токены для Qwen. Разница только в том, где хранится конфиг.

Например, в LM Studio нужно редактировать файл ~/.cache/lm-studio/models/config.json для конкретной модели. В OpenCode — через GUI, в разделе "Generation Parameters".

Итог: почему это все еще проблема в 2026?

Потому что экосистема локальных LLM фрагментирована. TheBloke квантует модели под общие пресеты, Hugind использует стандартные настройки для большинства архитектур, а Qwen — немного особенная. И пока кто-то явно не пропатчит инструменты под эту конкретную модель, ручная настройка остается единственным надежным способом.

Хорошая новость: для более новых моделей, таких как Qwen3 Next (MoE-архитектура), сообщество быстрее адаптирует инструменты. Но для проверенной временем Qwen 3.5 9B, которая идеально вписывается в 8-16GB памяти Mac, придется повозиться с YAML.

Последний совет: после фикса не забудь протестировать модель на серии вопросов. Если она все еще иногда уходит в бесконечные размышления — добавь "\n\n" в стоп-токены. Два переноса строки часто означают, что модель закончила мысль и начинает новую.

И да, если перейдешь на Qwen3 Next, проверь, не унаследовала ли она ту же проблему. В мире локальных LLM каждая модель — маленький снежинка со своими тараканами.

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