Бесплатный интеллект побеждает дорогие API.
Последние недели я разрабатывал MasterCLI — мультимодульную AI-нативную десктоп-платформу на Go, React и PostgreSQL — и смотрел, как растёт счёт в облаке. Десять баксов в день звучит смешно, пока не поймёшь, откуда они берутся: классификация запросов, извлечение структурированных данных, препроцессинг сообщений. Работа, которая совсем не требует мощи GPT-4o-mini — просто что-то вменяемое.
Затем Google выпустил Gemma 4 8B, и я решил протестировать её локально на реальных production-нагрузках. То, что я обнаружил, было не просто неожиданным — оно перестроило мои представления об архитектуре AI-систем.
Может ли игровой ноутбук запустить модель с рассуждениями?
Давайте разберёмся с реальностью. Это не облачный бенчмарк на GPU. Всё по-настоящему:
- Ноутбук: стандартный RTX 3070 Ti с 8GB VRAM
- Модель: Gemma 4 8B, квантизация Q4_K_M (9,6GB на диске)
- Runtime: Ollama v0.20.0 на Windows 11
Модель не влезает целиком в VRAM. Часть выгружается в системную память. И работает.
Одна команда ollama pull gemma4 — и 9,6GB уже на рабочем столе, готовы к работе. Скорость генерации держалась стабильно на всех задачах — где-то между 19 и 27 токами в секунду в зависимости от нагрузки. Обработка промпта достигала 120-850 токов/с. Не быстро, но абсолютно годится для классификации и извлечения, которые обычно отправляют в облако.
“Модель вообще не влезает в VRAM целиком — часть выгружается в системную память. Это реальный тест, а не облачный бенчмарк на GPU.”
Итак, ноутбук может это запустить. Реальный вопрос был другой: будет ли это полезно?
Почему Gemma 4 работает как модель рассуждения?
Большой шок пришёл с первым тестом. Ответы казались пустыми. Токены генерировались — метрики скорости это доказывали — но в JSON поле content приходило ничего.
После часа отладки потоковых выходов я понял, что происходит: Gemma 4 это модель рассуждений. Как DeepSeek-R1 или OpenAI o1, она сжигает токены на цепочку рассуждений перед ответом.
Только эти токены лежали в отдельном поле thinking.
Ответ выглядел так:
{"message":{"role":"assistant","content":"","thinking":"Вот процесс рассуждения..."}}
{"message":{"role":"assistant","content":"","thinking":" чтобы прийти к..."}}
// ... куча токенов рассуждения ...
{"message":{"role":"assistant","content":"Три основных паттерна это..."}}
Модель сначала рассуждала, потом отвечала. Для классификации и извлечения это чистая бюрократия — получаешь качественный результат, но с задержкой в 4-7 раз выше.
Потом я нашёл волшебную кнопку: "think": false.
Зачем вообще отключать рассуждения?
Отключение рассуждений дало 7.7x ускорение на классификации, 4.5x на JSON-извлечении, 2x на генерации кода. Качество выхода не изменилось. Просто быстрее.
| Задача | think=true | think=false | Ускорение |
|---|---|---|---|
| Классификация | 6.9s | 0.9s | 7.7x |
| JSON извлечение | 19.4s | 4.3s | 4.5x |
| Генерация кода | 26.7s | 13.3s | 2x |
Для структурированной работы, когда вы знаете формат и ограничения с самого начала, рассуждения это просто мёртвый груз. На открытых вопросах теряешь немного тонкости. Компромисс очевиден, когда платишь задержкой — а на ноутбуке это убивает UX.
Две ловушки, в которые я угодил
Эндпойнт /api/generate в Ollama работает криво с Gemma 4. Поле response приходит пустым, хотя токены стримятся как надо. Переходишь на /api/chat — и всё работает. В документации об этом ни гу-гу.
Вторая подводная граница: function calling требует num_predict >= 2048. При маленьком лимите токенов рассуждение съедает весь бюджет и модель никогда не вызывает функцию. При достаточном резерве она умная настолько, чтобы пропустить рассуждения и выплюнуть вызов за 34 токена, 1.3 секунды.
Я дал ей это:
```json { “name”: “search_contracts”, “parameters”: { “query”: {“type”: “string”}, “min_budget”: {“type”: “number”}, “category”: {“type”: “string”, “enum”: [“IT”,”construction”,