Решение проблемИнструкция
Локальной модели не хватает VRAM? Веса и KV-кэш в gputaskman
Узнайте, что занимает память GPU, когда модель в Ollama или llama.cpp не грузится или тормозит, что подкрутить и когда проще взять API.

Содержание
Вчера локальная модель загружалась нормально, сегодня падает при старте или еле ползёт, а поменяли вы только длину контекста. Частый виновник — KV-кэш, и бесплатная терминальная утилита gputaskman покажет это, а не заставит гадать.
Обычный монитор GPU говорит, насколько память заполнена. Это «сколько», а не «почему». В README gputaskman (проверено 5 ноября 2026) он назван так: «An htop for what's inside your GPU, not just how full it is». Проект ранний, экспериментальный, с лицензией MIT — считайте его удобной лупой, а не приговором.
Что на самом деле занимает VRAM#
Представьте VRAM как чемодан. Внутри три вещи:
- Веса — сама модель. Размер фиксирован для данной модели и квантизации.
- KV-кэш — «краткосрочная память» модели о вашем разговоре. Растёт вместе с контекстом.
- Рабочие буферы — черновое место, которое нужно рантайму по ходу работы.
Когда говорят «модель не влезает», нередко веса помещаются, а кэш, который вы запросили сверху, — нет. От этого зависит решение, а обычный монитор это прячет.
Выберите свой случай
Что вы видите?
Выберите вариант, чтобы увидеть ответ
Падает сразу при загрузке
Одни веса или веса плюс кэш под вашу длину контекста больше свободной VRAM. Возьмите меньшую квантизацию или модель поменьше, либо сократите контекст.
Загружается, но тормозит после увеличения контекста
Скорее всего, KV-кэш вырос и часть работы больше не помещается в VRAM — вид процессов и разбивка это подтвердят. Сначала уменьшите длину контекста — это самый дешёвый рычаг.
Раньше работало, теперь нет
Память заняли другие: игра, браузер с аппаратным ускорением, второй сервер моделей. Откройте вид по процессам, прежде чем трогать модель.
Ставим gputaskman и смотрим по процессам#
README предлагает три способа: портативный ZIP для Windows, запуск из клона через uv run - или pip в виртуальном окружении Python 3.11+. Платформы, по README:
- Windows 10/11 64-bit с видеокартой NVIDIA или AMD (ZIP для x64 и ARM64 на странице Releases);
- Linux и WSL с NVIDIA (glibc 2.35+; WSL умеет читать счётчики хоста Windows);
- macOS на Apple Silicon — только из клона исходников, портативной сборки нет.
ZIP для Windows без подписи. Скачивайте их только со страницы Releases официального репозитория, github.com/shanselman/gputaskman. Точные команды берите из README: проект молодой, параметры могут измениться.
Когда запустили, для нашей задачи важны два вида:
- Вид устройства: занятая VRAM, загрузка GPU, PCIe, температура, питание, частоты и графики истории. Годится для вопроса «что-то подскочило?».
- Вид процессов: локальная память GPU по процессам, системная RAM, доступная GPU, активность движков и найденный рантайм (CUDA, HIP, Vulkan, Direct3D, ggml, ONNX Runtime).
В списке процессов найдите сервер модели (в Ollama — его встроенный раннер). Потом посмотрите остальных. Если браузер или игра держат пару гигабайт, ответ уже есть, и модель трогать не надо.
Веса, KV-кэш, буферы: откуда цифры#
Инспектор модели показывает архитектуру, квантизацию и размеры буферов, где они доступны. Важная оговорка: по README, веса, KV-кэш и рабочие буферы берутся из логов загрузки рантайма, если включено совместимое логирование. Для llama.cpp запустите свой llama-server с логом (-; по README, для размеров буферов нужен уровень 4). Для Ollama gputaskman использует server.log Ollama, если он доступен. Иначе это оценка по метаданным GGUF и размеру контекста в расчёте на размещение как в llama.cpp. Учёт KV по отдельным моделям внутри одного процесса пока не поддерживается.

Оценку читайте как «примерно», разбивку из логов — как «то, что сообщил рантайм». Для Ollama README говорит: встроенные раннеры определяются, GGUF-файлы получают имена из манифестов Ollama, а server.log используется, когда доступен. LM Studio поддержан частично: модели именуются по его папке и опрашиваются через локальный API, но проверено это на заготовленных ответах, а не сквозным тестом.
Можно сохранить два снимка в JSON и сравнить командой diff. Так легко ответить на «что изменилось, когда я перешёл с 4K на 16K контекста?»: снимок, смена настройки, перезагрузка модели, второй снимок.
Быстрая проверка
Модель загружается, но тормозит после увеличения длины контекста. Что проверить первым?
Показать ответ
Ответ: KV-кэш
Веса от длины контекста не зависят, а KV-кэш растёт вместе с ней. Если уменьшить контекст, кэш сразу сожмётся.
Какой рычаг крутить#
Разбивка даёт решение, а не просто картинку.
Большая часть — веса. Берите меньшую квантизацию или модель поменьше: только так уменьшаются веса. Арифметика памяти — в статье Запустится ли модель на 125B на GPU с 16 ГБ?
Большая часть — KV-кэш. Сократите контекст. В Ollama это можно попробовать прямо в сессии:
ollama run <your-model>
>>> /set parameter num_ctx 81928192 — лишь пример, ставьте столько, сколько нужно задаче (команда по документации Ollama, проверено 5 ноября 2026).
Если потом заметите странную медлительность при обработке промпта с квантизованным кэшем в llama.cpp, следующий шаг — разбор про KV-кэш q5_1. А что вообще помещается в контекстное окно, читайте в статье про контекстное окно.
Большая часть — другой процесс. Закройте его или отдайте встроенной графике. Модель менять не нужно.
Чек-лист
Прежде чем винить модель
Если не работает#
- Разбивка выглядит странно. Проверьте, не оценка ли это (нет совместимых логов загрузки). В llama.cpp запустите свой llama-server с
-и перезагрузите модель. В Ollama gputaskman берёт- log- file server. log - lv 4 server.log, если он есть; пометка «оценка» там нормальна. - В LM Studio меньше деталей. Поддержка частичная, см. выше.
- Нет видеокарты NVIDIA или AMD. Инструмент смотрит только локальные нагрузки на GPU; только CPU, только NPU и облако вне его задач.
- macOS. Запускайте из клона исходников, портативной сборки нет.
Когда проще взять облачную модель#
Допустим, для одной задачи, например резюме большого документа, нужен длинный контекст, а карта тянет модель только с коротким. Можно продолжать подкручивать, а можно вынести VRAM из уравнения. Для таких задач в CheapTokens есть DeepSeek-V4-Flash: контекст 380K, до 32 768 токенов в ответе, одна цена в любое время суток, API в формате OpenAI. У GLM-5.3-Flash контекст 390K и до 8 192 токенов в ответе.
Запрос — обычный, в формате OpenAI (ключ держите в переменной окружения):
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-ai/DeepSeek-V4-Flash-0731", "messages": [{"role": "user", "content": "Summarize this document: ..."}]}'Подробности подключения — в документации. Правило для решения: если задаче постоянно нужно больше контекста или модель крупнее, чем тянет карта, а вид процессов показывает, что VRAM и так занята, отправляйте такую задачу в API, а мелкие быстрые дела оставьте локально. Глубже этот выбор разобран в статье Запускать DeepSeek локально или через API?
Допустим, вы делаете резюме 100 больших документов: по 60 000 токенов на входе и 1 000 на выходе (с запасом в окне 380K). Вот сколько это стоит сейчас:
| Модель | Вход $/1M | Выход $/1M | За запрос | 100 запросов | OpenRouter, 100 запросов |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0012 | $0.124 | $0.209 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.001 | $0.10 | $0.434 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0032 | $0.315 | $3.78 |
60 000 входных и 1 000 выходных токенов на запрос. Цены за 1M токенов актуальны и меняются вместе с нашими тарифами; столбец OpenRouter показывает справочные цены для той же нагрузки.
По этим числам один документ — $0.001 по живой цене, а в сумме, с учётом входа и выхода, это ниже, чем у OpenRouter.
Калькулятор стоимости
Ваша нагрузка: поменяйте токены и число запросов
Входные токены на запрос: 60 000 · Выходные токены на запрос: 1 000 · Запросов в день: 100
| Модель | В день | В месяц |
|---|---|---|
| GLM-5.3-Flash$0.02$0.04 | $0.124 | $3.72 |
| DeepSeek-V4-Flash$0.015$0.10 | $0.10 | $3.00 |
| MiniMax-M2.7$0.05$0.15 | $0.315 | $9.45 |



