ИИ на устройстве · 8 мин чтения
Как языковая модель помещается в телефон
Локальные ИИ-приложения просят удивительно много места, и причина не в раздутости. Понимание того, куда уходят эти гигабайты, заодно объясняет, почему модель быстра на новом телефоне и вяла на старом — и что на самом деле говорит вам имя файла
Q3_K_S .
Модель — это большая куча чисел
Языковая модель — это набор выученных параметров, весов. Каждый вес — число, и их миллиарды. «2B» в названии модели означает примерно два миллиарда параметров.
При хранении с полной точностью каждый вес занимает 4 байта. Два миллиарда весов по 4 байта — это около 8 ГБ, и это для одной из меньших моделей. В одну строку это и есть проблема: файл велик, потому что чисел много и каждое хранится точно.
Квантование: меньше битов на число
Квантование хранит каждый вес меньшим числом битов. Вместо 32 битов на вес используются 8, 4 или 3 — с масштабными коэффициентами на блок весов, чтобы приближение оставалось близким к оригиналу.
Сокращение размера примерно линейное:
- 32 бита — ~8 ГБ для модели на 2B. Полная точность, для телефона неподъёмно.
- 8 бит — ~2 ГБ. Очень близко к исходному качеству.
- 4 бита — ~1,1 ГБ. Обычная золотая середина.
- 3 бита — ~800 МБ. Заметно больше потерь, но всё ещё полезно.
- 2 бита — ещё меньше, и качество падает резко.
Это сжатие с потерями, как JPEG. Зайдите достаточно далеко — и увидите артефакты; в языковой модели они проявляются как расплывчатые ответы, повторы или уход от вопроса.
Квантование не делает модель глупее равномерно. Оно делает её менее точной, а неточность проявляется прежде всего на самых трудных входных данных.
Как читать имя файла
Название вида Q4_K_M или Q3_K_S — это рецепт, а не номер версии:
- Q4 / Q3 — примерно сколько битов на вес.
- _K — схема «k-quant», которая расходует свой бюджет битов неравномерно, сохраняя больше точности там, где модель наиболее чувствительна.
- _S, _M, _L — малый, средний или большой внутри этой схемы. Больший сохраняет больше качества и больше байтов.
Итак, Q3_K_S — это малый трёхбитный k-quant: сжат агрессивно, выбирается тогда, когда влезть в устройство важнее последних процентов качества.
GGUF: контейнер
GGUF — это формат файла, который содержит квантованные веса плюс метаданные, нужные среде выполнения: токенизатор, архитектуру, шаблон запроса. Один файл, без сопровождающей папки с конфигами.
Для телефонов он важен потому, что GGUF рассчитан на отображение в память. Вместо того чтобы читать 1,7 ГБ в оперативную память, среда выполнения отображает файл в своё адресное пространство, а операционная система подгружает те части, которые действительно используются. Поэтому модель больше свободной памяти телефона всё же может работать, и поэтому первый ответ после запуска приложения медленнее следующих — страницы ещё подгружаются.
Почему телефон греется
Породить слово — токен — значит прогнать вход через те самые миллиарды параметров. А затем сделать это снова для следующего токена. Ответ в сто слов — это сто проходов.
Это непрерывная арифметика на процессоре или нейроускорителе, то есть ровно та нагрузка, с которой телефоны хуже всего справляются термически. При нагреве устройства сбрасывают частоты, поэтому долгая непрерывная генерация замедляется по ходу. Хорошо сделанные локальные приложения распределяют работу — разносят задачи, чтобы чип успевал остыть, — а не ставят всё вплотную друг к другу.
Почему старым телефонам тяжело
Три ограничения, и все жёсткие:
- Пропускная способность памяти. Каждый токен означает прокачку значительной доли весов. Скорость генерации часто упирается в то, как быстро читается память, а не в вычислительную мощность.
- Оперативная память. Отображение в память помогает, но устройство, у которого её и так в обрез, будет постоянно подкачивать страницы, а система может просто убить приложение.
- Ускорители. У новых чипов есть аппаратные блоки под такую арифметику. Старые откатываются на универсальные ядра и работают в несколько раз медленнее.
Поэтому локальные ИИ-приложения указывают минимальное устройство, а не пытаются поддержать всё подряд. Ниже некоторой границы опыт не ухудшается — он становится непригодным.
Размен, на который вы идёте
Квантованная модель телефонного размера не сравнится с большой облачной на трудных рассуждениях. Для ограниченной задачи — что значит это слово в этом предложении, переведи эту фразу — её вполне достаточно, и она приходит с тремя свойствами, которых облачная модель дать не может: работает без соединения, ничего не стоит за использование и текст никогда не покидает устройство.
В этом и вся сделка ИИ на устройстве. Вы отказываетесь от самой большой возможной модели и получаете приватность, работу без сети и отсутствие счётчиков.
Как это делает ClickBook
ClickBook поставляется с квантованной моделью GGUF и запускает её через llama.cpp на вашем устройстве. На iOS она встроена в приложение, поэтому скачивать нечего. Подробнее о локальных ИИ-читалках, или посмотрите, как работает ClickBook.