Зачем вообще это нужно? (Или почему облака — это не всегда решение)
Вы уже читали наш гайд про запуск LLM на Android с NPU и знаете: мобильный ИИ — не будущее. Это настоящее. Но есть одна проблема, о которой все молчат.
Синтетические бенчмарки врут. Они измеряют токены в секунду, потребление памяти, загрузку CPU. Но не измеряют главное — стабильность. Тот факт, что модель выдает связный текст на первых 10 запросах, не гарантирует, что на 11-м она не начнет галлюцинировать про квантовую механику в ответ на вопрос про рецепт омлета.
Стабильность ≠ скорость. Модель может быть медленной, но предсказуемой. Или быстрой, но нестабильной. На мобильных второй вариант убивает весь user experience.
Pixel 8 Pro: железо, которое не прощает ошибок
Tensor G3 — интересный зверь. 9 ядер, из них 1 Cortex-X3, 4 Cortex-A715, 4 Cortex-A510. Теоретически мощно. Практически — тепловой пакет ограничен, троттлинг начинается быстро. Если в нашем тесте на Snapdragon 888 мы игрались с настройками, то здесь каждый параметр влияет на температуру.
| Параметр | Значение | Влияние на стабильность |
|---|---|---|
| ОЗУ | 12 ГБ LPDDR5X | Позволяет загружать модели до 8B в Q4, но своп убивает скорость |
| Tensor Processing Unit | Встроенный в G3 | llama.cpp его не использует. Только CPU. Это важно |
| Тепловой режим | Агрессивный троттлинг | После 3-4 минут работы скорость падает в 2-3 раза |
Методология: как мы ломали модели
Не будем измерять tokens/sec. Это бессмысленно на мобильных. Вместо этого — стресс-тест из 5 сценариев:
- Длинный контекст: 10K токенов истории, попытка извлечь факт из середины
- Многошаговые рассуждения: «Если у меня 5 яблок, я отдал 2, потом купил еще 3, сколько всего?» — с последующими уточнениями
- Противоречивые инструкции: «Напиши код на Python, который не должен содержать циклов. Теперь оптимизируй его для скорости»
- Температурный тест: Запуск модели на 30 минут непрерывного диалога, мониторинг деградации ответов
- Память контекста: Сколько шагов назад модель помнит детали?
Все тесты проводились с llama.cpp версии b3460 (актуально на февраль 2026), флагами -ngl 0 (только CPU), -c 4096, -b 512, -t 8 (8 потоков). Температура 0.7, top_p 0.9.
1 Кандидаты: кто претендует на звание «стабильного»
Из дюжины протестированных моделей выжили четыре. Остальные либо падали с OOM, либо начинали галлюцинировать после 5-го запроса.
Mistral-Nemo-12B-Instruct-Q4_K_M
Да, 12B на телефоне. Звучит как безумие. Работает — с оговорками. Размер: 6.8 ГБ GGUF. Загружается в память с натяжкой, но работает.
- Плюсы: Контекст держит стабильно до 8K токенов. Рассуждения логичные, последовательные. Не теряет нить диалога даже после 20 сообщений.
- Минусы: Нагревает телефон до 42°C за 10 минут. Скорость: 4-6 токенов/сек после прогрева. Потребление памяти: 9-10 ГБ (использует своп).
- Стабильность: 8/10. Падает только при попытке загрузить контекст >10K.
Qwen2.5-7B-Instruct-Q5_K_S
Актуальная версия на февраль 2026. Qwen2.5 — не просто апдейт, они переработали архитектуру внимания. Размер: 4.9 ГБ.
- Плюсы: Холоднее Mistral (38°C максимум). Скорость: 8-10 токенов/сек. Отличное понимание инструкций на русском.
- Минусы: Иногда «зацикливается» на определенных фразах. В длинных диалогах начинает повторять структуру ответов.
- Стабильность: 7/10. Требует перезагрузки контекста каждые 30-40 сообщений.
Llama-3.2-3B-Instruct-Q8_0
Самая маленькая из тестируемых. Q8_0 — минимальное квантование, почти оригинальная точность. Размер: 3.2 ГБ.
- Плюсы: Холодная (35°C), быстрая (15-18 токенов/сек), стабильная как скала. Не падает никогда.
- Минусы: Интеллект соответствующий. Для сложных задач не годится. Контекст помнит плохо — уже через 5-6 сообщений путается.
- Стабильность: 9/10. Но стабильность тупого — тоже не всегда хорошо.
Dolphin-3.0-Mistral-7B-Q4_K_M
Uncensored версия. Мы тестировали ее в сравнении с другими моделями в статье про uncensored LLM. Размер: 4.1 ГБ.
- Плюсы: Креативная, не ограничена фильтрами. Хорошо справляется с нестандартными запросами.
- Минусы: Стабильность ниже среднего. Может внезапно сменить тему или начать генерировать бессвязный текст.
- Стабильность: 5/10. Не для production-использования.
2 Квантование: Q4_K_M vs Q5_K_S vs Q8_0
Все говорят про биты. 4 бита, 5 бит, 8 бит. Но никто не говорит про стабильность квантования. А зря.
| Тип квантования | Размер модели 7B | Стабильность ответов | Скорость на Pixel 8 Pro |
|---|---|---|---|
| Q4_K_M | ~4.1 ГБ | Низкая. Частые артефакты в длинных текстах | 10-12 токенов/сек |
| Q5_K_S | ~4.9 ГБ | Высокая. Минимальные галлюцинации | 8-10 токенов/сек |
| Q8_0 | ~7.0 ГБ | Максимальная. Но не влезает в память с большими контекстами | 4-6 токенов/сек |
3 Настройки llama.cpp, которые влияют на стабильность
По умолчанию llama.cpp настроен для максимальной скорости. Но скорость — враг стабильности на мобильных.
# НЕПРАВИЛЬНО — быстрее, но нестабильнее
./main -m model.q4_K_M.gguf -n 512 --temp 0.8 --top-k 40 --top-p 0.95 -t 12
# ПРАВИЛЬНО — медленнее, но стабильнее
./main -m model.q5_K_S.gguf -n 256 --temp 0.7 --top-k 50 --top-p 0.9 -t 8 -c 2048 -b 512 --mlock
Ключевые моменты:
-t 8вместо-t 12: Tensor G3 имеет 9 ядер, но 8 потоков — оптимально. 12 создает contention, приводит к троттлингу--mlock: Фиксирует модель в RAM, предотвращает своппинг на диск (медленно на телефоне!)-c 2048: Ограничение контекста. 4096 — много для мобильных, начинает тормозить после 2K токенов--temp 0.7: Температура выше 0.8 увеличивает креативность и галлюцинации одновременно
Галлюцинации: как отличить баг от фичи
Модель на телефоне галлюцинирует иначе, чем на сервере. Не хватает памяти → модель начинает экономить на внимании → пропускает детали → выдает неправильный ответ, но с уверенностью 100%.
Пример: спрашиваю «Сколько планет в Солнечной системе?» После 20 минут работы модель отвечает «12». Почему? Потому что в контексте была дискуссия про экзопланеты, и модель смешала информацию. На сервере такого не происходит — там хватает VRAM для полных вычислений.
Признаки начинающихся галлюцинаций:
- Модель начинает повторять фразы из предыдущих ответов
- Появляются противоречия в пределах одного ответа («Солнце желтое... нет, оранжевое»)
- Резкое увеличение времени генерации (модель «задумывается»)
- Ответы становятся короче, менее детализированными
Итоговый вердикт: что ставить на Pixel 8 Pro
После недели тестов, перегретых пальцев и нескольких падений приложений — мои рекомендации.
Для серьезной работы
Qwen2.5-7B-Instruct-Q5_K_S. Стабильность 7/10, интеллект 8/10, температура 38°C максимум. Если нужно отвечать на сложные вопросы, писать код, анализировать тексты — это выбор. Но каждые 30 минут делайте паузу, дайте телефону остыть.
Для чата и простых задач
Llama-3.2-3B-Instruct-Q8_0. Не умничает, не перегревается, работает часами. Идеально для телеграм-бота или простого ассистента. Как автономный агент на смартфоне — то что надо.
Для экспериментов
Mistral-Nemo-12B-Instruct-Q4_K_M. Покажет, на что способен телефон в пределе. Но это именно эксперимент — для ежедневного использования не годится.
Что будет дальше? Прогноз на 2026-2027
Tensor G4 в Pixel 9 Pro обещает +40% к производительности NPU. Но проблема не в железе. Проблема в оптимизации llama.cpp под мобильные NPU. Пока он использует только CPU, мы упираемся в тепловой пакет.
Мой прогноз: к концу 2026 появятся:
- llama.cpp с поддержкой Tensor NPU (не Vulkan, а нативный драйвер)
- Модели, обученные специально для мобильных — с упрощенной архитектурой внимания
- Квантование Q3_K_L, которое будет стабильнее Q4_K_M
А пока — выбирайте Qwen2.5-7B-Q5_K_S, настраивайте llama.cpp на стабильность, а не скорость, и помните: телефон — не сервер. Ему нужны перерывы.
Частые ошибки и как их избежать
1. Слишком большой контекст
Ошибка: -c 8192 на модели 7B. Результат: через 10 минут телефон начинает тормозить, модель галлюцинирует.
Решение: -c 2048 максимум. Если нужно больше — сбрасывайте контекст каждые 50 сообщений.
2. Много потоков
Ошибка: -t 12 на 9-ядерном процессоре. Кажется логичным — использовать все ядра. На деле создается contention, скорость падает.
Решение: -t 8 для Tensor G3. Одно ядро оставить системе.
3. Неправильное квантование
Ошибка: Брать Q4_K_M, потому что меньше размер. На деле — больше артефактов, меньше стабильность.
Решение: Q5_K_S для баланса, Q8_0 для максимальной точности (если влезает в память).
4. Игнорирование температуры процессора
Ошибка: Запускать модель на 30 минут без перерыва. Pixel 8 Pro нагревается до 45°C, начинается троттлинг.
Решение: Сессии по 15-20 минут, затем пауза 5 минут. Или использовать клиенты с кэшированием, которые сохраняют состояние.