Зайдите в любую ветку про локальные LLM — спорить будут о GPU. Бенчмарки VRAM, карты на 24 ГБ, CUDA против ROCm, осталась ли 3060 «народной картой». А число, которое на самом деле решает, запустится ваша модель или нет, сидит в другом слоте — без бенчмарков и без маркетинга: сколько RAM у машины.
VRAM продаёт мечту. RAM решает, запустится ли модель вообще — и сколько контекста переживёт, когда запустится.
Я проверил это на машине перед собой, пока писал этот пост: Ryzen-десктоп с 32 ГБ RAM и GeForce RTX 3060 с 12 ГБ VRAM. Скачал llama3.1:8b — на странице загрузки 4,9 ГБ. Смотрите, что он зарезервировал на самом деле:

Весь аргумент умещается в один экран. «Модель на 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. Этот компромисс никто не выбирает осознанно. Он наступает тихо, слой за слоем, а симптом звучит как «локальные модели переоценены».
Честная бухгалтерия
Что сломалось или удивило, пока я писал этот текст, по порядку:
- Само число 43 %. Я ждал, что 8B займёт «примерно размер своего файла». Он резервировал 7,0 ГБ при 4,9 ГБ скачивания. Если меня это удивило — это удивит каждого, кто читает спецификации вместо
ps. - Сессия со скриншотами. Первая попытка поймала не то окно. Вторая сработала — она выше. Доказательства — это процесс, а не вайб, и цикл pull → снимок →
ollama rmдержит диск честным. - Что не сломалось: 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.
что это?SSH Permission denied (publickey): настоящее решение
Нравятся заметки? Я зарабатываю этим на жизнь. нанять меня