Назад в блог

Никто не говорит про RAM. Все провалы локальных LLM — это про RAM.

19 сентября 2026 г.

Зайдите в любую ветку про локальные LLM — спорить будут о GPU. Бенчмарки VRAM, карты на 24 ГБ, CUDA против ROCm, осталась ли 3060 «народной картой». А число, которое на самом деле решает, запустится ваша модель или нет, сидит в другом слоте — без бенчмарков и без маркетинга: сколько RAM у машины.

VRAM продаёт мечту. RAM решает, запустится ли модель вообще — и сколько контекста переживёт, когда запустится.

Я проверил это на машине перед собой, пока писал этот пост: Ryzen-десктоп с 32 ГБ RAM и GeForce RTX 3060 с 12 ГБ VRAM. Скачал llama3.1:8b — на странице загрузки 4,9 ГБ. Смотрите, что он зарезервировал на самом деле:

Снимок терминала с тестовой машины: ollama ps показывает, что llama3.1:8b резервирует 7,0 ГБ при 100 % GPU с контекстом 32 000 токенов, nvidia-smi показывает 7 963 из 12 288 MiB занято, а free -h — 31 GiB RAM

Весь аргумент умещается в один экран. «Модель на 4,9 ГБ» зарезервировала 7,0 ГБ до того, как ответить на первый промпт, — налог на контекст 43 % — и забрала себе 7 963 из 12 288 MiB VRAM. Веса никогда не были бюджетом. Бюджетом был контекст.

Откуда берутся лишние гигабайты

В заметках о памяти llama.cpp расписана арифметика, которую страницы загрузки опускают: вся память = веса модели + KV-кэш + вычислительный буфер. Постоянен только первый член. KV-кэш растёт линейно с длиной контекста, буфер — с размером батча. Ollama оборачивает llama.cpp, значит закон тот же — потому ollama ps и показал 7,0 ГБ для тега на 4,9 ГБ при окне в 32 000 токенов, и всё это — resident в VRAM.

Квантованная модель — не компромисс. Это признание, что память всегда и была настоящим бюджетом.

Поэтому вообще существует лестница квантования GGUF. Q4 — не религия; это способ уложить память в железо, которое у людей есть. И потому две «идентичные» связки на 8B ведут себя совершенно по-разному: модель та же, длина контекста другая, машины другие.

Таблица, которую никто не заполняет перед покупкой

Три класса моделей, оба типа памяти, карта на 12 ГБ и 32 ГБ RAM — конфигурация, которая реально стоит у тысяч разработчиков:

Класс модели (Q4)СкачиваниеВ памяти + 32k ctxНа 12 ГБ VRAMНа 32 ГБ RAM
7–8B (llama3.1:8b)4,9 ГБ7,0 ГБ (замер)100 % GPU, занято ~8 GiBедва заметно
13–14B (qwen2.5:14b)9,0 ГБ~12 ГБначинается offloadнормально
27–32B (gemma3:27b)17 ГБ~20 ГБ и большеCPU тащит весаединственная причина, почему это работает

Перечитайте последние две строки. На одной VRAM 14B с реальным контекстом — уже разделённый offload, а 27B невозможен. На 32 ГБ RAM оба просто медленные. Эта разница — между «невозможно» и «медленно» — и есть вся практическая разница между VRAM и RAM. Поместилось в VRAM — быстро. Поместилось в RAM — работает. Не поместилось нигде — вы свопитесь на NVMe, и время теряет смысл.

Offload идёт через PCIe, и FAQ Ollama честно называет цену: слои, не поместившиеся в GPU, считают на CPU, и пропускная способность падает вместе с долей GPU. Этот компромисс никто не выбирает осознанно. Он наступает тихо, слой за слоем, а симптом звучит как «локальные модели переоценены».

Честная бухгалтерия

Что сломалось или удивило, пока я писал этот текст, по порядку:

  1. Само число 43 %. Я ждал, что 8B займёт «примерно размер своего файла». Он резервировал 7,0 ГБ при 4,9 ГБ скачивания. Если меня это удивило — это удивит каждого, кто читает спецификации вместо ps.
  2. Сессия со скриншотами. Первая попытка поймала не то окно. Вторая сработала — она выше. Доказательства — это процесс, а не вайб, и цикл pull → снимок → ollama rm держит диск честным.
  3. Что не сломалось: GPU ни разу не переполнился. 8B при контексте 32k на 12 ГБ — действительно комфортно. Карта в порядке. Неправильно откалиброван дискурс вокруг карты.

Ничто из этого не значит, что GPU не важны — строка 100 % GPU на снимке и есть причина, почему генерация ощущалась мгновенной. Это значит, что GPU — второй вопрос. Выбор между Ollama и llama.cpp делается после того, как вы поняли, что помещается, а не до.

Правило, которое стоит запомнить

Нужно RAM = файл модели + KV-кэш под реальный контекст + 4 ГБ на то, чтобы оставаться компьютером. Для 7–8B в Q4 комфортны 16 ГБ. Для 14B–32B 32 ГБ перестают быть роскошью и становятся смыслом. VRAM покупают за скорость на нужном вам контексте; RAM — за всё, что вы когда-либо загрузите.

Один взгляд на ollama ps — и религия спецификаций тихо заканчивается.

Итого, два вопроса. Собирая следующую машину, вы покупаете VRAM ради бенчмарков, которые постишь, — или RAM ради моделей, которые реально запустите? И честно: сколько моделей, скачанных в два ночи, вы удалили до завтрака? Я удалил сегодня, прямо во время поста. Напишите в комментариях, что я не один такой — и по какую сторону линии RAM/VRAM стоит ваша сборка.

FAQ

Сколько RAM нужно для локального LLM?

Размер файла модели плюс контекст плюс ваш рабочий стол. 16 ГБ комфортны для моделей 7–8B в Q4; 32 ГБ превращают 14–32B из демо в повседневный инструмент.

Что важнее для локальных LLM: VRAM или RAM?

VRAM решает скорость, когда всё помещается в неё. RAM решает, запустится ли модель вообще и сколько контекста выживет. Offload по PCIe между ними — медленная середина, которую никто не любит.

Почему загруженная модель занимает больше памяти, чем размер скачивания?

KV-кэш и вычислительные буферы растут с длиной контекста. В документации llama.cpp приведена арифметика: веса + KV-кэш + вычислительный буфер — и только первое число есть на странице загрузки.

— mrsaynothing

— mrsaynothing

Opinions load-tested before shipping. Mostly.

Обсудить этот пост на dev.to dev.to ↗

Get the next argument by email

One email per post. Agree or tear it apart.

self-hosted · никаких третьих сторон · отписка в один клик

что это?

SSH Permission denied (publickey): настоящее решение

Нравятся заметки? Я зарабатываю этим на жизнь. нанять меня