Сегодня мы построим свою локальную модель. С блэкджеком и WebUI!
Ставим свою локальную модель ИИ на Android через... Termux
Предыстория
Смотря на столь бурное развитие направления по применении агентов с ИИ для автоматизации OpenClaw убрала поддержку бесплатного использования модель Qwen. Это было ограниченное количество запросов, но тем не менее - работало весьма хорошо. Теперь это только платная подписка.
Аналогичным образом поступают и другие вендоры ИИ - какие-то LLM просто не умеют работать как агенты, какие-то подлежат кастомизации (Claude). Опять же - всё хорошее за деньги, средний лимит - 1 млн токенов для демонстрации.
Опыт Apple
Пока все смеются над тем, что только это компания где-то опоздала, на самом деле Apple заключает соглашение с Google об использовании квантованных (сжатых) версий топовых моделей от техно-гиганта.
Недавно Apple подтвердила стратегическое партнерство с Google для интеграции ИИ Gemini в свои устройства. Это решение связано со сложностями в создании нейросети такого масштаба для конкуренции с лидерами рынка.
Основные детали сделки:
- Интеграция с Siri: Gemini станет основой обновленной Siri.
- Модель Google будет отвечать за понимание контекста, планирование задач и обобщение информации.
- Работа внутри смартфона: Apple получила доступ к технологиям Google для дистилляции. Это позволит Apple обучить собственные компактные модели на базе Gemini, которые будут работать напрямую на устройстве, обеспечивая скорость и конфиденциальность.
Вот именно это мы сейчас и опробуем, только на примере с Android.
Эмуляция
Не секрет, что на Android можно запускать Linux-форки приложений и работать на телефоне в полноценной Linux-среде. Для этого энтузиастами был разработан эмулятор - имя ему Termux Termux Wiki
Я использую это решения для запуска веб-приложений backend/frontend с Mongodb, reactjsб javascript через node.js и nginx, а также для подключения к linux/unix-системам напрямую с телефона.
Всё работает локально на устройстве.
Основные плюшки:
- Пакетный менеджер: Упрощает установку и управление программами с помощью pkg, аналогичного apt.
- Поддержка языков программирования: Termux поддерживает Python, Ruby, Node.js, PHP, Go, Rust и другие языки.
- Интеграция с Git и контроля версий: Позволяет работать с репозиториями и контролем версий.
- Доступ к файловой системе Android: Удобно работает с файловой системой Android, включая внешнюю SD-карту.
- Интеграция с внешними клавиатурами и терминальными клиентами: Поддержка SSH, VNC и других терминальных клиентов.
- Автоматизация задач: Позволяет автоматизировать выполнение команд и скриптов.
Таким образом, Termux является мощным инструментом для пользователей Android, которые ищут возможность использовать Linux-подобную среду на своем устройстве.
Установка
Установка на Android устройство проста до безобразия не требует особых умственных усилий, в отличие от вычисления над полями Галуа Finite field - Wikipedia
Шаг 1. Скачиваем Termux с Google Play
В качестве альтернативы и для получения более свежей версии можно выполнить установку, скачав предварительно F-Droid с официального сайта.
Шаг 1.2: Первый запуск
Открываете Termux. Видите чёрный экран с белым текстом и приглашением $ — это командная строка. Теперь вы — пользователь Linux на своём телефоне.
Вводим команду:
Шаг 2. Ставим LLM
Шаг 2.1: Обновляем всё
Процесс должен выглядеть примерно так:
Шаг 2.2: Ставим необходимые инструменты
Это инструменты для работы с web-фреймворками.
Шаг 2.3: Скачиваем Ollama
Многие кто погружен в эту историю уже знают про HuggingFace и аналогичные сервисы. Одним из популярных также является Ollama - это софт для установки и запуска больших языковых моделей локально на устройство. Как правило - на серверы, ПК, ноутбуки. Но мало кто пробовал ставить на Android - вы будете в числе первых!
Шаг 2.4: Проверяем установку
Ожидаемый вывод: ollama version 0.5.4
Также можно просто набрать ollama - программа перейдет в интерактивный режим:
Шаг 3: Загрузка модели Gemma
Gemma 3 — это новое поколение открытых мультимодальных моделей искусственного интеллекта от Google DeepMind, представленное весной 2025 года. Она оптимизирована для эффективной работы на обычных пользовательских устройствах.
Основные характеристики
- Мультимодальность: Начиная с версии 4B, Gemma 3 способна одновременно понимать и обрабатывать текст, изображения и короткие видеоролики.
- Доступные версии: Семейство включает модели разного размера для разных задач: 1B (1 млрд параметров): Эта модель работает только с текстом и английским языком. Подходит для мобильных устройств. 4B, 12B и 27B: Это мультимодальные модели, поддерживающие более 140 языков.
- Контекстное окно: Модели поддерживают до 128 000 токенов, что позволяет анализировать очень длинные документы.
- Открытость: Веса моделей доступны для свободного скачивания и использования разработчиками.
Технические преимущества
- Производительность: Старшие версии (27B) в ряде тестов превосходят более массивные модели, такие как Llama-3 405B.
- Оптимизация: Модель 27B требует около 62 ГБ видеопамяти при полной точности, но может работать на 15.5 ГБ в квантованном режиме.
- Инструменты: Модель хорошо справляется со структурированным выводом и вызовом внешних функций, что делает её подходящей для создания автономных ИИ-агентов.
Шаг 3.1: Запускаем сервер Ollama
Открываем ПЕРВОЕ окно Termux (основное) и запускаем:
💡 Важно: флаг OLLAMA_ORIGINS="*" включает CORS. Без него веб-интерфейс не сможет обращаться к Ollama. Так мы запускаем сервер Ollama в фоне.
Шаг 3.2: Скачиваем модель
Открываем ВТОРОЕ окно Termux (свайп от левого края → New session):
Увидим процесс скачивания модели:
Шаг 3.3: Проверяем модель
Модель загрузится и можно к ней можно обращаться с консоли: пишем наш запрос.
Добавляем удобство
Поскольку так работать вполне можно, но немного не удобно. Поэтому нам нужно научиться работать с моделькой как мы привыкли, как через приложение. Я попробовал запустить все возможные и рекомендуемые форки для WebUI для Ollama - но ничего из этого не заработало или требовало серьезных танцев с бубнами.
Пишем своё WebUI
Написание полноценного приложения это весьма затратный путь - я написал WebUI на базе html, javascript, который запускается в termux через nginx, а пользоваться можно просто через любой браузер в смартфоне.
Но для начала нужно немного подготовиться.
Проверяем через curl
Убедимся, что наш сервис отвечат на http-запросы.
Создаём веб-интерфейс
По умолчанию Nginx на termux хранит данные по следующему пути:
Создадим файл нашего веб-приложения:
Вставляем код из вложения (можно взять на моём GitHub BlackJackBander/Ollama-WebUI: Ollama-WebUI interface for works from Browser on smartphone).
🔑 Ключевые фрагменты кода:
Отправка запроса к Ollama:
Обработка потокового ответа (текст появляется постепенно):
Запускаем Nginx
Если ничего не пишет, проверяем работает ли сервис и если нет - запускаем:
🚀 Запускаем всё вместе
Открываем своё любимый браузер. Я люблю Firefox за возможность отрезания рекламы везде где можно и широкой кастомизации:
В адресной строке браузера указываем адрес для доступа:
WebUI сам подхватит текущую запущенную модель.
Если всё ОК - будет выглядеть так:
Типичные проблемы и их решение
Проблема 1: CORS ошибка в браузере. Решение: Убедитесь, что Ollama запущен с OLLAMA_ORIGINS="*".
Проблема 2: Ошибка 405 при curl. Решение: Используйте -X POST.
Проблема 3: Порт уже занят. Решение: pkill -9 ollama или pkill -9 nginx.
Проблема 4: Termux убивает процесс в фоне. Решение: Отключите оптимизацию батареи для Termux в настройках телефона.
🔮 Что дальше (Иго-го)?
Теперь у вас есть собственный локальный ИИ-ассистент в телефоне и вы уже обошли Apple!
Теперь Вы можете:
- Общаться с ним в дороге (даже в самолёте)
- Использовать как офлайн-помощника для работы с текстом
- Ставить другие модели (Mistral, Phi-3, CodeLlama)
- Интегрировать его в свои приложения через API
Полезные команды:
Хотите знать больше?
Будьте осторожны! Статья сгенерирована человеком.
Созданное решение это больше демонстрация, чем полноценное использование. Например, я не стал писать сохранение сессий чатов- это уже отдельная история.
🔒 P.S. Насколько это безопасно? Вся обработка данных происходит локально на вашем устройстве. Ollama не отправляет ваши запросы никуда. Вы можете выключить интернет, и всё будет работать. Ваши диалоги остаются только у вас.