Глиф Учебники

Урок 6. Локальные модели: нейросеть на своём компьютере

Курс «Искусственный интеллект» · урок 6 из 8 · 7 минут чтения

Большинство чат-ботов работает на серверах компаний: ваш текст уходит через интернет и обрабатывается там. Но есть модели с открытыми весами (open weights): их файлы можно скачать и запустить на своём компьютере. В этом уроке — зачем это нужно, какой компьютер подойдёт и как запустить первую модель.

Зачем запускать модель у себя

Есть и минусы. Модели, которые помещаются в домашний компьютер, обычно слабее крупнейших моделей на серверах: чаще ошибаются, хуже пишут по-русски. На слабом компьютере ответ печатается медленно.

Размер модели и память

Размер модели измеряют в параметрах — это её веса. В названиях моделей он указан буквой B (billion — миллиард): 3B — три миллиарда параметров, 8B — восемь, 70B — семьдесят.

Каждый вес — число. В исходном виде на него уходит 2 байта, поэтому модель на 8 миллиардов параметров занимает около 16 ГБ. Чтобы модели помещались в обычные компьютеры, их сжимают — квантуют: хранят веса с меньшей точностью, 8, 5 или 4 бита вместо 16. При 8 битах файл вдвое меньше исходного, при 4 битах — в 3–4 раза, а качество падает немного. Чаще всего берут вариант около 4 бит — в названиях файлов он помечен, например, Q4_K_M.

Модель 8B — 8 миллиардов весов один вес — биты файл модели исходный вид 16 бит = 2 байта около 16 ГБ 8 бит 1 байт вдвое меньше около 4 бит Q4_K_M 4,5–5 ГБ — в 3–4 раза меньше Меньше бит на вес — меньше файл, а качество падает немного.
Модель 8B в исходном виде — 16 бит на вес, около 16 ГБ; при 8 битах файл вдвое меньше, а вариант около 4 бит (Q4_K_M) — 4,5–5 ГБ, в 3–4 раза меньше.

Примерные размеры при таком сжатии:

МодельФайл, примерноВидеопамять, примерно
1B–4B1–3 ГБот 4 ГБ
7B–8B4,5–5 ГБот 8 ГБ
12B–14B7,5–9 ГБот 12 ГБ
27B–32B16–20 ГБот 24 ГБ
70Bоколо 40 ГБ48 ГБ и больше: несколько видеокарт

Видеопамяти нужно больше, чем весит файл: память занимает ещё и контекст — текст разговора, который модель держит в уме. Чем длиннее разговор, тем больше. Подробный расчёт — в справке Сколько видеопамяти нужно для нейросети.

Какой компьютер подойдёт

Если модель не поместилась в видеопамять целиком, часть её уходит в оперативную память. Работать будет, но медленнее — иногда в разы.

Поместилась целиком видеопамять свободно контекст модель всё на видеокарте — быстро Не поместилась видеопамять контекст модель оперативная память часть модели часть на процессоре — медленнее, иногда в разы
Если модель и контекст помещаются в видеопамять, работает видеокарта и ответ идёт быстро; если нет, часть модели уходит в оперативную память, и работа идёт медленнее, иногда в разы.

Где брать модели

Модели с открытыми весами публикуют их разработчики. Главный каталог моделей — сайт Hugging Face, у программы Ollama есть и свой каталог. У каждой модели своя лицензия: одни разрешают любое использование, другие ограничивают, например, коммерческое. Прочитайте её на странице модели.

Скачивайте модели со страниц разработчиков и проверенных каталогов. Форматы GGUF и safetensors хранят только данные модели. Старые файлы PyTorch в формате pickle (.pt, .pth) при загрузке могут выполнить встроенный в них код — открывать такие файлы из неизвестных источников опасно.

Ollama: общие шаги

Запускает модель отдельная программа. Самые известные — Ollama (проще для первой пробы) и llama.cpp (больше настроек, раздел ниже). Для начала хватит одной.

Ollama — бесплатная программа с открытым кодом. Она скачивает модели, запускает их и даёт с ними переписываться в терминале или из других программ.

Для Windows и macOS установщик берут на официальном сайте ollama.com. В Linux установка — одной командой со страницы загрузки:

Bash
curl -fsSL https://ollama.com/install.sh | sh

Эта команда скачивает скрипт и сразу его выполняет, а скрипт ставит программу в систему с правами администратора (спросит пароль sudo). Запускайте такие команды только с официального сайта программы, а при сомнениях сначала откройте адрес скрипта в браузере и прочитайте его.

Запустите модель — при первом запуске она скачается:

Bash
ollama run llama3.2

Эта модель небольшая (около 2 ГБ) и подходит для первой пробы. После загрузки появится приглашение — пишите вопрос и нажимайте Enter. Выход из разговора — команда /bye. Другие модели и их размеры — в каталоге на сайте Ollama; имя модели подставляется вместо llama3.2.

Полезные команды:

Bash
ollama list
ollama ps
ollama stop llama3.2
ollama rm llama3.2

ollama 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 — без нужды не трогайте её.

Ваш компьютер 127.0.0.1 — адрес этого же компьютера редактор кода окно чата свой скрипт Служба Ollama 127.0.0.1:11434 llama3.2 скачанные модели Сеть, интернет не открывать порт: у службы нет пароля
Служба Ollama слушает адрес 127.0.0.1:11434 — к ней подключаются программы этого же компьютера, а в сеть порт открывать нельзя: пароля у службы нет.

llama.cpp: общие шаги

llama.cpp — открытая программа для запуска моделей в формате GGUF. Она работает и на процессоре, и на видеокартах разных производителей, а настроек у неё больше, чем у Ollama.

  1. Получите программу: готовые сборки лежат на странице выпусков (Releases) проекта на GitHub, есть и сборка из исходников по инструкции в README.
  2. Скачайте модель в формате GGUF — обычно вариант Q4_K_M.
  3. Запустите сервер с моделью и откройте в браузере адрес, который он напишет при запуске: там окно чата.

Команда для третьего шага выглядит так (путь к файлу — свой):

Bash
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 той версии, которую скачали.

Если не работает

Коротко

Проверьте себя

1. Что означает 8B в названии модели?
2. Зачем модели квантуют?
3. Модель работает, но очень медленно, а ollama ps показывает часть на CPU. В чём дело?
4. Почему не стоит открывать порт Ollama в интернет?