■ сначала ответ

Llama 3.1 8B at 131,072 tokens in fp16: KV-кэш ≈ 16 GiB — размером с веса.

«8B, помещающийся в 16 GiB» превращается в задачу на 32 GiB.

Кэш линеен по контексту и выделяется заранее — RAM платит за 128k, заполните вы его или нет.

Лекарство скучное: выставьте контекст по тому, что вы реально используете — окно 32k стоит четверть кэша 128k.

16.0GiB — KV-кэш 128k · llama 3.1 8b · fp16
131,072токенов оплачены — заполнены или нет
128 KiBстационарный платёж — с каждого токена, llama 8b

01ПРИЛАВОК С СЧЁТЧИКОМ

арендатор — это KV-кэш — колёса крутят счёт, который карта не печатает никогда

FIG 1 · ПРИЛАВОК С СЧЁТЧИКОМ KV-КЭШАклавиши 1 · 2 · 3 · 4 — или кнопки
РЕЕСТР АРЕНДАТОРАKV-КЭШ · МЕРЯЕТСЯ ВЖИВУЮАРЕНДАТОР · LLAMA 3.1 8B32 СЛОЯ × 8 KV-ГОЛОВЗАМЕРЕННАЯ RAM · ОПЛАЧЕНА ВПЕРЁДKV-КЭШ · СЧЁТОПЛАЧЕНО1600GiBВЕСА · МОДЕЛЬ160GiBКЭШ = ВЕСАОКНО128kСТАЦИОНАРНЫЙ ПЛАТЁЖ128 KiB/TOKТОКЕНОВ ВНУТРИ000000

КЭШ = ВЕСАна полном окне кэш размером с модель, к которой он относится — аренда на 32 GiB уже сейчас

АРЕНДАТОР LLAMA 3.1 8B · ОКНО 128k · 131,072 ТОКЕНОВ · КЭШ 16.00 GiB · ВЕСА 16.0 GiB · ДОЛЯ 100% · НАКОРМЛЕНО 0

колёса насчитали раньше, чем сдвинулся одометр — выделение заранее, заполнение опционально

02ФОРМУЛА, КОТОРУЮ ОПУСКАЮТ КАРТОЧКИ

одна публичная формула крутила каждую цифру этих колёс

арифметика — как её излагает transformer inference arithmetic
cache_bytes = 2 × layers × context × kv_heads × head_dim × bytes_per_element

«Окно контекста — не фича, которую вы включаете. Это аренда памяти, которую вы оплачиваете каждую секунду, пока живёт сервер.»

весь счёт — две строки против публичных config.json
def kv_cache_gib(layers, kv_heads, head_dim, ctx, bytes_per=2):
    return 2 * layers * ctx * kv_heads * head_dim * bytes_per / 2**30

print(kv_cache_gib(32, 8, 128, 131_072))  # Llama 3.1 8B  -> 16.0
print(kv_cache_gib(28, 4, 128, 131_072))  # Qwen2.5 7B    -> 7.0

verify: kv_cache_gib(32, 8, 128, 131_072) → 16.0 · kv_cache_gib(28, 4, 128, 131_072) → 7.0

2 тензора—ключи + значения, кэшируются для каждого слоя, каждой KV-головы, каждого токена — ничего не пересчитывается, всё запоминается
почему линейно—хранение на токен постоянно, значит общий объём линеен по контексту — 128× кэша окна в 1k, на весь срок сессии
почему заранее—сервисный стек выделяет полное окно при загрузке — RAM платит за 128k, заполните вы её или нет

03ДВА АРЕНДАТОРА, ОДИН ПРИЛАВОК

формула — просто арифметика, пока она не оценит две настоящие карточки моделей бок о бок

Модель (fp16)Слои × KV-головыKV-кэш @ 128kВесаКэш против весов
Llama 3.1 8B32 × 8~16 GiB~16 GiB~100%
Qwen2.5 7B28 × 4~7 GiB~15 GiB~47%

нажмите клавишу 1 на прилавке — то же окно 128k перемеряется в 7.0 GiB для qwen2.5 7b

скидка со стороны модели—grouped-query attention (GQA): меньше KV-голов, тоньше кэш — архитектура, а не квантизация
почему qwen кажется дружелюбнее—её 28 слоёв × 4 KV-головы — причина, по которой то же окно стоит около 7 GiB — настоящее облегчение на скромных машинах
где прячутся головы—в спеках редко пишут KV-головы — приходится копаться в config.json, чтобы их найти, и это подсказывает, как задумано читать это число

04ГДЕ СЧЁТ ИЗГИБАЕТСЯ

счётчик честен для полного внимания — четыре изгиба, прежде чем вы что-то подпишете

prefill · второй счёт—промпт в 100k токенов пережёвывается целиком до первого выходного символа — на 3060 это минуты, а не миллисекунды
модели со скользящим окном—внимание в духе mistral ограничивается слоем, так что кэш перестаёт расти — формула их переоценивает, вам в пользу
KV-квантизация—llama.cpp может кэшировать KV в q8_0, примерно вдвое меньше с некоторым риском качества — половина от 16 GiB всё ещё 8 GiB
сервисный стек—vLLM берёт GGUF на GPU с тем же счётом за память — квантизация сжимает веса, но не арифметику кэша

Никто не читает 128,000 токенов. Но RAM платит за каждый из них всё равно.

лекарство скучное—выставьте контекст по тому, что реально использует ваша нагрузка — 32k покрывает почти каждый промпт одиночного разработчика, за четверть счёта
путь retrieval—работа RAG — забивать окно это дорогой способ сказать «прочитай раздел 4»; retrieval вместо полного окна, потому что длинный контекст не бесполезен — он тарифицирован
■ честный штамп Проверено на: Llama 3.1 8B · Qwen2.5 7B · fp16 · окно 131,072 токена — записано 2026-09-22, обновлено 2026-10-04. Каждое число на этой странице — публичная формула, применённая к публичным config.json моделей (слои, KV-головы, head_dim), как её излагает Transformer Inference Arithmetic — счётчик прилавка — та же формула на JavaScript; никаких бенчей покупать — один print от вашего собственного терминала.

конец реестра арендатора · ничего не fetched · всё локально