Offline AI Launcher — запуск AI LLM нейромереж на смартфоні
Привіт!
У вільний час я написав застосунок, за допомогою якого можна завантажувати та вимикати нейронні мережі AI LLM, такі як Google Джемма, DeepSeek, Лама, Квен та багато інших на вашому смартфоні.

Зараз існує доволі багато застосунків ШІ, але ключова відмінність цього в тому, що моделі працюють не у хмарі на серверах, а прямо на смартфоні з файлових моделей, з використанням процесора та відеокарти смартфона.
Для роботи не потрібен інтернет, платна підписка, достатньо мати смартфон із 6+ ГБ оперативної пам'яті та сучаснішим процесором.
Застосунок працює з репозиторієм HuggingFace і є основним репозиторієм мільйонів моделей OpenSource, тисячі з яких є великими мовними моделями або LLM.
Застосунок може відкрити найпоширеніший формат моделі .gguf з використанням рушія LLama.cpp, а також формати від Google для рушія MediaPipe — .task і .tflite (версії для MediaPipe є в репозиторіях Google).
Для деяких моделей, таких як Gemma 3n (OpenSource-версія Gemini) через рушій MediaPipe здійснює обробку зображень.
На цей момент застосунок безкоштовний, але якщо я не знайду способу оплатити свою роботу з його написання, деякі функції для нього стануть платними.
Це найбільша платформа з мільйонів моделей з відкритим кодом, тисячі з яких є великими мовними моделями (LLM).
Застосунок може відкривати найпоширеніші моделі моделей. .gguf з використанням рушія LLama.cpp, а також формується Google для рушія MediaPipe — .task та .tflite (версії для MediaPipe доступні в репозиторіях Google).
Для деяких моделей, таких як Gemma 3n (версія Gemini з відкритим кодом) через рушій MediaPipe, здійснюється обробка зображень .
Цей застосунок створено насамперед для ентузіастів штучного інтелекту, а також для тих, хто не може використовувати хмарні моделі, такі як ChatGPT або Gemini, через можливий витік даних, а також для людей, які не мають постійного доступу до Інтернету.
На цей момент застосунок безкоштовний, але якщо я не знайду способу оплатити свою роботу з його написання, деякі його функції стануть платними.
Для кого цей застосунок?
Цей застосунок призначений для:
- Ентузіасти ШІ, які хочуть завантажити та випробувати нові моделі, спробувати різні доопрацювання моделей.
- Люди, які з якихось причин не можуть користуватися Інтернетом, наприклад, вони перебувають у районі, де немає інтернету, або летять літаком.
- Люди, які не можуть використовувати хмарні моделі, тому що відбувається витік даних або компанія, де вони працюють, забороняє використовувати хмарні моделі.
Як використовувати
Застосунок має вкладки: Чат, Історія, Моделі, Налаштування.
Чат
Ця вкладка містить чат із поточною запущеною моделлю.

- Новий чат: Очищує історію діалогу з моделлю.
- Значок «Поділитися зображеннями»: Ви можете додати зображення в чат. Наразі застосовуються лише рушій MediaPipe та моделі Gemma 3n і Gemma 3 4B 12B 27B.
- Зробити значок фото: Ви можете зробити фотографію та надіслати її в чат. Наразі застосовуються лише рушій MediaPipe та моделі Gemma 3n і Gemma 3 4B 12B 27B.
- Значок при підтвердженні документа: Ви можете прикріпити документ у форматах pdf, txt, doc, docx. Щойно документ перестане завантажуватися, він буде доданий до контексту повідомлення.
- RAG УВІМК / ВИМК: увімкнути або вимкнути RAG, використовується для додавання результатів пошуку в базу даних векторів у контекстному діалозі.
- Відкритий текст: Поточне текстове повідомлення видалено.
- Вставити текст: Вставляє текст із буфера обміну в поточну позицію введення повідомлень.
- Голосове введення: При активації голосового введення. Після завершення голосового введення, якщо в застосунку вибрано опцію «Автоматично надсилати текст моделі після виконання запиту», текст продає моделі. Якщо не вибрано, необхідно надіслати текст, натиснувши кнопку «Відредагувати».
- Надсилати: Надіслати повідомлення моделі. Текст кнопки може змінюватися залежно від стану моделі.
- Символ мікрофона в повідомленні: Виробляє повідомлення. Швидкість вимови можна налаштувати в застосунку застосунку за допомогою параметра «Швидкість голосу». Якщо в застосунку застосунку увімкнено функцію «Автоматично озвучувати відповіді після генерації», повідомлення буде автоматично відтворюватися голосом після завершення генерації моделі.
- Натисніть на повідомлення: Відкриється меню, в якому ви можете скопіювати повідомлення в буфері обміну, поділитися повідомленням з іншими застосунками або перезапустити повідомлення вголос.
- Верхня панель: показує, з якою моделлю наразі ведеться діалог. Також показує обсяг вільної оперативної пам'яті, якщо увімкнено опцію «Вивести обсяг вільної оперативної пам'яті на екран».
Історія
Показує перелік усіх діалогів з усіма моделями.

- Натисніть, щоб відкрити діалог: Відкривається нижнє вікно з моделлю.
- Видалити: Видаляє діалог з моделлю. Усі діалоги можна видалити в меню застосунку, натиснувши «Очистити історію чату».
- Продовжити діалог: Ви можете продовжити будь-який діалог. При продовженні діалогу він буде збережений як новий діалог. При зверненні до нього відкриється перелік усіх доступних моделей, з будь-якою з яких ви можете продовжити раніше розпочатий діалог, навіть якщо це була інша модель. Зверніть увагу, що контекст моделі обмежений. Якщо діалог включає в себе текст великого обсягу, моделі контексту можуть загостритися, і в цій частині діалог може бути втрачений. Ви можете налаштувати розмір моделі контексту в застосунку. Зверніть увагу, що розмір контексту — це не кількість символів, а кількість токенів, які зазвичай відповідають частині слова.
Моделі
Тут ви знайдете всі завантажені моделі, а також моделі, запущені в Ollama та LM Studio на вашому комп'ютері. Модель занепокоєння з файлом, що знаходиться в мобільному застосунку. Ви можете відкрити цей інструмент у деяких файлових менеджерах, наприклад, в ES Explorer, і самостійно додати або видалити моделі.

- Запуск моделі: Запускається модель, при цьому всі інші моделі вивантажуються. Якщо модель запущена на комп'ютері в локальній мережі, то вона не запускається, але відкриває діалог з нею, при запуску моделі контролюється програма, в якій вона запустилася.
- Показати інформацію: Відкриється сторінка зі службовою інформацією для моделей.
- Натисніть на модель: Модель відкриється в розділі «Файли управління». Зверніть увагу, що не всі файлові менеджери використовують відкриття файлів, і не всі файлові менеджери мають дозвіл на відкриття тек інших застосунків.
- Видалити: Видаляє модель. Також забезпечує видалення моделей, запущених в Ollama на комп'ютері в локальній мережі.
- Верхня панель: показує застосунок-застосунок, у якому керуються моделі. Клацнувши по посиланню, можна відкрити її файли в менеджері, а також скопіювати або поділитися шляхом до неї. Також відображається обсяг вільної оперативної пам'яті, якщо увімкнено опцію «Виводити обсяг вільної оперативної пам'яті на екран».
- Завантажити моделі: Перейти на сторінку завантаження моделей з репозиторію HuggingFace

- Автор: Фільтрація переліків моделей за автором. Можна ввести текст і вибрати з готових варіантів.
- Трубопровід: Фільтрація переліку моделей конвеєра. Можна ввести текст і вибрати передустановки.
- Фільтр: Фільтрація переліків моделей за фільтром. Ви можете ввести текст і вибрати передустановлені параметри.
- Пошук: Фільтрація переліків моделей за назвою. Ви можете ввести текст і вибрати передустановлені параметри.
- Параметр сортування: За яким параметром сортувати перелік.
- ▼: Відкрийте перелік передустановок для встановлення фільтра з відповідним параметром.
- +: зберегти параметр, введений у текстове поле, у передустановках.
- -: Видалити параметр, введений у текстове поле, з передустановок.
- Оновити: Оновлює перелік.
- Закрити фільтр: Закриває фільтр вікна
- Відкрити репозиторій за моделями: Відкриває сторінку моделі в репозиторії HuggingFace.
- Завантажити: Відкриється перелік усіх доступних моделей у репозиторії. Моделі з квантуванням Q4, що підходять для конструкції Arm, позначені зеленим кольором. Якщо у вашого смартфона швидкий процесор і невелика модель, ви можете завантажити та запустити модель з будь-яким квантуванням. Чим вища кількість квантування, тим вища точність моделей. Після натискання у верхній частині екрана відобразиться поточний статус завантаження моделі. Якщо натиснути на нього, завантаження припиняється.
- Закладки: Ось моделі, які додали ви в закладки.

- Автор: Фільтрація переліків моделей за автором. Ви можете ввести текст і вибрати один із шаблонів.
- Конвеєр: Фільтрація переліку моделей конвеєра. Ви можете ввести текст і вибрати один із шаблонів.
- Фільтр: Фільтрація переліків моделей за фільтром. Ви можете ввести текст і вибрати один із шаблонів.
- Пошук: Фільтруйте перелік моделей за назвою. Ви можете ввести текст і вибрати один із шаблонів.
- Варіант сортування: За яким параметром сортувати перелік.
- ▼: Відкрийте перелік передустановок для налаштування фільтра з відповідним параметром.
- +: зберегти параметр, введений у текстове поле, у передустановках.
- -: Видалити параметр, введений у текстове поле, з передустановок.
- Оновити: Оновіть перелік.
- Закрити фільтр: Закрити фільтр вікна.
- Відкрити репозиторій за моделями: Відкрийте сторінку моделей у репозиторіях HuggingFace.
- Завантажити: Відкрийте перелік усіх доступних моделей у репозиторії. Моделі з квантуванням Q4, що підходять для конструкції Arm, позначені зеленим кольором. Якщо у вашого смартфона швидкий процесор і невелика модель, ви можете завантажити та запустити модель з будь-яким квантуванням. Чим вище число квантувань, тим вища точність моделей. Після натискання у верхній частині екрана відобразиться поточний статус завантаження моделі. Якщо натиснути на нього, завантаження припиняється.
Налаштування

- Налаштування застосунку

- Виберіть мову: Змінює мову застосунку. Якщо вибрати «Система», мова буде змінюватися залежно від мови пристрою. Наразі застосовуються такі мови: англійська, німецька, французька, іспанська, польська, російська, українська.
- Режим перегляду: Тема застосунку, темна, світла або системна.
- Налаштування голосів: Налаштування вимови, тут можна вибрати ціну промовляння повідомлень після генерації, автоматичне надсилання повідомлень після пошуку, швидкість вимови.
- Налаштування налагодження: Тут ви можете вибрати, чи слід вивести на екран обсяг доступної оперативної пам'яті, а також перейти на сторінку налагоджувальної інформації рушія LLama.cpp.
- Сторінка налагоджувальної інформації рушія LLama.cpp: Тут, після увімкнення перемикача, можна переглянути службову інформацію, яку рушій виводить у консоль під час завантаження моделі та формування відповіді. Різні рівні налагодження окремих кольорів.
- Токен репозиторію HuggingFace: для деяких завантажень моделей з репозиторію HuggingFace, наприклад, моделей Google, потрібен токен. Ви можете ввести токен вручну. Якщо ви цього не зробили, застосунок підтримує авторизацію через сайт HuggingFace. Якщо для моделі потрібна авторизація, спробуйте авторизуватися через сайт і додати отриманий токен. У цьому випадку він буде підключений у полі токена.
- Копіювати/вставити налаштування застосунку в буфер обміну: Ви можете скопіювати всі налаштування застосунків у форматі JSON в буфер обміну, вставити їх з буфера обміну або надіслати SMS-повідомлення. Зверніть увагу, що налаштування різних версій застосунків можуть бути несумісні.
- Розгляд заявок: Оцініть застосунок у Google Play. Зверніть увагу, що це експериментальний застосунок, і в деяких випадках і на деяких моделях він може працювати в автономному режимі.
- Очистити історію чату: Очистити всі збережені повідомлення.
- Відновити налаштування застосунку за замовчуванням: Видаляє всі налаштування застосунків. Іноді при оновленні версії застосунку, якщо в попередній версії були виявлені серйозні помилки, пов'язані з налаштуваннями застосунку, при оновленні до стабільнішої версії налаштування також будуть видалені.
- Налаштування пам'яті

- Налаштування пам'яті: Запуск моделей LLM на смартфоні потребує великого обсягу вільної оперативної пам'яті. На цьому екрані можна побачити стан доступу до оперативної пам'яті, а також налаштувати сповіщення або вивантаження моделі при її нестачі. У коді рушія C++ вбудована функція, яка приймає параметри з цього екрана та зупиняє генерацію при недостатньому обсязі пам'яті. Однак у деяких випадках пам'ять може раптово перерватися, і застосунок закриється. Розмір контекстної моделі безпосередньо впливає на обсяг споживаної оперативної пам'яті. Розмір контексту можна налаштувати на сторінці налаштувань рушія. На сторінці конфігурації пам'яті також відображаються архітектура процесора та відповідний набір інструкцій.
- Налаштування підказок: На цій сторінці ви можете створювати, зберігати, зберігати в передустановках і видаляти з передустановок підказки. Підказка використовується для всіх рушіїв і додана в перше повідомлення діалогу. Підказку за замовчуванням видалити не можна, також при зміні мови підказка за замовчуванням скидається на двомовну мову. Якщо ви хочете використовувати власну підказку, не зберігайте її як підказку за замовчуванням.

- Налаштування шаблону: Для взаємодії з різними моделями рухів LLama.cpp використовує різні шаблони. Зазвичай передустановки однакові для однієї моделі корпусу. На цій сторінці ви можете оновити або додати передустановки для різних моделей. Якщо в застосунку активована модель, при відкритті цієї сторінки буде вибраний відповідний шаблон.

- Ім'я шаблону: Шаблони із завантаженою моделлю через «Ключ імені моделі». Ви можете використовувати імена для кількох моделей, використовуючи той самий шаблон.
- Шаблон для першого повідомлення: Шаблон першого повідомлення має включати підказку. При надсиланні повідомлення моделі параметр Prompt_text замінюється підказкою, а параметр message_text — повідомленням користувача.
- Зупинити генерацію ключа світу: ключове слово, при отриманні якого від моделі застосунок зупинити генерацію. Це необхідно для деяких моделей, при навчанні або модифікації були допущені помилки, в результаті чого модель може не використовувати кориговані ключові слова, які рушій не розпізнає, і генерація яких відбуватиметься нескінченно. Ви можете використовувати кілька ключових слів, розділених символами.
- Замінити ключовий світ: моделі можуть повернути службові слова у відповідь. Тут ви можете перелічити ключові слова, які будуть видалені з відповіді, у форматі «ключове слово» -> «чим його можна замінити». Наприклад, ви можете замінити службовий тег про те, що модель голови відповідає вашій загальній думці.
- Налаштування рушія LLama.cpp Налаштування рушія LLama.cpp. Ви можете зберегти налаштування у вигляді пресетів. Докладніше про пристрої та їхній вплив можна прочитати у статтях про моделі LLM. Ось із деяких із них:

- Розмір контексту: Максимальна кількість токенів, яку модель може «запам'ятати» одночасно. Обсяг ОЗП впливає на розмір контексту, рекомендовані значення: 2–4 ГБ ОЗП — 128–256 токенів, 6–8 ГБ ОЗП — 256–1024 токенів, 12–16 ГБ ОЗП — 1024–32000 токенів.
- Розмір відповіді: Максимальна кількість токенів, яку може згенерувати модель.
- Температура: Плаваюче значення температури (використовується, якщо увімкнено вибір температури). Керує випадковістю. 1,0 = нейтрально, 0,7 = спостережливо, 1,3 = творчо.
- Топ-К: Цілочисельне значення для Топ-К. Використовується, якщо use_top_k має значення true. Вказує кількість токенів, що зберігаються на верхніх позиціях.
- Топ-П: Плаваюче значення для Топ-П. Використовується, якщо use_top_p дорівнює true. має порогове значення кумулятивної ймовірності (наприклад, 0,9).
- Теми: Кількість потоків, використаних для з'єднання.
- Пакет потоків: Кількість потоків, використаних для генерації.
- Семплери: Вибір семплера, який оброблятиме необроблені значення.
- Більше: Докладнішу інформацію ви можете знайти в моїй статті. Нейронні мережі простими словами
- Налаштування рушія MediaPipe: Налаштування рушія MediaPipe. Ці налаштування частково повторюють налаштування з LLama.cpp.

- Налаштування рушія LocalHost :

- Налаштування локального хоста Ollama Ви можете запустити Ollama на комп'ютері, щоб обмежити відповіді для графічного процесора та підключитися за IP-адресою. Для запуску команди: $env:OLLAMA_HOST="0.0.0.0" - встановлює змінне середовище для роботи із зовнішньою IP-адресою, без цього Ollama слухатиме лише локальний хост усередині комп'ютера setx OLLAMA_HOST 0.0.0.0 /M - запис у постійні змінні середовища, це потрібно зробити від імені адміністратора та перезапустити термінал ollama pull gemma3n:e4b - завантажує модель gemma3n ollama serve - запускає ollama ollama list - показує завантажені моделі після завантаження моделі та запуску Ollama, модель буде видна в застосунку IP-адреса — адреса вашого комп'ютера в мережі, зазвичай 192.168.1.1. ., ви можете побачити це в системі Wi-Fi на вашому комп'ютері або в маршрутизаторі
- Налаштування OpenAI LocalHost: Ви можете активувати модель на своєму комп'ютері в LM Studio або інших програмах, сумісних з API OpenAI, щоб отримати відповіді для графічного процесора та підключитися за IP-адресою. IP-адреса — це адреса вашого комп'ютера в мережі, зазвичай 192.168.1.1. ., ви можете побачити його через Wi-Fi на своєму комп'ютері або через маршрутизатор. Для прослуховування LM Studio на порту вашого комп'ютера виберіть LM Studio - Розробник - Налаштування - Обслуговувати в локальній мережі і заблокуйте його, встановивши перемикач «Стан роботи».
- Налаштування RAG :

Якщо ви додали документ у сусіднє вікно моделі і його розмір не обмежує ліміт сторінки, встановлений у налаштуваннях, то при повороті відповіді він буде доданий до контексту сусіднього вікна моделі.
Якщо обмежити документ вище, він буде розділений на частини, кожна частина буде векторизована, а при виборі значення буде знайдений відповідний вектор, і його текст буде доданий до розділів контексту. Результати розглядаються: кількість результатів пошуку у векторній базі даних і кількість результатів з доданого документа, які будуть додані до контексту при повороті відповіді. Мінімальна точність схожості: визначає мінімально допустиме значення схожості між двома векторами, щоб вони вважалися збігами.
Пари зі схожістю нижче цього порога в зоні перешкод вимикаються.
Типові рекомендовані значення Мінімальний показник схожості:.
0,7–0,8 для суворих відповідностей з високою релевантністю.
0,5–0,7 для помірної схожості, де допускаються часткові збіги.
менше 0,5 лише для широких приміток або дослідницького пошуку. Додати включені документи у векторні ресурси даних: Документ, доданий під час розмови з моделлю, а також буде доданий у векторні ресурси даних, у цьому випадку, при увімкненому RAG, щоразу при виконанні запиту виконуватиметься пошук у векторній базі даних, і відповідний документ буде доданий до запиту контексту. Розмір фрагмента токена: Максимальна кількість токенів, дозволена в одному текстовому фрагменті перед розділенням.
Якщо значення занадто велике, модель вбудовування може дати збій або видати помилку, оскільки перевищить максимальний розмір вхідних даних моделі. Перекриття фрагментів, лише для методу, пропонує: Визначити кількість токенів з кінця одного фрагмента, які повторюються на початку наступного, для збереження контексту. Розділити фрагменти тексту, що перевищують це значення, на частини: Розбити текст на частини, якщо його довжина збільшить зазначену кількість символів.
Також впливає на документи, додані під час діалогу, всі документи більшого значення перетворюються на текст і виконують пошук за векторами.
Якщо документ занадто великий, модель LLM вичерпає обмеження і не зможе згенерувати відповідь. Максимальна кількість символів у блоці: Обмежте кількість символів у блоці.
При використанні методу Sentences довжина речення може бути великою, і це призведе до збою моделі вбудовування.
- Налаштування векторної бази даних :

Ви можете вручну додати документ або текст у векторні ресурси даних.
При додаванні до бази даних документ буде ділитися на частини, і для кожної частини буде сформований вектор.
Якщо в сусідньому вікні з моделлю увімкнено RAG, то щоразу при формуванні вашого питання воно буде перетворене на вектор, у базі векторів будуть знайдені та додані під фрагменти документа, а їхній текст буде доданий до контексту вашого питання.
Ви також можете перевірити, які документи можна знайти в базі даних за текстом запиту, для цього можна скористатися фільтром.
Майбутні можливості
- API-сервер LocalHost: застосунок працюватиме як сервер, сумісний з API OpenAI та API Ollama.
- Виклик функції: Підтримка SDK для виклику функцій на пристрої, на цей момент він тимчасово вимкнений, оскільки не підтримує деякі функції, необхідні для інших функцій застосунку.
- LiteRT-LM NPU: LiteRT-LM Рушій буде доданий, я отримав доступ до документації і, можливо, зможу додати підтримку
Поточні реалізації рушія
llama.cpp
- Вікіпедія: en.wikipedia.org/wiki/Llama.cpp.
- GitHub: github.com/ggml-org/llama.cpp
- Андроїд: github.com/ggml-org/llama.cpp/tree/master/examples/llama.android
MediaPipe / TensorFlow
- Посібник Google: ai.google.dev/edge/mediapipe/solutions/guide .
- GitHub: github.com/google-ai-edge/mediapipe.
- HuggingFace: huggingface.co/litert-community
- Модель Kaggle: kaggle.com/models/google/gemma-3/tfLite
- Мейвен: mvnrepository.com/artifact/com.google.mediapipe
Локальні хост-рушії
- Оллама: Підтримується API Ollama, ви можете запустити Ollama на ПК та взаємодіяти з моделлю із застосунку.
- API OpenAI: підтримує API OpenAI, ви можете запустити LM Studio або будь-який застосунок, сумісний з API OpenAI, на своєму ПК і працювати з моделюванням із застосунку.
Майбутні ініціативи
LiteRT-LM
Після завершення альфа-тестування буде додана підтримка моделей NPU і .litertlm.
MLC LLM
поки що лише експериментальне використання, оскільки моделі на HuggingFace засновані на доступних файлах, і мені користуватися незручно, а також рушій погано зберігається під Android, і моделі працюють повільніше, ніж llama.cpp і MediaPipe, надалі планується перепакувати деякі моделі в спеціалізованому форматі в один файл і завантажити на HuggingFace
- Репозиторій: github.com/mlc-ai/mlc-llm
- Розгортання CLI: llm.mlc.ai/docs/deploy/cli.html.
- Розгортання Android: llm.mlc.ai/docs/deploy/android.html.
- Добірка моделей: llm.mlc.ai/docs/compilation/compile_models.html.
- HuggingFace: huggingface.co/mlc-ai
- Приклад моделі: huggingface.co/google/gemma-3-1b-it-qat-q4_0-unquantized
ONNX
поки що лише експериментальне використання, оскільки моделі на HuggingFace засновані на поширених файлах і немає можливості запакувати їх в один файл, користуватися рушієм незручно і він повільно працює під Android
- Вікіпедія: en.wikipedia.org/wiki/Open_Neural_Network_Exchange
- Середовище виконання ONNX для GenAI (Java): github.com/microsoft/onnxruntime-genai/tree/main/src/java
- API-документація: onnxruntime.ai/docs/genai/api/java.html.
- HuggingFace: huggingface.co/onnx-community
- Мейвен: mvnrepository.com/artifact/com.microsoft.onnxruntime
PyTorch
Я планую додати
- Вікіпедія: ru.wikipedia.org/wiki/PyTorch
- Офіційний сайт: pytorch.org.
- Репозиторій: github.com/pytorch/pytorch
Додаткові ресурси для читання
- Велика мовна модель (Вікіпедія)
- Перелік основних мовних моделей (Вікіпедія)
- Лама (мовна модель) (Вікіпедія)
- Тест мовної моделі (Вікіпедія)
- Модель оцінки документів (arXiv)
Архітектура
- Модульна чиста архітектура Роберта К. Мартіна
https://en.wikipedia.org/wiki/Роберт_С._Мартин
Технологічний стек
- Мови: Kotlin, Java, C++
- Система збірки: Gradle Groovy DSL, CMake.