سياق 128k على المكتب عقد إيجار — كاش KV هو الفاتورة، محسوبة على الهواء
موترّان لكل طبقة لكل token: 16 GiB لنموذج 8B على نافذة كاملة. اختر نموذجًا، أدر السياق، وشاهد سجل المستأجر يَحسب الصيغة على الهواء.
Llama 3.1 8B at 131,072 tokens in fp16: كاش KV ≈ 16 GiB — بحجم الأوزان نفسه.
«الـ8B الذي يتّسع في 16 GiB» يصبح مسألة بـ32 GiB.
الكاش خطي بالسياق ومُخصَّص مقدَّمًا — تدفع RAM ثمن 128k سترتجه أم لا.
الحل مملّ: اضبط السياق على ما تستعمله فعلًا — نافذة 32k تكلف ربع كاش 128k.
01مكتب القياس
المستأجر هو كاش kv — العجلات تُدير فاتورةً لا تطبعها البطاقة قط
الكاش = الأوزانعلى النافذة الكاملة، الكاش بحجم النموذج الذي ينتمي إليه — إيجار بـ32 GiB الآن
مستأجر LLAMA 3.1 8B · نافذة 128k · 131,072 TOKENS · CACHE 16.00 GiB · أوزان 16.0 GiB · نصيب 100% · مُطعَم 0
العجلات حاسَبت قبل أن يتحرك عدّاد المسافة — التخصيص مقدَّم، والملء اختياري
02الصيغة التي تغفلها البطاقات
صيغة عامة واحدة حرّكت كل رقم في تلك العجلات
cache_bytes = 2 × layers × context × kv_heads × head_dim × bytes_per_element
«نافذة السياق ليست ميزة تنقرها. إنها عقد إيجار للذاكرة تدفعه كل ثانية يعمل فيها الخادم.»
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
03مستأجران، مكتب واحد
الصيغة حسابٌ، إلى أن تُسعِّر بطاقتَي نموذج حقيقيتين جنبا إلى جنب
| نموذج (fp16) | طبقات × رؤوس KV | كاش KV @ 128k | أوزان | الكاش مقابل الأوزان |
|---|---|---|---|---|
| Llama 3.1 8B | 32 × 8 | ~16 GiB | ~16 GiB | ~100% |
| Qwen2.5 7B | 28 × 4 | ~7 GiB | ~15 GiB | ~47% |
اضغط المفتاح 1 على المكتب — النافذة نفسها 128k تُقاس من جديد بـ7.0 GiB على qwen2.5 7b
config.json عنها، وهو ما يخبرك كيف قُصد قراءة هذا الرقم04حيث تنحني الفاتورة
العداد صادق في الانتباه الكامل — أربعة انحناءات قبل أن توقّع أي شيء
لا أحد يقرأ 128,000 token. ومع ذلك، تدفع RAM ثمن كل واحد منهم.
config.json العامة للنماذج (طبقات، رؤوس KV، head_dim)، كما يعرضه Transformer Inference Arithmetic — عدّاد المكتب هو الصيغة نفسها على JavaScript؛ لا بنشماركات تُشترى، على بُعد print واحد من نهايتك.
نهاية سجل المستأجر · لم يُجلب شيء · كل شيء محلي