حاسبة VRAM لنماذج LLM المحلية

نموذج 7B بتكميم 4 بت يحتاج نحو 3.3 GiB للأوزان، ونموذج من فئة Llama 3.1 8B يضيف نحو 1 GiB من ذاكرة KV لكل 8,192 رمزًا من السياق.

تقدير فقط. يختلف استهلاك VRAM الفعلي باختلاف الإطار والنوى وإعدادات الذاكرة المؤقتة.

هل حُلّت مشكلتك؟
فضّلنا على Google

طريقة الاستخدام

  1. اختر نموذجًا جاهزًا لملء المعاملات والطبقات ورؤوس KV وبُعد الرأس، أو اختر «مخصص» وأدخل القيم من ملف config.json الخاص بالنموذج.
  2. حدّد عدد بتات تكميم الأوزان (4 لـ Q4 و16 لـ FP16) ودقة ذاكرة KV.
  3. أدخل طول السياق بالرموز وحجم الدفعة، أي عدد التسلسلات التي تُعالج في وقت واحد.
  4. اقرأ المجموع وتفصيله إلى أوزان وذاكرة KV وحمل إضافي. يوضح الجدول أحجام البطاقات الشائعة التي يناسبها.

طريقة الحساب

ذاكرة الأوزان = المعاملات × البتات ÷ 8 بايت. نموذج بسبعة مليارات معامل بتكميم 4 بت يشغل 7,000,000,000 × 0.5 = 3.5 غيغابايت، أي 3.26 GiB. وبـ 16 بت يصبح 14 غيغابايت، وهذا يوافق قاعدة 2 غيغابايت لكل مليار معامل بصيغة bfloat16 في دليل Hugging Face «Optimizing LLMs for Speed and Memory».

ذاكرة KV = 2 × الطبقات × رؤوس KV × بُعد الرأس × طول السياق × حجم الدفعة × البايتات لكل قيمة. العدد 2 للمفاتيح والقيم. تعطي Hugging Face الصيغة لكل رمز، وهي 2 × 2 × الطبقات × رؤوس KV × بُعد الرأس لقيم 16 بت، في مقال «Unlocking Longer Generation with Key-Value Cache Quantization».

يُدخل الحمل الإضافي كنسبة مئوية من الأوزان مع ذاكرة KV. وهو يعوّض سياق CUDA ومخازن التنشيط وتجزؤ الذاكرة. والقيمة الافتراضية 10 بالمئة افتراض وليست قياسًا.

كل النتائج بوحدة GiB (1 GiB = 1,073,741,824 بايت). تكتب الشركات «24 GB» على بطاقة سعتها 24 GiB، لذا يقارن جدول الملاءمة المجموع مباشرة بالقيم 8 و12 و16 و24 و48 و80. هذا تقدير. يختلف الاستهلاك الفعلي باختلاف الإطار (llama.cpp وvLLM وOllama وTransformers) والنوى وطريقة حجز الذاكرة المؤقتة.

ما الذي يملأ VRAM

هناك أمران رئيسيان. الأوزان ثابتة بمجرد اختيار النموذج والتكميم. أما ذاكرة KV فتنمو مع كل رمز في السياق وكل تسلسل في الدفعة، ولهذا يتوقف نموذج كان يناسب البطاقة عن المناسبة فجأة عند السياقات الطويلة أو كثرة المستخدمين المتزامنين.

النماذج ذات انتباه الاستعلام المجمّع (GQA) لديها رؤوس KV أقل من رؤوس الانتباه، فتصغر الذاكرة المؤقتة عدة أضعاف. لذلك فإن حقل رؤوس KV أهم من عدد رؤوس الانتباه. راجع القيمة num_key_value_heads في ملف config.json للنموذج.

حجم الأوزان لكل مليار معامل

البتات لكل وزنGiB لكل مليار معاملمثال: نموذج 8B
16 (FP16 / BF16)1.8614.90 GiB
8 (INT8 / Q8)0.937.45 GiB
6 (Q6)0.705.59 GiB
5 (Q5)0.584.66 GiB
4 (Q4)0.473.73 GiB
3 (Q3)0.352.79 GiB
2 (Q2)0.231.86 GiB

مصادر النماذج الجاهزة

  • ملف config.json لكل مستودع: huggingface.co/Qwen/Qwen2.5-{7B,14B,32B,72B}, huggingface.co/Qwen/Qwen3-{8B,32B}, huggingface.co/mistralai/Mistral-7B-v0.3, huggingface.co/mistralai/Mistral-Nemo-Base-2407, huggingface.co/microsoft/phi-4.
  • Llama 3.1 8B و70B: ملفات config.json من Meta مقيّدة بطلب وصول على Hugging Face، لذا أُخذت القيم من الجدول 3 في ورقة Meta «The Llama 3 Herd of Models» (arXiv 2407.21783). Gemma 2 9B و27B: الجدول 1 من تقرير Google «Gemma 2» (arXiv 2408.00118).
  • أعداد المعاملات هي مجاميع safetensors التي تعرضها واجهة Hugging Face لكل مستودع. وإذا خلا config.json من head_dim تستخدم الأداة hidden_size ÷ عدد رؤوس الانتباه.

أسئلة شائعة

كم VRAM يحتاج نموذج 7B بتكميم 4 بت؟

نحو 3.3 GiB للأوزان وحدها. مع سياق 8,192 رمزًا في نموذج من فئة Llama 3.1 8B تضيف ذاكرة KV نحو 1 GiB، فاحسب قرابة 5 GiB مع الحمل الإضافي. بطاقة 8 غيغابايت تشغّله ويبقى هامش لسياق أطول.

هل تشغّل بطاقة 24 غيغابايت نموذج 32B؟

نعم بتكميم 4 بت. يحتوي Qwen2.5 32B على نحو 32.76 مليار معامل، فتشغل الأوزان نحو 15.3 GiB. عند سياق 8,192 رمزًا تبلغ ذاكرة KV ‏2 GiB، ومع حمل إضافي 10 بالمئة يقارب المجموع 19 GiB.

لماذا يختلف استهلاكي الفعلي عن التقدير؟

تختلف الأطر في الحمل الإضافي. يحجز vLLM معظم ذاكرة البطاقة مسبقًا لذاكرة KV ويؤجل الطلبات حين ينفد المكان، ويحجز llama.cpp ذاكرة السياق الكامل من البداية، وتخزن صيغ K-quant في GGUF قيم مقياس إضافية فتكون بتاتها الفعلية أعلى من الرقم الاسمي. ارفع البتات أو الحمل الإضافي إذا ظهرت أخطاء نفاد الذاكرة.

هل تصلح الأداة لنماذج خليط الخبراء؟

تظل الأوزان كلها في الذاكرة، لذا أدخل العدد الكلي للمعاملات لا النشطة. تعتمد ذاكرة KV على طبقات الانتباه فقط، فاستخدم الطبقات ورؤوس KV من ملف config. النماذج الجاهزة هنا كلها كثيفة.

يستخدم Gemma 2 نافذة منزلقة. هل التقدير أقل؟

يتناوب Gemma 2 بين طبقات محلية بنافذة 4,096 رمزًا وطبقات عامة. تحسب الأداة السياق الكامل في كل الطبقات، فتعطي حدًا أعلى لـ Gemma 2 حين يزيد السياق عن النافذة.