متطلبات كرت الشاشة لتشغيل نموذج ذكاء اصطناعي محلياً

سؤالان يحسمان تشغيل نموذج ذكاء اصطناعي على جهازك: هل يتّسع في ذاكرة كرت الشاشة؟ وكم رمزاً في الثانية سيولّد إن اتّسع؟ الأول تجيب عنه معادلة بسيطة: حجم الأوزان بالجيجابايت = مليارات المعاملات × معامل بين 0.61 و0.68 عند تكميم Q4_K_M، مضافاً إليه ذاكرة المفاتيح والقيم بحسب السياق، مع هامش لما يستهلكه سطح المكتب من الذاكرة نفسها. والثاني يجيب عنه رقم يغفله معظم المشترين: عرض نطاق الذاكرة. وإن لم تحسم أداة التشغيل بعد فابدأ من Ollama أم LM Studio.
البايت لكل معامل: لماذا القاعدة الشائعة خاطئة
اقسم البت لكل معامل على 8 تحصل على البايت لكل معامل. القاعدة الشائعة التي تختصر Q4 إلى نصف بايت خاطئة: القياس الرسمي في مستودع llama.cpp على Llama 3.1 بحجم 8 مليارات (8.03 مليار معامل) يعطي 4.89 بت، أي 0.61 بايت، لأن صيغ K تخزّن عوامل قياس إضافية وتترك طبقات حسّاسة بدقة أعلى. الفارق 22% عن التقدير الشائع، وهو كافٍ لإسقاط حسابك عند الحدّ. الملف نفسه: 14.96 GiB عند F16، و7.95 عند Q8_0، و4.58 عند Q4_K_M.
الأحجام المعلنة في مكتبة Ollama ترسم المدى العملي: 4.9 GB لـLlama 3.1 بحجم 8 مليارات، و17 GB لـGemma 3 بحجم 27 ملياراً، و43 GB لـLlama 3.1 بحجم 70 ملياراً. النسبة تتراوح بين 0.61 و0.68 لكل مليار، وأعلاها Qwen3.5 بحجم 9 مليارات: معاملاته الفعلية 9.65 مليار وملفه 6.6 GB. ولاحظ أن 4.9 GB و4.58 GiB رقمان للملف نفسه، عشري مقابل ثنائي.
المثال الكامل: نموذج 8 مليارات
الأوزان 4.58 GiB. يبقى البند الذي يُسقطه معظم الحسابات: ذاكرة المفاتيح والقيم. ملف الضبط الرسمي للنموذج نفسه (32 طبقة، 8 رؤوس مفاتيح وقيم، بُعد 128، دقة f16) يضع تكلفة الرمز الواحد عند 128 كيبيبايت. أي أن 4,096 رمزاً تعني 0.5 GiB، و32,768 تعني 4 GiB، والسقف الكامل عند 131,072 رمزاً يعني 16 GiB — أكثر من ثلاثة أضعاف حجم النموذج نفسه.
السياق الافتراضي في Ollama يتبع ذاكرة الكرت بحسب توثيقه الرسمي: 4,096 رمزاً دون 24 GiB، و32 ألفاً بين 24 و48 GiB، و256 ألفاً فوق ذلك. يُعدَّل هذا بالمتغيّر OLLAMA_CONTEXT_LENGTH. وإن ضاقت الذاكرة فالوثائق تنص على أن OLLAMA_KV_CACHE_TYPE=q8_0 يستهلك نحو نصف ذاكرة الوضع الافتراضي، وq4_0 نحو الربع، على أن تكون Flash Attention مفعّلة. اضبط السياق أولاً قبل أن تنزل بتكميم الأوزان.
العربية تكلّف ذاكرة مفاتيح وقيم أكبر من الإنجليزية، لأنها تُقسَّم إلى رموز بكفاءة أقل فيستهلك النص بالطول نفسه رموزاً أكثر. احسب السياق بسخاء ولا تكتفِ بالافتراضي.
عرض نطاق الذاكرة: سقف السرعة الذي لا يُكتب على العلبة
توليد النص لمستخدم واحد مقيّد بقراءة الذاكرة لا بقوة الحساب: كل رمز يستلزم قراءة كل أوزان النموذج ومعها ذاكرة المفاتيح والقيم المتراكمة. لذلك الحد الأدنى النظري لزمن الرمز = البايتات المقروءة ÷ عرض النطاق. خذ RTX 4090 بعرض 1,008 GB/s مع نموذج 7 مليارات بدقة F16 حجمه 14.2 GB: السقف النظري نحو 71 رمزاً في الثانية. المحركات الفعلية تبلغ 60–90% من السقف: نحو 82% عند 16 بت و58% عند 4.5 بت في قياس llama.cpp من مارس 2024، وقد تحسّنت النوى منذئذ. ولأن ذاكرة المفاتيح والقيم تُقرأ أيضاً مع كل رمز، تتباطأ السرعة كلما طال السياق حتى وإن اتّسعت الذاكرة.
واحذر «عرض النطاق الفعّال» التسويقي — 554 GB/s لـRTX 4060 Ti و476.9 لـRX 7600 XT — فهو يحتسب إصابات الذاكرة الخبيئة، وأوزان بحجم جيجابايتات تتدفق متجاوزةً خبيئة من عشرات الميجابايتات. المعتمد الرقم الخام:
| الكرت | الذاكرة | عرض النطاق GB/s |
|---|---|---|
| RTX 4060 | 8 GB | 272 |
| RX 7600 XT | 16 GB | 288 |
| RTX 4070 Super | 12 GB | 504 |
| RTX 5070 | 12 GB | 672 |
| RTX 5080 | 16 GB | 960 |
| RTX 4090 | 24 GB | 1,008 |
| RTX 5090 | 32 GB | 1,792 |
| آبل M4 Pro | ذاكرة موحّدة | 273 |
| آبل M4 Max | ذاكرة موحّدة | 410–546 |
كرتان بذاكرة 16 جيجابايت — RX 7600 XT عند 288 وRTX 5080 عند 960 — يفترقان 3 أضعاف: السعة تقرر ماذا تشغّل، والنطاق يقرر كم رمزاً في الثانية.
ما يحدث حين لا تتّسع الذاكرة: الطبقات تنزل إلى المعالج
تجاوز الذاكرة لا يوقف التشغيل. Ollama يوثّق أنه يحمّل النموذج على كرت واحد إن اتّسع وإلا وزّعه، وllama.cpp يوزّع الطبقات تلقائياً. ما يتغيّر هو عدّاد الرموز في الثانية وحده.
في قياس فردي نشرته مدوّنة inventivehq على كرت بذاكرة 16 جيجابايت مع نموذج بحجم 14 ملياراً عند Q4_K_M: 48 طبقة كاملة على الكرت تعطي 43.18 رمز/ثانية، و40 طبقة 12.5، والمعالج وحده 2.89. سُدس الطبقات على المعالج كافٍ لهبوط السرعة إلى أقل من ثلثها، والنسبة تختلف من كرت إلى آخر.
تحقّق أين استقر النموذج فعلاً
الرد يصلك حتى لو كان كل شيء على المعالج، فلا تحكم به. شغّل ollama ps وانظر عمود PROCESSOR: القيمة 100% GPU تعني أن النموذج كله في ذاكرة الكرت، و100% CPU أنه في ذاكرة النظام، وقيمة مقسومة مثل 48%/52% CPU/GPU تعني تفريغاً جزئياً. أما nvidia-smi فيقرأ الاستهلاك الفعلي، ويُظهر رقماً صغيراً حتى والجهاز خامل لأن التعريف يحجز جزءاً لنفسه. وفي llama.cpp يحدّد الخيار -ngl أقصى عدد طبقات يُفرَّغ إلى الكرت، وقيمة مبالغ فيها مثل 999 تعني: حمّل كل ما يتّسع.
ثلاثة أفخاخ تُفسد قياس الذاكرة
الأول: النموذج المقيم. Ollama لا يفرّغ النموذج فور آخر طلب بل يتركه محمّلاً 5 دقائق افتراضياً، وقد يبقى بلا أجل إن ضُبط OLLAMA_KEEP_ALIVE بقيمة سالبة، وقد تجد على الكرت 3 نماذج معاً بحكم OLLAMA_MAX_LOADED_MODELS. نموذج تضمين استدعته أداة أخرى يقتطع ذاكرتك بصمت، فشغّل ollama ps قبل أي قياس.
الثاني: حجم الملف على القرص لا يساوي الذاكرة وقت التشغيل، في الاتجاهين: القراءة عبر mmap تُظهر استهلاك ذاكرة النظام أقل من الملف، والمطلوب على الكرت — أوزان زائد مفاتيح وقيم زائد مخازن حساب — أكثر منه.
الثالث: ويندوز والمتصفح يستهلكان من ذاكرة الكرت نفسها بلا رقم رسمي. قِس خط الأساس بـnvidia-smi قبل التحميل، واطرحه من السعة في المعادلة.
أين تتوقف عن خفض التكميم
ورقة تقييم على arXiv — مسوّدة غير محكّمة على نموذج واحد هو Llama 3.1 Instruct بحجم 8 مليارات — تعطي حدّاً واضحاً. مقياس الحيرة يرصد مدى عدم يقين النموذج في التنبؤ بالرمز التالي، وكلما انخفض كان أفضل: 7.32 عند F16، ثم 7.56 عند Q4_K_M، ثم 7.96 عند Q3_K_M. ودرجات اختبار GSM8K تتحرك معه: 77.63 ثم 77.41 ثم 73.16. الانهيار عند 3 بت لا عند 4.
الاتجاه المعاكس مكلّف أيضاً: جدول llama.cpp الرسمي يسجّل 71.93 رمز/ثانية عند Q4_K_M مقابل 50.93 عند Q8_0 و29.17 عند F16. إن أردت جودة أعلى فالترقية المنطقية Q5_K_M أو Q6_K، لا القفز إلى F16.
أين لا تصلح المعادلة: خليط الخبراء والنماذج البصرية والذاكرة الموحّدة
نماذج خليط الخبراء تُحسب ذاكرتها بإجمالي المعاملات لا بالمُفعَّل منها. Qwen3.6 إجمالي معاملاته 35 ملياراً ونحو 3 مليارات مُفعّلة لكل رمز، وملفه 23 GB عند Q4_K_M. السرعة تتبع المُفعّل، والذاكرة تتبع الإجمالي.
والنماذج البصرية بند تغفله المعادلة: فهي تحتاج أوزان اللغة كاملة زائد ملف الإسقاط البصري المُفرَّغ إلى الكرت افتراضياً. في مستودع ggml-org الرسمي لـGemma 3 بحجم 4 مليارات يبلغ ملف mmproj-model-f16.gguf حجم 851 ميجابايت فوق أوزان Q4_K_M البالغة 2.49 GB — زيادة نحو 34%. وOllama ينص على أن Llama 3.2 Vision بحجم 11 ملياراً يحتاج 8 جيجابايت على الأقل، ونسخة 90 ملياراً تحتاج 64 جيجابايت.
أما الذاكرة الموحّدة فتلغي الفصل بين ذاكرة النظام والرسوميات. توثيق mlx-lm من آبل يشترط أن يتجاوز حدّ الذاكرة المثبّتة حجم النموذج ويبقى دون إجمالي ذاكرة الجهاز، ويُرفع على macOS 15 فأحدث بأمر sudo sysctl iogpu.wired_limit_mb. هذا المسار يفتح أحجاماً لا يبلغها كرت استهلاكي، لكن بثمن: M4 Pro عند 273 GB/s نحو ربع عرض نطاق RTX 4090 — تتّسع لكنها أبطأ.
ما الذي يعمل فعلاً عند كل فئة ذاكرة
فئة 8 جيجابايت — RTX 4060 و5060 والنسخ الأدنى من 4060 Ti و5060 Ti: أوزان 7 و8 مليارات لا تترك هامشاً إلا لسياق قصير. ومعها ALLaM بحجم 7 مليارات من المركز الوطني للذكاء الاصطناعي في سدايا، متاح على Hugging Face بملف GGUF مجتمعي عند Q4_K_M بحجم 4.26 GB.
وبذاكرة 12 جيجابايت — RTX 4070 Super و5070 — الأحجام نفسها بسياق أوسع، ومعها Fanar-1 بحجم 9 مليارات من معهد قطر لبحوث الحوسبة، وهو يدعم الفصحى واللهجات الخليجية والشامية والمصرية.
أما 16 جيجابايت — نسخ 4060 Ti و5060 Ti الأعلى، وRTX 4080 Super و5080، وRX 7600 XT و7800 XT — فتستوعب من 12 إلى 14 ملياراً دون أن تخنق السياق، والفارق داخلها عرض النطاق لا السعة.
فئة 24 جيجابايت — RTX 3090 و4090 وRX 7900 XTX: تفتح 27 ملياراً، ومعها Fanar-2 المبنيّ على Gemma 3 بحجم 27 ملياراً بسياق 32,768 رمزاً وبنسخ GGUF مجتمعية. أما 70 ملياراً عند 43 GB فخارج حدود أي كرت استهلاكي واحد، إذ يقف أعلاها RTX 5090 عند 32 جيجابايت. وALLaM بحجم 34 ملياراً الذي تشغّله هيوماين السعودية أوزانه ليست مفتوحة، فلا سبيل لتشغيله محلياً مهما كبر كرتك. وإن ذهبت إلى الكروت عالية الاستهلاك فراجع ذوبان كابل كرت الشاشة 12V-2x6 قبل التركيب.
سعة أم عرض نطاق؟ طبّق المعادلة قبل أن تدفع
خذ ذاكرة كرتك بعد طرح خط الأساس، اطرح منها مليارات النموذج × 0.68، وانظر كم بقي لذاكرة المفاتيح والقيم — واحسب بالطرف الأعلى قرب الحد. أقل من نصف جيجابايت يعني أنك عند الحدّ، والثمن بطءٌ لا رسالةُ خطأ: اخفض السياق أو كمّم ذاكرة المفاتيح والقيم، ولا تنزل بالأوزان تحت 4 بت.
وقبل أن تدفع ثمن ترقية حدّد مشكلتك: تفريغ جزئي في ollama ps أو باقٍ سالب يعني ضيق سعة تحلّه جيجابايتات أكثر؛ أما نموذج كامل على الكرت بسرعة لا تكفيك فمشكلة عرض نطاق، وكرت أكبر ذاكرةً بنطاق مماثل لن يحرّك العدّاد.