Урок 6. Локальные модели: нейросеть на своём компьютере
Большинство чат-ботов работает на серверах компаний: ваш текст уходит через интернет и обрабатывается там. Но есть модели с открытыми весами (open weights): их файлы можно скачать и запустить на своём компьютере. В этом уроке — зачем это нужно, какой компьютер подойдёт и как запустить первую модель.
Зачем запускать модель у себя
- Приватность. Текст не покидает компьютер: подходит для личных записей и рабочих документов.
- Без интернета. Скачанная модель работает и без сети.
- Без лимитов и подписок. Ограничение одно — мощность компьютера.
- Эксперименты. Можно сравнивать модели, менять настройки, подключать модель к своим программам.
Есть и минусы. Модели, которые помещаются в домашний компьютер, обычно слабее крупнейших моделей на серверах: чаще ошибаются, хуже пишут по-русски. На слабом компьютере ответ печатается медленно.
Размер модели и память
Размер модели измеряют в параметрах — это её веса. В названиях моделей он указан буквой B (billion — миллиард): 3B — три миллиарда параметров, 8B — восемь, 70B — семьдесят.
Каждый вес — число. В исходном виде на него уходит 2 байта, поэтому модель на 8 миллиардов параметров занимает около 16 ГБ. Чтобы модели помещались в обычные компьютеры, их сжимают — квантуют: хранят веса с меньшей точностью, 8, 5 или 4 бита вместо 16. При 8 битах файл вдвое меньше исходного, при 4 битах — в 3–4 раза, а качество падает немного. Чаще всего берут вариант около 4 бит — в названиях файлов он помечен, например, Q4_K_M.
Примерные размеры при таком сжатии:
| Модель | Файл, примерно | Видеопамять, примерно |
|---|---|---|
| 1B–4B | 1–3 ГБ | от 4 ГБ |
| 7B–8B | 4,5–5 ГБ | от 8 ГБ |
| 12B–14B | 7,5–9 ГБ | от 12 ГБ |
| 27B–32B | 16–20 ГБ | от 24 ГБ |
| 70B | около 40 ГБ | 48 ГБ и больше: несколько видеокарт |
Видеопамяти нужно больше, чем весит файл: память занимает ещё и контекст — текст разговора, который модель держит в уме. Чем длиннее разговор, тем больше. Подробный расчёт — в справке Сколько видеопамяти нужно для нейросети.
Какой компьютер подойдёт
- Видеокарта — главное для скорости. Модель работает быстро, если целиком помещается в видеопамять. Лучше всего поддерживаются видеокарты NVIDIA; карты AMD и Intel тоже работают, но не все модели карт и не во всех системах.
- Без видеокарты модель работает на процессоре и в оперативной памяти — заметно медленнее. Для маленьких моделей (1B–4B) это терпимо, большие будут печатать по слову в секунду или медленнее.
- Mac с процессором Apple (M1 и новее) использует общую память и для процессора, и для графики. Модель работает на нём быстро, если помещается в эту память с запасом для системы и программ.
- Диск: модели весят гигабайты, держите запас места.
Если модель не поместилась в видеопамять целиком, часть её уходит в оперативную память. Работать будет, но медленнее — иногда в разы.
Где брать модели
Модели с открытыми весами публикуют их разработчики. Главный каталог моделей — сайт Hugging Face, у программы Ollama есть и свой каталог. У каждой модели своя лицензия: одни разрешают любое использование, другие ограничивают, например, коммерческое. Прочитайте её на странице модели.
Скачивайте модели со страниц разработчиков и проверенных каталогов. Форматы GGUF и safetensors хранят только данные модели. Старые файлы PyTorch в формате pickle (.pt, .pth) при загрузке могут выполнить встроенный в них код — открывать такие файлы из неизвестных источников опасно.
Ollama: общие шаги
Запускает модель отдельная программа. Самые известные — Ollama (проще для первой пробы) и llama.cpp (больше настроек, раздел ниже). Для начала хватит одной.
Ollama — бесплатная программа с открытым кодом. Она скачивает модели, запускает их и даёт с ними переписываться в терминале или из других программ.
Для Windows и macOS установщик берут на официальном сайте ollama.com. В Linux установка — одной командой со страницы загрузки:
curl -fsSL https://ollama.com/install.sh | shЭта команда скачивает скрипт и сразу его выполняет, а скрипт ставит программу в систему с правами администратора (спросит пароль sudo). Запускайте такие команды только с официального сайта программы, а при сомнениях сначала откройте адрес скрипта в браузере и прочитайте его.
Запустите модель — при первом запуске она скачается:
ollama run llama3.2Эта модель небольшая (около 2 ГБ) и подходит для первой пробы. После загрузки появится приглашение — пишите вопрос и нажимайте Enter. Выход из разговора — команда /bye. Другие модели и их размеры — в каталоге на сайте Ollama; имя модели подставляется вместо llama3.2.
Полезные команды:
ollama list
ollama ps
ollama stop llama3.2
ollama rm llama3.2ollama list показывает скачанные модели, ollama ps — запущенные сейчас, ollama stop выгружает модель из памяти, ollama rm удаляет её с диска. В выводе ollama ps столбец PROCESSOR показывает, где работает модель: 100% GPU — целиком на видеокарте; если там есть доля CPU, модель не поместилась в видеопамять.
В каталоге Ollama есть и облачные модели — с пометкой cloud в имени. Они работают не на вашем компьютере, а на серверах Ollama, и для них нужен вход в учётную запись. Если важна приватность, берите модели без этой пометки.
Ollama работает как служба по адресу 127.0.0.1:11434 — к ней подключаются другие программы: редакторы кода, окна чата, свои скрипты.
Не открывайте порт 11434 в сеть и тем более в интернет: у службы Ollama нет пароля, и любой, кто до неё достучится, сможет пользоваться моделями за счёт вашего компьютера, скачивать и удалять их. Адрес службы меняет переменная OLLAMA_HOST — без нужды не трогайте её.
llama.cpp: общие шаги
llama.cpp — открытая программа для запуска моделей в формате GGUF. Она работает и на процессоре, и на видеокартах разных производителей, а настроек у неё больше, чем у Ollama.
- Получите программу: готовые сборки лежат на странице выпусков (Releases) проекта на GitHub, есть и сборка из исходников по инструкции в README.
- Скачайте модель в формате GGUF — обычно вариант
Q4_K_M. - Запустите сервер с моделью и откройте в браузере адрес, который он напишет при запуске: там окно чата.
Команда для третьего шага выглядит так (путь к файлу — свой):
llama-server -m ./models/model-Q4_K_M.gguf -c 8192Ключ -m — файл модели, -c — размер контекста в токенах. Ключ -ngl задаёт, сколько слоёв модели держать в видеопамяти. По умолчанию сервер принимает подключения только с этого же компьютера (127.0.0.1).
Названия команд у llama.cpp менялись: в новых выпусках рядом с llama-server встречается вид llama serve. Сверяйтесь с README той версии, которую скачали.
Если не работает
- Ответ печатается очень медленно — модель не поместилась в видеопамять. Возьмите модель поменьше или сжатую сильнее, уменьшите контекст.
- Ошибка нехватки памяти (out of memory) — то же самое: модель меньше, контекст короче.
- Видеокарта не используется — обновите драйвер видеокарты с сайта её производителя.
- Модель плохо пишет по-русски — маленькие модели слабее в русском языке. Попробуйте модель крупнее или другую.
Коротко
- Модели с открытыми весами можно запустить у себя: приватно и без интернета.
- Размер модели — в миллиардах параметров (B); квантование до 4 бит уменьшает файл в 3–4 раза.
- Для скорости модель должна помещаться в видеопамять, иначе работает, но медленно.
- Ollama:
ollama run имя-модели, выход —/bye, список —ollama list. - llama.cpp запускает файлы GGUF; порт службы модели не открывают в интернет.