Обложка: LLM в кармане: запускаю локальные модели на Samsung S24 Ultra через PocketPal
Обложка: LLM в кармане: запускаю локальные модели на Samsung S24 Ultra через PocketPal

Последние материалы мы посвятили графическим пайплайнам: как собирать сцены и стили в WebUI Forge, где помогает Flux, и как добиваться управляемости через ControlNet. Логичный следующий шаг - добавить текстовый слой, который формирует смысл: брифы, описания, сценарии, заголовки и итоговые тексты под публикацию. Именно его мы переносим в карман - в формате локальной LLM на смартфоне.

В этой статье мы разберём PocketPal на Samsung S24 Ultra: как поставить модели в GGUF, какие кванты выбирать под 12 ГБ RAM, как оценить требуемую память (модель + KV-кэш), какие скорости генерации ждать и как настроить параметры, чтобы телефон оставался шустрее и не «уходил в троттлинг».

Почему смартфон? Две причины: приватность (данные не покидают устройство), офлайн-режим (работает в дороге и на выезде). Для креативных задач это означает: черновики текстов, сводки брифов, подписи к визуалу и техзадания для графического пайплайна - там, где нет Wi-Fi и интернета.

Что такое PocketPal?

PocketPal — мобильный клиент для локального запуска компактных языковых моделей в формате GGUF (семейство llama.cpp). По сути, это как LM Studio только не на вашем компьютере или ноутбуке, а на смартфоне.

Официальный GitHub приложения: https://github.com/a-ghorbani/pocketpal-ai

Испытывать будем на телефоне: Samsung S24 Ultra, 12 ГБ RAM

Будем смотреть и сравнивать: 3B/7B/12B (несколько квантов Q4/Q5/Q8).

Смотреть нагрев телефона при работе будем с помощью программы ЦПУ Х, а проверять работоспособность кода из нейронки на Acode + Live Server (Расширение).

Тутор (как найти, скачать и начать работать)

  1. Открываем Play Market и пишем в поиске PocketPal;

  2. Загружаем;

  3. Открываем PocketPal и видим чистый лист - чтобы начать работать - нужно загрузить модель либо из предложенных, либо с Hugging Face.

PocketPal в Play Market
PocketPal в Play Market

Предложенные модели все работают быстро, но, если хочется, кроме этого, чтобы было качественно - нужно поискать нужные модели на Hugging Face.

Поиск и загрузка нужных моделей для PocketPal с Hugging Face
Поиск и загрузка нужных моделей для PocketPal с Hugging Face

После загрузки моделей - у вас будет 2 «папки» - готовые к запуску модели или модели, которые нужно загрузить.

Чаты в PocketPal
Чаты в PocketPal

Удобно, что после загрузки моделей их можно группировать.

Не беспокойтесь, что можете загрузить модель, а она после запуска приведёт к «крашу» вашего телефона - такие модели помечены красным знаком «Memory Warning»:

Однако, даже не смотря на этот знак, и судя по моим тестам и расчёту безопасной работы с этого сайта: https://huggingface.co/spaces/oobabooga/accurate-gguf-vram-calculator а вот ссылка на исследования как производилась эта формула расчёта: https://oobabooga.github.io/blog/posts/gguf-vram-formula/ - загружать модели весом более 6,5гб и более 8B – не рекомендуется. Да, они будут запускаться, но вызывать троллинг на телефоне.

Создатель PocketPal выложил на своей странице бенчмарки работы своего приложения на разных устройствах, Samsung S24 Ultra - среди них не было, поэтому я отправил свои тесты в его таблицу – вы можете сделать так же, проведя бенчмарк на своём устройстве, по своему желанию: https://huggingface.co/spaces/a-ghorbani/ai-phone-leaderboard

Бенчмарки работы разных моделей в PocketPal на Samsung S24 Ultra
Бенчмарки работы разных моделей в PocketPal на Samsung S24 Ultra

Во время тестов ваш телефон должен быть открыт на экране проведения теста.

Некоторые модели несмотря на большее количество параметров показали настолько черепашью скорость, к примеру модель - Gemma-3-12B-IT-Abliterated-v2, что было принято решение не использовать их в дальнейшем тестировании.

На настоящий момент я вывел несколько моделей наиболее подходящих под:

  1. Копирайтинг и писательство: Qwen-2.5-7B-Instruct и Llama-3.2-3B-Instruct Q6_K;

  2. Кодинг: Qwen-2.5-Coder-7B-Instruct-Q4_K_M;

  3. Для всего (поговорить, покодить, копирайтинг) – Gemma-3n-E2B-IT-Q8_0;

  4. Математика: Phi-3.5 mini 4k Instruct (Q4_K_M).

Примечание: для кодинга на телефоне, в некоторых чатах на Reddit и обсуждениях на GitHub советуют использовать либо Mistral-NeMo-12B-Instruct — Q4_K_M, либо DeepSeek-R1-Distill-Llama-8B, но и тот и тот вариант генерируют код до такой степени медленно – около 1 слова в 5 минут, что от них было принято решение отказаться).

Так же мной были сравнены Saiga-Llama-3-8B (русский тюн на копирайтинг по сравнению с Llama-3.2-3B-Instruct Q6_K, но я не вывел больших отличий не смотря на разницу в 5B параметров).

Кодинг с Qwen-2.5-Coder-7B-Instruct-Q4_K_M

Предложим нейросети написать нам простенький сайт-лендинг для рекламы наручных часов Tissot. А после выдачи результата скопируем код в Acode и проверим работоспособность в Live Server:

Qwen-2.5-Coder-7B-Instruct-Q4_K_M + Acode + Live Server
Qwen-2.5-Coder-7B-Instruct-Q4_K_M + Acode + Live Server
Acode + Live Server
Acode + Live Server

Сравним температуру аккумулятора:

ЦПУ Х: сравнение температуры - до и после использования модели
ЦПУ Х: сравнение температуры - до и после использования модели

В целом, в пределах допустимых значений.

Всё работает. Как мобильный инструмент, с уровнем интеллекта на 3 или 8B PocketPal себя оправдывает.

Кроме создания новых чатов, выбора и загрузки моделей и бенчмарков вы так же можете настроить и выбрать себе друзей во вкладке Pals – на выбор Ассистент (настройки: имени и модели), Ролевая игра (настройки: имени, модели, мира, локации, роли в мире, роли пользователя в этом мире, ситуации и стилю (серьёзный, расслабленный и т.д.) и можно задать свой системный промт (не советую менять)) и Анализ видео в реальном времени  - эту функцию мне хотелось больше всего затестить, но именно та модель которую приложение мне предложило использовать почему-то не работала))

Настройка Pals в PocketPal
Настройка Pals в PocketPal
Анализ видео в реальном времени, настройка Pals в PocketPal
Анализ видео в реальном времени, настройка Pals в PocketPal

Если вы тоже тестировали это приложение и у вас эта функция работала можете рассказать в комментариях почему?)

 Так же есть стандартные настройки, настройки моделей и настройки чата и отправить отзыв разработчику.

BOS (Begin-Of-Sequence / Sentence) - специальный токен начала последовательности. Нужен многим моделям (семейства Llama/Qwen/Gemma и др.) для корректного старта обработки/генерации. Обычно добавляется токенизатором или шаблоном чата; изменять вручную не стоит.

EOS (End-Of-Sequence / Sentence) - специальный токен конца последовательности. Служит естественным «стоп-сигналом»: модель прекращает выдачу, когда сгенерировала EOS. Тоже изменять не стоит)

Add generation prompt - опция, которая вставляет в конец отформатированного промпта «префикс ответа ассистента», чтобы модель поняла: дальше должен говорить ассистент. Это apply_chat_template(..., add_generation_prompt=True). Без этого префикса многие чат-модели отвечают хуже или продолжают роль пользователя.

Chat Template - Jinja-шаблон (часть токенизатора/метаданных модели), который задаёт точный формат чата: где стоят role-теги, BOS/EOS, спец-токены, разделители и т. п. Конкретный шаблон различается между семействами (например, Llama-3, Qwen-2.5, ChatML-подобные и т. д.) и хранится в tokenizer_config.json/метаданных модели. Использование «родного» шаблона критично для качества.

Настройки и Отправить отзыв в PocketPal
Настройки и Отправить отзыв в PocketPal

N PREDICT - лимит генерируемых токенов за ответ. Больше = длиннее текст и выше расход памяти/времени.

Include thinking in context - добавлять ли «мысленные» части (например, …) в историю чата. Нужно включать только для reasoning-моделей.

Temperature - «риск» выбора. Ниже = детерминированнее; выше = креативнее.

Top-K - оставлять K самых вероятных токенов. Top-P (nucleus) - минимальный пул токенов, чья суммарная вероятность ≥ p. Удобнее, чем жёсткий Top-K.

Min-P - отфильтровать слишком маловероятные токены. Полезно против бреда (не нужно задирать слишком высоко).

XTC Threshold / XTC Probability - экспериментальный «отрезатель» низких вероятностей: оставить без изменений.

Typical-P - это альтернатива Top-P. При 1.0 - выключено. Если ставить (0.3–0.8), Top-P лучше убрать.

Penalty last_n - сколько последних токенов учитывать и держать в памяти для анти-повторов.

Penalty freq / Penalty present - штрафы как у OpenAI:
- freq уменьшает частые токены (меньше слов-паразитов),
- present наказывает за повтор появления токена (стимулирует вводить новые).

Mirostat (v1/v2) - саморегулируемая «креативность». Хорош для длинной прозы или рассказа. v2 — стабильнее.

Seed — зерно рандома как и в WebUI Forge. -1 — случайно.

Jinja — использование родного chat-template модели. Оставить включённым по умолчанию.

Текущие значения = универсальны, лучше оставить всё без изменений: Temp 0.70, TopK 40, TopP ~0.98–1.0, MinP 0.05, TypicalP 1.0 (off), XTC off, last_n 64, freq/present 0, Mirostat off.

Немного об обозначениях моделей и квантизации

Квантизация

Разумеется, чем меньше квант, тем быстрее работает модель, но тем и меньше она знает, поэтому по возможности используйте Q8_0 или Q6_K или на крайний случай Q4_K_M – меньшие кванты работают в плане знаний гораздо хуже.

IT и Abliterated

Что такое «IT»? Суффикс IT означает Instruction-Tuned («инструкционно дообученная»). Это вариант, специально дообученный следовать инструкциям в диалоге (а не «сырой» pre-trained pt).

Что значит «Abliterated»? Abliteration - техника «разблокировки» LLM без полномасштабного дообучения: вычисляют «направление отказа» в скрытых состояниях и ортогонализуют (вычитают) его из ряда модулей (например, o_proj) с весовыми коэффициентами. Цель - резко повысить acceptance rate запросов, сохранив связность ответов.

Отказы в моделях - это намеренный ответ модели не выполнять запрос. Он появляется, когда срабатывают встроенные «ограждения» (guardrails) или когда модель «честно» признаёт нехватку знаний/прав доступа. В версиях Abliterated работают «безопастные» отказы они срабатывает на темы вреда, нелегала, персональных данных, чувствительного контента и пр. Это часть этики модели. Иначе говоря, если запустить версию Gemma-3-12B-IT-Abliterated-v2 на компьютере с LM Studio мы получим модель, которая совершенно спокойно будет относится на различные «вредные» промты. Для чего это нужно? Ну например, для написания сюжета компьютерной игры в виде визуальной новеллы и проработки сценария – в данном случае мне не нужна безопастная модель - наоборот (так как моя игра в жанре фэнтези) чем больше модель на придумывает - тем из большего количества идей и вариантов можно писать сценарий на «чистовик».

Так же существуют эпистемические (uncertainty-refusal) и платформенные/операционные отказы - выражаются соответственно в отклонении задачи из-за недостатка контекста/компетенции: «не могу гарантировать точность», «нет доступа к Интернету» или во втором случае из-за ограничения окружения: «не могу выполнить код/скачать файл/открыть ссылку».

Параметры модели и количество токенов

Параметры модели и количество токенов – это разные вещи. К примеру: 12B - это число параметров модели (≈12 миллиардов весов), а контекстное окно - отдельная характеристика. Например, у Mistral-NeMo-12B заявлено окно до 128k токенов; у семейства Gemma-3 тоже до 128k. На смартфоне реальный предел ниже из-за памяти под KV-кэш.

KV-кэш - это буфер, куда модель при генерации сохраняет матрицы K (keys) и V (values) для каждого уже обработанного токена на каждом слое трансформера. Благодаря этому при добавлении нового токена не пересчитывается всё с нуля: модель «смотрит» на сохранённые K/V и считает внимание только к ним.

В общем и целом, кроме загружаемого веса модели, скажем в 6гб нужно смотреть на длину контекста (в токенах) и к этому нужно не забыть приплюсовать RAM на системные «нужды», предположим около 2гб. Итого при 6гб модели мы имеет 4гб на длину контекста для нашего разговора - имеется ввиду весь диалог, который будет помнить модель, то есть весь чат – из исходных 12гб на Samsung S24 Ultra.

Теперь что такое токены

Токен — это единица разбиения текста в токенизаторе (подслова, слова, пунктуация и даже пробелы). Токенизатор — это алгоритм, который превращает строку в последовательность ID из словаря модели (в 30–200 тыс. единиц). На практике используют подсловные схемы:

  • BPE / byte-level BPE — склеивает частые пары символов в подслова; устойчив к редким словам и эмодзи;

  • WordPiece / Unigram (SentencePiece) — подбирает набор подслов, оптимальный для языка.

Для русского языка токен из 1 слова часто раскладывается на 2-4 подслова.

Последовательность токенов определяется исходя из вероятностной модели.

Итог

PocketPal вполне реально использовать в качестве инструмента для копирайтинга и для написания кода в поездке на поезде или на отдыхе в лесу или на пляже, но не более. Как только представиться возможность лучше сразу перейти на ноутбук или стационарный ПК с соответствующими инструментами.

Больше полезного про AI, 3D и 2D-графику: https://t.me/photoudzen

Комментарии (4)


  1. sergeym69
    12.08.2025 23:35

    Можно просто в прямо Chrome на Android загружать и работать с LLM https://chat.webllm.ai/ надо выбирать модели у которых в конце -q4f32_1-MLC
    Модель типа Qwen3-1.7B может работать почти на любом телефоне


    1. Dmitrii_DAK Автор
      12.08.2025 23:35

      Крутая вещь! Спасибо тебе комментатор sergeym69, твоя информация очень ценна и полезна для меня и всех кто прочтёт эту статью


  1. pol_pot
    12.08.2025 23:35

    То чувство когда не знаешь куда применить новейшую 24б модельку от мистраля или 32б от квина из-за того что они откровенно туповаты и даже языком владеют не вполне а тут люди пишут тексты и программы модельками размером 4-7б и вроде даже довольны результатом.


  1. Spyman
    12.08.2025 23:35

    Всё жду, когда что-то такое появится в виде библиотеки, чтобы легко интегрировать llm в свое приложение и оно работало локально на устройстве