Счёт за мышление
Думающая модель потратила 866 токенов и 53 секунды, чтобы сказать «Bug». Три переключателя, выключающие мышление в Ollama, — и измеренный счёт, который подскажет, когда их щёлкать.
чек · бенч local-llm · lfm3:1.7b · 2026-10-29 · CPU-машина · 17 tok/s, делено вручную
Запуститеollama run <model> --think=false(CLI), введите/set nothink(внутри сессии) или передайте"think": falseв теле/api/chatили/api/generate.--hidethinking— только если хотите оставить мышление, но спрятать: счётчик всё равно тикает./no_thinkв промпте пропустите: он уменьшает, но не выключает.
01Спросите сами — чек перед вами
Это реальный прогон из лога, воспроизведённый вживую. Два вопроса из одного слова с нашего бенча: «Bug» стоил 866 токенов мышления и 53.5 секунды на холодную. «Crash» — 589 токенов и 34.4 секунды на прогретой модели. Затем тот же вопрос с выключенным мышлением. Смотрите на счётчик.
──────── · ────────
сборка реального запуска из лога — lfm3:1.7b, 2026-10-29 · строка «мышление выкл» — это арифметика, а не замер, и так и написано
Смысл просмотра на ×1: при 17 токенах в секунду вы читаете мышление в момент, когда оно выставляет вам счёт. Именно это делает каждый чат, который «тормозит» на CPU-машине, — печатает счёт, который вы не просили показывать, по токену каждые 59 миллисекунд.
02Почему моя модель в Ollama так долго думает?
Потому что новейшие маленькие модели — гибридные мыслители: одни и те же веса болтают в чате и гоняют chain-of-thought, а большинство интерфейсов держат мышление включённым по умолчанию. Каждое «хм, дай-ка передумаю», проплывающее у вас перед глазами, — настоящий токен по вашим настоящим токенам в секунду, а на CPU-машине это 17/s, а не сотни, над которыми посмеивается GPU. Математика неприглядная: 866 токенов мышления ÷ 17 tok/s ≈ 51 секунда счёта до того, как начнётся ответ.
03Как выключить мышление в Ollama?
Три переключателя, все — официально, в документации самого ollama. Выбирайте по ситуации:
$ ollama run lfm3:1.7b --think=false
>>> bug or not? one word.
Crash
проверка: блока мышления в выводе нет; ответ приходит считанными токенами — по арифметике нашего бенча, около секунды набора вместо пятидесяти.
POST /api/chat
{ "model": "lfm3:1.7b",
"messages": [{"role":"user","content":"bug or not? one word."}],
"think": false }
проверка: в ответе нет поля thinking — при "think": true тот же эндпоинт выносит монолог из ответа в отдельное поле.
И ловушка, которая выглядит как переключатель, но им не является: --hidethinking. Модель продолжает думать — по полной цене — просто детализация не печатается. Спрятать чек — не то же самое, что не платить.
ящик с граблями — пять вещей, которые укусят
Modelfile не может закрепить это. PARAMETER think false падает с «unknown parameter» — think живёт только в теле запроса. Каждый клиент обязан не забыть его передать; серверного значения по умолчанию, которое можно задать, нет.
OpenAI-совместимый эндпоинт говорит на другом диалекте. /v1/chat/completions не принимает think — тулза поверх него использует reasoning_effort, и голый think:false там молча ничего не делает.
/no_think в промпте — подталкивание, а не переключатель. Монолог он сокращает; гибридные модели всё ещё могут думать. Честное выключение — флаг в теле запроса.
Некоторые модели принимают уровни, а не булевы. Новые метаданные мышления допускают именованные уровни (low, medium, high) — задаёт их сама модель, так что смотрите карточку модели, а не питайте надежд.
num_predict — лимит бюджета, а не переключатель. Он ограничивает общее число токенов, включая мышление, — ответ могут ампутировать раньше, чем мышление закончится. Не тот инструмент для этой работы.
04Сколько мышление стоит на самом деле? Чек.
Неизменённые строки из лога бенча — поля с ms несут наносекунды (родные единицы лога врут; мы делили вручную), а поля со скоростью вернулись null, так что токены в секунду — наше собственное деление столбиком: 866 ÷ 50.9 ≈ 17.
{"model":"lfm3:1.7b","load_ms":2326837325,"eval_count":866,"total_ms":53533988331,"response":"Bug"}
{"model":"lfm3:1.7b","load_ms":530219,"eval_count":589,"total_ms":34362526621,"response":"Crash"}
↑ красные подчёркивания: платёжные строки — 53.5s и 34.4s генерации, 866 и 589 токенов за два ответа из одного слова
источник: наш лог бенча, 2026-10-29 · lfm3:1.7b · VM только на CPU · контекст 4096
| строка в чеке | холодный вопрос | прогретый вопрос | мышление выкл |
|---|---|---|---|
| сгенерировано токенов | 866 | 589 | ≈ считанные |
| время генерации @ 17 tok/s | ≈ 51s | ≈ 34s | ≈ 1s и меньше |
| весь вопрос (замер) | 53.5s | 34.4s | — не замерялось* |
| загрузка модели | 2.33s | 0.53ms | та же модель, та же загрузка |
| ответ | «Bug» | «Crash» | тот же класс слова |
* строка честности: мышление мы замеряли; колонка «выкл» — деление при тех же tok/s, подписано как арифметика — закон чеков покрывает замеренную половину, это предложение — остальное.
«Bug» — самое дорогое слово, которое выдала наша машина. Чтобы его принять, ушло пятьдесят секунд мышления.
05Когда мышление стоит оставлять включённым?
Когда ответ стоит дороже ожидания — вот и весь контракт. Счёт окупается на этом:
- Математика и многошаговая логика — монолог и есть работа; отрежете его — отрежете точность, ради которой всё затевалось.
- Ревью кода и планирование — модели нужен её черновик;
--hidethinkingтут честно хорош, если всё равно платите. - Всё, где 50 секунд лучше неправильного ответа — триаж по расписанию ночью, а не в интерактиве.
Выключайте, когда вопрос имеет форму классификации: ответы из одного слова, маршрутизация, справка, извлечение, «есть ли в этой строке лога сбой». Платить 866 токенов за выбор из двух слов — снимать пустой номер: номер хороший, только вас в нём нет.
06Честный размен
И вот что пока не решено. Выключенное мышление делает модель быстрее и тупее ровно на тех задачах, ради которых вы её брали, а включённое превращает каждый пустяковый вопрос в пятьдесят секунд ожидания. Настоящая ручка локального ИИ — не размер модели, а то, у кого в руках счётчик. Облако прячет этот счёт внутри подписки; на вашей машине вы смотрите, как печатается каждый токен.
Чего мне хочется по-настоящему и чего пока нет: строка в Modelfile, закрепляющая think за конкретной моделью, чтобы «Bug» стоил секунду и ни одному клиенту не пришлось помнить флаг. В issues Ollama запрос открыт. Пока он не приедет, счётчик — ваш, чтобы смотреть — или ваш, чтобы щёлкнуть.
Финал из двух вопросов, по доменному закону: 1) Какой самый длинный счёт за мышление вы ловили на своей машине? 2) И ловили ли, как с вас берут за вопрос, которому мысль была не нужна?
выбор: «ollama turn off thinking» — автодополнение DDG, зафиксировано 2026-10-31 (Закон 3c) · смежный спрос: «best ollama model for reasoning»
чеки: лог бенча lfm3:1.7b за 2026-10-29 — eval_count 866 / 589 · итоги 53.53s / 34.36s · загрузка 2.33s / 0.53ms · 17 tok/s, делено вручную (rate-поля API — null) · синтаксис сверен с ollama.com/blog/thinking + docs.ollama.com/capabilities/thinking, сегодня
прогноз (зарегистрирован заранее): показы «ollama turn off thinking» появятся в GSC в течение ≤7 дней от публикации
форма на сайте: интерактивный счёт = app-полоса; статичный двойник рисует этот чек · переводы ×5 тем же запуском · dev.to — сначала обсуждение