
معالج Xeon عمره عشر سنوات هو كل ما تحتاجه
يوضح تقرير جديد كيف يشغّل معالج Xeon من 2016 بذاكرة DDR3 ودون GPU نموذجًا بخليط خبراء من 26 مليار معامل بسرعة القراءة، باستخدام تفريعة متخصصة و25 علمًا من سطر الأوامر.
عتاد لا يفترض أن يشغّل هذا
المقالة الثالثة لكريستينا إميلي سورنسن عن مدقّقات MTP في Gemma 4 تتناول كيف نشغّل النتيجة على خادم مُعاد تدويره لا يفترض أن يقدر على ذلك. الآلة لديها 128 GB من الذاكرة، لكنها DDR3 — أبطأ بخمس أو ست مرات من أفضل ذاكرة حاسوب محمول اليوم. المعالج هو Intel Xeon E5-2620 v4 واحد من 2016: 8 أنوية فيزيائية و16 خيطًا، ودعم AVX2 فقط دون AVX-512 أو BF16، و20 MiB من ذاكرة L3 و2 MiB من L2، ولا GPU على الإطلاق. ولا يوفّر ollama ولا حتى llama.cpp القياسي مقابض كافية، لذا الحل هو تفريعة ik_llama.cpp وسطر أوامر بخمسة وعشرين علمًا. على المعالج، تتقيّد عملية التوليد بعرض نطاق الذاكرة: ينهي المعالج حسابات المصفوفات ثم ينتظر نقل الأوزان من الذاكرة إلى الذاكرة المخبئية.
الفك التخميني وتوجيه MoE على المعالج
Gemma 4 26B-A4B نموذج خليط خبراء: 128 خبيرًا و8 نشطة لكل رمز، أي نحو 3.8 مليار معامل نشط من أصل 25.2 مليارًا. الأعلام --spec-type mtp و--draft-max 3 و--draft-p-min 0.0 و--spec-autotune تقرن المتحقق ذا الـ26 مليارًا بالمدقّق الصغير MTP، بأخذ حتى ثلاثة رموز لكل مسودة. وترى سورنسن أن الفك التخميني يجدي على المعالج أكثر من GPU: دورات المعالج رخيصة مقابل كلفة تمرير أوزان المتحقق عبر الذاكرة المخبئية، ومجموعة عمل المدقّق تتسع في L3. ويضبط --cpu-moe توجيه الخبراء على التسلسل الهرمي لذاكرة المعالج كي لا يرتجّ المخزون عند التنقل بين 128 خبيرًا، بينما يدمج --merge-up-gate-experts إسقاطين في عملية ضرب مصفوفات واحدة (في السجلات fused_up_gate = 1). وعدد الخيوط، -t 8، يوافق الأنوية الفيزيائية لا خيوط SMT الستة عشر، لأن الخيوط الزائدة على حمل محدود بالذاكرة تضيف كلفة جدولة فقط.
التثبيت وإعادة التغليف وأعلام تفشل بصمت
يطلب --mlock من النواة إبقاء نحو 27 GB من الأوزان في الذاكرة الفيزيائية، وبالوضع الافتراضي يفشل الطلب: "failed to mlock 27628376064-byte buffer ... Try increasing RLIMIT_MEMLOCK". العلم سليم وحد memlock ليس كذلك، وأدوات الصندوق الأسود لا تطلب هذا التحسين أصلًا وتترك النموذج عرضة للترحيل إلى القرص. ويعيد --run-time-repack ترتيب مصفوفات الأوزان قبل الاستدلال لتوافق تخطيط ذاكرة المعالج المخبئية (السجلات: إعادة تغليف 265 تنسورًا)، ويقطع --no-kv-offload البحث عن GPU لحفظ ذاكرة KV المخبئية. أما علم تقسيم الرسم البياني فلا يصمد أمام MTP: يعلن المحرك "Split mode 'graph' is not supported for Gemma4 external MTP => changing split mode to 'layer'" وينتقل إلى التقسيم الطبقي التسلسلي.
Flash Attention على المعالج وفاتورة الذاكرة
كتب ikawrakow، مؤلف ik_llama.cpp، نوى خاصة بالمعالج من أجل Flash Attention: فهي تدمج softmax الانتباه مع عمليات ضرب المصفوفات بحيث لا تُكتب مصفوفة N×N في الذاكرة أبدًا — وهو تحسين صُمم أصلًا لوحدات GPU. ويفعّل --mla-use 3 انتباهًا كامنًا متعدد الرؤوس (MLA) يضغط ذاكرة KV المخبئية في تمثيل كامن أصغر. وقد نجح الاثنان: flash_attn = 1 وfused_moe = 1 وfused_up_gate = 1. والفاتورة النهائية 82,355 MiB — نحو 25 GB من الأوزان و56 GB من ذاكرة KV المخبئية عند سياق كامل من 262K، أي أن المخزون أكبر من النموذج نفسه. وخلاصة سورنسن أن العائق أمام النماذج المفتوحة المحلية ليس السيليكون، بل فهم محرك الاستدلال فهمًا عميقًا.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.