Исправление overthinking Qwen3.5: настройка reasoning-budget в llama.cpp | AiManual
AiManual Logo Ai / Manual.
16 Мар 2026 Гайд

Как исправить 'overthinking' в Qwen3.5: настройка reasoning-budget в llama.cpp и других движках

Гайд по борьбе с бесконечными размышлениями Qwen3.5. Настройка reasoning-budget в llama.cpp, vLLM и LM Studio для оптимизации токенов и скорости без потери каче

Когда ваш AI задумался навсегда

Вы задали простой вопрос Qwen3.5. Индикатор токенов начал бешено крутиться. Прошла минута. Две. Вы уже проверили соединение, пока модель в тишине GPU жует свои внутренние мысли. Это не медитация - это overthinking, и он сжирает ваше время и ресурсы. К марту 2026 года проблема стала массовой: reasoning-модели, особенно Qwen3.5, могут генерировать сотни, а то и тысячи внутренних токенов, прежде чем выдать ответ. Хуже того, они иногда зацикливаются в этом процессе. Вы платите за вычисления, а получаете тишину.

💡
Overthinking - это не баг, а фича reasoning-моделей. Они используют внутренний "мыслительный" конвейер (часто помеченный как токены) для решения сложных задач. Без контроля этот конвейер может работать бесконечно.

Reasoning-budget: стоп-кран для болтливого AI

В начале 2026 года сообщество вздохнуло с облегчением. В llama.cpp, основном движке для локального запуска моделей, появились флаги --reasoning-budget и --reasoning-budget-message. Их суть проста: вы даете модели лимит токенов на "раздумья". Как только лимит исчерпан - немедленный переход к ответу. Это как поставить таймер на совещании.

Технически, это модификация сэмплера. Движок отслеживает токены, сгенерированные после последнего пользовательского сообщения. Достигли лимита - срабатывает триггер, который вставляет предопределенное сообщение (например, [REASONING-BUDGET-EXCEEDED]), заставляя модель завершить reasoning-фазу. Гениально и просто.

1 Берем под контроль: настройка в llama.cpp

Первое, что нужно - свежая версия llama.cpp. На 16 марта 2026 года это коммит не раньше февраля 2026. Клонируем и собираем:

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

Убедитесь, что у вас есть квантованная модель Qwen3.5 в формате GGUF. Если нет - конвертируйте или скачайте, например, Qwen2.5-32B-Instruct-Q4_K_M.gguf.

2 Запускаем с бюджетом

Вот базовая команда, которая ограничивает reasoning 150 токенами:

./main -m ./models/Qwen2.5-32B-Instruct-Q4_K_M.gguf \
  --reasoning-budget 150 \
  --reasoning-budget-message "[REASONING-BUDGET-EXCEEDED]" \
  -p "Напиши функцию Python для расчета факториала"

Не путайте --reasoning-budget с --ctx-size. Первое ограничивает только внутренние reasoning-токены, второе - весь контекст. Можно использовать вместе.

Почему 150? Для большинства задач кодирования или анализа достаточно 100-200 токенов. Модель успевает набросать план, но не уходит в дебри. Для творческих задач можно дать 300-400. Больше - обычно пустая трата.

3 Подбираем цифры: таблица бюджетов

Тип задачи Reasoning-budget (токенов) Что происходит
Простой код (факториал, сортировка) 80-120 Модель быстро выдает ответ, качество не падает
Сложная логика (парсинг, алгоритмы) 150-250 Нужно больше шагов, но без зацикливания
Анализ текста, суммаризация 100-180 Достаточно для выделения ключевых точек
Творческое письмо 200-350 Позволяет построить структуру, но не уйти в философию

А что с другими движками? vLLM, LM Studio, Ollama

Llama.cpp - не единственный игрок. К марту 2026 года аналогичные функции появились и elsewhere.

vLLM (актуально на 2026 год)

В vLLM прямо аналогичного флага нет, но можно добиться похожего эффекта через max_tokens и stop токены. Trick: установите низкий max_tokens для reasoning-фазы, а затем продолжите генерацию.

from vllm import LLM, SamplingParams

llm = LLM(model="Qwen/Qwen2.5-32B-Instruct")
# Первый запрос - ограничиваем reasoning
sampling_params = SamplingParams(max_tokens=150, stop=["<|im_end|>"])
outputs = llm.generate("<|im_start|>user\nНапиши код...", sampling_params)
# Если вывод содержит маркер окончания reasoning, продолжаем
if "<|im_end|>" in outputs[0].outputs[0].text:
    # Делаем второй запрос для финального ответа
    final_output = llm.generate(...)

Громоздко? Да. Но работает. Ожидаем, что к середине 2026 года vLLM добавит нативный support.

LM Studio

В LM Studio до сих пор есть критические баги с парсингом для Qwen3.5. Reasoning-budget не поддерживается нативно. Обходной путь: используйте ручную остановку генерации по таймеру или количеству токенов в UI.

Ollama

Ollama использует llama.cpp под капотом, поэтому флаги должны работать. Но проверьте версию. Запуск:

ollama run qwen2.5:32b --reasoning-budget 150

Если не работает, обновите Ollama до последней версии марта 2026.

Ошибки, которые все совершают

  • Слишком низкий бюджет (меньше 50 токенов). Модель не успевает даже подумать. Результат - случайный ответ или повтор промпта.
  • Игнорирование --reasoning-budget-message. По умолчанию сообщение может не подходить для Qwen3.5. Установите явно, например, в "<|im_end|>" или "\n".
  • Запуск без мониторинга. Используйте --verbose-prompt в llama.cpp, чтобы видеть, сколько токенов потрачено на reasoning.
  • Одинаковый бюджет для всех моделей. 7B модель думает иначе, чем 72B. Начинайте с 100 для малых, 200 для больших.
💡
Если модель все равно зацикливается, даже с budgeting, возможно, дело в самом промпте. Попробуйте явно указать "Думай шаг за шагом, но кратко" или использовать thinking mode с ограничением по шагам.

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

Reasoning-budget влияет на качество ответов?

Да, но не так, как вы думаете. На тестах типа HumanEval падение качества при разумном бюджете (100-200 токенов) составляет менее 5%. Зато скорость генерации вырастает в 2-3 раза. Это trade-off, который стоит того.

Почему модель иногда выдает ответ сразу, игнорируя бюджет?

Потому что не все запросы активируют reasoning-фазу. Простые вопросы модель обрабатывает напрямую. Бюджет работает только когда модель решает использовать внутренний диалог.

Можно ли использовать budgeting для tool calling?

Да, но осторожно. Tool calling часто требует точности. Установите бюджет повыше (200-300) и используйте --reasoning-budget-message, который соответствует формату модели. Иначе можно сломать вызовы инструментов.

Где брать мощное железо для экспериментов?

Если своего GPU нет, можно использовать облачные сервисы. Например, RunPod предлагает инстансы с A100 и H100 почасово. Это удобно для тестов. (Партнерская ссылка).

Что в итоге?

Overthinking - это не приговор. С reasoning-budget вы получаете контроль. Начните с бюджета в 150 токенов для Qwen3.5-32B, мониторьте вывод с --verbose-prompt и ajust. Если видите, что модель часто упирается в лимит - увеличьте. Если ответы стали поверхностными - уменьшите.

И помните: идеальный AI не тот, который думает больше всех, а тот, который думает достаточно. В эпоху, когда каждый токен на счету, budgeting из опции становится must-have.

Совет напоследок: если вы работаете с длинными диалогами, не забывайте о настройке контекста и памяти. Reasoning-budget работает в рамках одного запроса, но история разговора тоже влияет на thinking.

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