Нейросеть локально на Android можно запустить через официальный сценарий llama.cpp для Termux без root-доступа. Для первого теста берите GGUF-модель класса 1B или 3B в квантизации Q4, начинайте с контекста 2048 или 4096 и оставляйте системе несколько гигабайт свободной памяти.
Локальный запуск означает, что вычисления идут на телефоне и после загрузки модели запросы могут обрабатываться без облака. Это не делает любой APK безопасным и не превращает смартфон в сервер для огромной модели. Ограничения задают оперативная память, скорость накопителя, охлаждение, архитектура процессора и поддержка ускорителя. Android может завершить тяжёлый процесс в фоне, а длительная генерация заметно нагревает устройство и расходует батарею.
Начинайте с 1B или 3B Q4 и короткого контекста.
Формат модели, который llama.cpp читает локально.
Linux-окружение на Android для сборки и запуска без root.

Нейросеть локально на Android: команды для первого запуска
Установите Termux из источника, указанного в документации проекта, обновите пакеты и соберите llama.cpp через CMake. Команды ниже создают оптимизированную release-сборку. Путь к модели замените на свой файл GGUF. Не скачивайте веса с неизвестных зеркал: проверьте лицензию, размер и хэш, если автор его публикует.
pkg update && pkg upgrade
pkg install git cmake clang
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# Собираем оптимизированные бинарники для текущего устройства
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j 4
# Начинаем с короткого контекста, чтобы не получить всплеск памяти
./build/bin/llama-cli \
-m ~/models/model-3b-q4.gguf \
-c 2048 \
-n 256 \
-p "Объясни, что такое функция в Python, на одном примере"- В терминале появляется поток токенов ответа
- Пиковая память остаётся ниже доступной памяти устройства
Если процесс закрывается, уменьшите модель или контекст, а не увеличивайте количество потоков. Параметр -c влияет на память KV-кэша. Большое окно полезно только тогда, когда запрос действительно содержит длинный материал. Для удобного интерфейса llama.cpp также можно запустить в режиме локального сервера и открыть страницу на 127.0.0.1, но сначала подтвердите стабильность CLI.
Какую модель брать для первого теста
| Элемент | Что означает | Что делать |
|---|---|---|
| 1B Q4 | Низкое потребление памяти | Короткие ответы и простые классификации |
| 3B Q4 | Разумный старт для 8 ГБ | Чат, конспекты, небольшой код |
| 7B Q4 | Нужен заметный запас RAM | Более качественные ответы, медленнее |
| Vision-модель | Дополнительный проектор и память | Не начинать с неё без необходимости |
| Контекст 2K | Меньше KV-кэша | Диагностика первого запуска |
Число параметров не равно размеру файла один к одному: влияют квантизация и архитектура. К весам добавляются KV-кэш, рабочие буферы и память приложения. Оставляйте запас системе. Если телефон показывает 8 ГБ RAM, это не означает, что все 8 ГБ доступны одному процессу. Закройте тяжёлые приложения и измеряйте реальное поведение, а не ориентируйтесь на рекламу устройства.

Практика: соберите llama.cpp в Termux и снимите пик памяти на 3B Q4
Проведите модель 3B Q4 от файла GGUF до потока токенов в терминале Termux, без root и без сторонних APK. Успех выглядит так: llama-cli отвечает на запрос при -c 2048, а процесс не закрывается системой в середине генерации. Заранее запишите, сколько свободной памяти показывает телефон, это ваш ориентир на весь тест.
- Обновить пакеты в Termux. Выполните pkg update && pkg upgrade, затем pkg install git cmake clang. После установки команда clang --version должна вывести версию, иначе сборка дальше не пойдёт.
- Собрать llama.cpp через CMake. Клонируйте репозиторий llama.cpp и выполните cmake -B build -DCMAKE_BUILD_TYPE=Release, потом cmake --build build --config Release -j 4. Сборка идёт несколько минут, после неё в build/bin появляется llama-cli.
- Положить GGUF в ~/models. Создайте каталог ~/models и скопируйте туда файл вида model-3b-q4.gguf. Проверьте размер через ls -lh и сверьте хэш, если автор весов его публикует.
- Первый запуск llama-cli. Вызовите ./build/bin/llama-cli с ключами -m ~/models/model-3b-q4.gguf, -c 2048 и -n 256 и с запросом про функцию в Python. В терминале должен пойти поток токенов, а не сообщение о невозможности загрузить модель.
- Снять пик памяти. Пока идёт генерация, посмотрите свободную память в настройках телефона и запишите четыре числа: время первого токена, токены в секунду, пик памяти и температуру корпуса через пять минут работы.
Теперь поднимите -c с 2048 до 8192 на той же 3B-модели и повторите тот же запрос. KV-кэш вырастет вместе с окном, пик памяти уйдёт выше доступного, и Android закроет процесс, часто вообще без внятного сообщения в терминале. Верните -c 2048, убедитесь, что генерация снова доходит до конца, и не пытайтесь компенсировать падение увеличением числа потоков.
Дальше прогоните два одинаковых запроса на 1B и 3B и сравните скорость с качеством ответа, а параметры запуска сохраните текстовым файлом рядом с моделью в ~/models. Когда CLI перестанет падать, попробуйте режим локального сервера llama.cpp и откройте 127.0.0.1 в браузере телефона. После работы явно завершите процесс сервера: закрытая вкладка его не останавливает, и телефон продолжит греться.
Частые ошибки и почему они появляются
Новички часто выбирают самый большой файл, который помещается в накопитель, хотя ограничение связано с оперативной памятью. Вторая ошибка состоит в максимальном контексте «на будущее». Третья связана с фоновым сервером, который продолжает нагревать телефон после закрытия вкладки. Процесс нужно явно остановить.
Проверяйте автора приложения и разрешения. Локальность сама по себе не подтверждает безопасность.
Уточните условия использования весов, особенно для публикации и коммерческого проекта.
Запишите время первого токена, токены в секунду, пиковую память и температуру после пяти минут.
Самопроверка
Нужен ли root, чтобы запустить llama.cpp на Android?
Root для запуска llama.cpp на Android не нужен: официальный сценарий проекта описывает сборку и запуск в Termux без root-доступа. Termux даёт Linux-окружение, в котором ставятся git, cmake и clang. Ограничения задаёт железо телефона, а не права суперпользователя.
Почему при увеличении контекста растёт потребление памяти?
Контекст увеличивает память из-за KV-кэша: для токенов окна модель хранит промежуточные значения, и кэш растёт вместе с параметром -c. Поэтому окно 4096 стоит дороже, чем 2048, на одной и той же модели. Большое окно оправдано только тогда, когда в запросе действительно длинный материал.
С какой модели начинать на телефоне с 8 ГБ RAM?
На телефоне с 8 ГБ RAM начинайте с GGUF-модели 1B или 3B в квантизации Q4 и с контекстом 2048. Вариант 7B Q4 требует заметного запаса памяти и отвечает медленнее. Помните, что все 8 ГБ одному процессу недоступны: часть занимают система и приложения.
Почему Android закрывает процесс с моделью во время генерации?
Android завершает тяжёлый процесс, когда ему не хватает оперативной памяти, особенно если приложение ушло в фон. Пик складывается из весов, KV-кэша и рабочих буферов и легко превышает свободный объём. Уменьшите модель или контекст, а не увеличивайте количество потоков.
Равен ли размер файла GGUF объёму нужной памяти?
Размер файла GGUF не равен объёму нужной памяти. К весам добавляются KV-кэш, рабочие буферы и память самого приложения, поэтому запас системе нужен всегда. Число параметров тоже не переводится в размер файла один к одному: влияют квантизация и архитектура.
Безопасен ли APK с уже встроенной моделью?
Локальный запуск сам по себе не делает APK безопасным. Проверяйте автора приложения и список разрешений, а веса скачивайте не со случайных зеркал, сверяя размер и хэш. Отдельно посмотрите лицензию модели, если планируете публикацию или коммерческий проект.
Что делать дальше
Сделайте два одинаковых запроса и сравните скорость, память и качество на 1B и 3B. Сохраните параметры запуска рядом с моделью. Если хочется автоматизировать загрузку файлов и обработку текста, базовый Python можно изучить на курсе GenAI. Дальше прочитайте выбор модели по памяти и материал о запуске без видеокарты.
