Статьи ·

Домашний ИИ: как запустить языковую модель на своём компьютере

Языковые модели давно перестали быть прерогативой дата-центров. Открытые модели в несколько миллиардов параметров запускаются на обычном домашнем компьютере или ноутбуке, полностью офлайн: переписка никуда не уходит, интернета не требуется, а по скорости и качеству для бытовых задач такого запуска часто достаточно.

Модель Mistral Large 4
Иллюстрация модели Mistral Large 4. Источник изображения

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

llama.cpp - движок под капотом

llama.cpp - это открытый проект Георгия Герганова (Georgi Gerganov): движок инференса языковых моделей, написанный на C и C++. Он появился как способ запускать модели семейства Llama на CPU, а затем вырос в универсальный рантайм, который умеет работать и на видеокартах: поддерживаются CUDA (NVIDIA), Metal (Apple Silicon), Vulkan и SYCL, а также x86 и ARM процессоры с оптимизациями под векторные расширения. Важная практическая особенность - частичная выгрузка слоёв модели в оперативную память: если модель целиком не влезает в видеопамять, часть слоёв считается на CPU, и запуск работает, хотя и медленнее.

Отдельный бонус llama.cpp - встроенный сервер с OpenAI-совместимым API: подняв llama-server, вы получаете локальный эндпоинт вида http://localhost:8080/v1/chat/completions, к которому подключаются те же клиенты и скрипты, что ходят в облачные API.

Ollama - самый простой путь

Ollama - инструмент, который прячет всю техническую кухню за парой команд. Установка - один скрипт или пакетный менеджер, дальше всё делается так:

ollama pull llama3.2
ollama run llama3.2

Первая команда скачивает модель из встроенной библиотеки, вторая запускает интерактивный чат. В библиотеке Ollama - десятки открытых моделей: Llama, Mistral, Gemma, Phi, Qwen, DeepSeek-R1 и другие. Модель Llama разработана компанией Meta Platforms Inc. Meta Platforms Inc. включена в перечень организаций, признанных в Российской Федерации экстремистскими; её деятельность по реализации Facebook и Instagram запрещена в РФ.

Ollama сам использует GPU (NVIDIA, AMD, Apple Silicon), если она есть, держит фоновый сервис на localhost:11434 и предоставляет REST API плюс OpenAI-совместимый эндпоинт - то есть любой чат-клиент или скрипт можно переключить с облака на локальную модель заменой адреса.

Откуда берутся модели: Hugging Face

Файлы моделей в формате GGUF, который понимают и llama.cpp, и Ollama, живут в основном на Hugging Face: по данным энциклопедических сводок, там размещены десятки тысяч GGUF-сборок, а сама платформа имеет встроенную поддержку формата. Производители обычно публикуют модели в исходном полном формате, а квантованные GGUF-варианты под разные уровни точности выкладывают энтузиасты и мейнтейнеры сообщества. Скачивать стоит сборки от известных авторов с историей релизов, а не случайные файлы без описания.

Сколько нужно памяти: считаем сами

Объём памяти под модель считается просто: число параметров умножить на число байт на параметр, плюс запас на KV-кэш (промежуточные данные внимания, растут с длиной контекста) и служебные расходы рантайма (порядка 10-20%).

Ориентировочные значения байт на параметр из практических гайдов:

  • Q4_K_M: около 0,6 байт на параметр (модель 7B весит примерно 4,2 ГБ)
  • Q5_K_M: около 0,82 байт на параметр (7B - примерно 5,7 ГБ)
  • Q6_K: около 1,08 байт на параметр (7B - примерно 7,5 ГБ)

Примеры под готовые конфигурации памяти (приведены из гайдов, это оценки, а не гарантия):

  • 8 ГБ RAM/VRAM: модель 7-8B в Q4_K_M или 3B в Q5_K_M
  • 16 ГБ: 13-14B в Q4_K_M или Q5_K_M
  • 24 ГБ: 30-32B в Q4_K_M
  • 32 ГБ и больше: 32B в Q6_K/Q8_0, 70B в Q4_K_M с коротким контекстом

KV-кэш при длинном контексте заметно добавляет: на 8k токенах это сотни мегабайт, а на 128k он может соперничать по объёму с самими весами. Правило простое: сначала считаем вес модели, потом оставляем запас под кэш и не подбираем железо впритык.

Квантование: что означают Q4_K_M и другие уровни

Квантование - это хранение весов модели с меньшей точностью, чем исходные 16 бит. Формат GGUF поддерживает квантование от 2 до 8 бит, и у каждого уровня есть своя цена в качестве. Практически используются четыре семейства:

  • Q8_0 (около 8 бит на вес): почти без потерь относительно исходника, но файл большой
  • Q6_K (около 6,6 бит): качество, которое сложно отличить от исходного
  • Q5_K_M (около 5,5 бит): баланс качества и размера для машин с 16 ГБ памяти
  • Q4_K_M (около 4,8 бит): рекомендация по умолчанию, небольшая потеря на сложных рассуждениях
  • Q4_0 / Q3_K_M и ниже: заметная деградация, подходят для экспериментов

Буква K означает k-quant - более новое поколение квантования с учётом важности блоков весов: при той же битовой ширине оно даёт лучшее качество, чем старые схемы. Суффикс - зернистость: _S (small) чуть меньше и чуть хуже, _M (medium) - средний вариант, _L (large) - крупнее и точнее.

Отдельная тонкость K-квантов - смешанная точность: разные типы слоёв квантуются по-разному. Слои внимания, чувствительные к ошибкам, держат на более высокой точности, а более устойчивые полносвязные слои сжимают сильнее. Поэтому переход с исходного fp16 на Q4_K_M обычно уменьшает файл примерно вдвое при потере порядка одного-двух процентов относительной перплексии - именно поэтому Q4_K_M стал стандартом по умолчанию. Ниже Q3 начинается обрыв качества: повторы, слабое следование инструкциям, сломанный длинный контекст. Практическое правило из гайдов: берите самый высокий уровень квантования, который влезает в вашу память.

USB-ускорители: что реально умеет Google Coral

Идея подключить ИИ-ускоритель по USB выглядит заманчиво, но здесь нужна честность: существующие USB-ускорители предназначены не для языковых моделей.

Google Coral USB Accelerator - компактный модуль с чипом Edge TPU, подключается по USB 3.0 через разъём Type-C. Подтверждённые характеристики: пиковая производительность 4 TOPS в целочисленных операциях int8 при энергопотреблении около 2 Вт (2 TOPS на ватт), пиковый ток до 900 мА. Классический пример из документации: модель компьютерного зрения MobileNet V2 обрабатывается со скоростью около 400 кадров в секунду. Есть и «старшие родственники»: например, плата ASUS на восьми модулях Edge TPU с заявленными 32 TOPS.

Ключевое ограничение: Edge TPU работает только с моделями TensorFlow Lite, полностью квантованными в 8 бит и специально скомпилированными под этот чип. Это ускоритель для компактных задач - распознавание изображений, детекция объектов, классификация сенсорных данных на Raspberry Pi и встраиваемых системах. Запустить на нём языковую модель в духе llama.cpp нельзя: архитектура чипа и программный стек под это не заточены. Так что USB-ускоритель - отличный инструмент для edge-ИИ в робототехнике и умном доме, но к «домашнему ChatGPT на флешке» он отношения не имеет.

Что локальная модель умеет, а что нет

Реально решаются дома:

  • Диалог и помощь с текстами без отправки данных в облако - приватность здесь главный аргумент
  • Работа с собственными документами (RAG): поиск и ответы по локальной базе знаний
  • Помощь с кодом: объяснение, рефакторинг, черновики функций
  • Перевод, суммаризация, переписывание текстов

Даётся хуже или не даётся вовсе:

  • Сложные многошаговые рассуждения уровня топовых облачных моделей
  • Очень длинный контекст: у локальных сборок он ограничен, а KV-кэш съедает память
  • Свежие знания: у модели есть дата среза обучения, новостей она не знает
  • Обучение и дообучение крупных моделей дома - для этого нужны совсем другие мощности

О скорости: по оценкам практических гайдов, модель 7B в Q4 на современном CPU выдаёт порядка 10-15 токенов в секунду, на дискретной GPU - десятки токенов в секунду. Это комфортный темп для диалога, но не для пакетной обработки больших объёмов.

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

  1. Начинайте с Ollama и модели 7-8B в квантовании Q4_K_M - это самый короткий путь от нуля до работающего чата.
  2. Считайте память формулой «параметры × байты на параметр + запас на KV-кэш», а не на глаз.
  3. Берите самый высокий уровень квантования, который влезает в память; ниже Q4_K_M опускайтесь только осознанно.
  4. Модели берите с Hugging Face у проверенных авторов сборок.
  5. USB-ускорители вроде Google Coral - для компактных ML-задач на edge-устройствах, а не для языковых моделей: не ждите от них локального чат-бота.
  6. Локальный ИИ выигрывает в приватности и независимости от сети, а в глубине рассуждений и свежести знаний уступает облачным моделям - выбирайте инструмент под задачу.