Studio · Bench
أي عمل ينبغي أن يبقى على آلتك — وعلى قياس مَن يستند القرار؟
يجيب Bench بقياس الجهاز الذي تملكه فعلًا بدل قراءة بطاقة نموذج، ثم يثبت الإجابة في ملف تعريف ذي إصدار يخبرك متى أصبحت بياناته قديمة.
ليس هذا «شغّل النماذج محليًا بدل السحابة»
تبقى النماذج المتقدمة في الصورة. فهي تستحق ثمنها حين يكون الخطأ مكلفًا — في التصميم وتصحيح الأعطال الصعبة والمراجعة. لكنها لا تستحقه في الوسط الآلي: ترحيل الأنماط، والملخصات، وبناء الهياكل، والعمل المتكرر الذي يصل في فاتورة لكل رمز.
السؤال ليس هل ننقل ذلك العمل، بل أي عمل ننقل — وهذه خاصية لعتادك المحدد لا يستطيع أحد معرفتها مسبقًا.
لا يمكن معرفة الإعداد المحلي الصحيح سلفًا. يجب قياسه على الآلة التي تملكها، والفجوة بين التخمين والقياس كبيرة بما يكفي لتغيّر ما تشتريه.
قياس، لا تخمين
أربعة نماذج، وعقدة واحدة بذاكرة موحدة اسمية 128 GB، وllama.cpp عبر Vulkan/RADV. يبدو GLM-4.5-Air الخيار الرائد البديهي. لكنه على هذا العتاد يولّد أبطأ 2.1× من gpt-oss-120b — قياس 2.12× تكرر مرتين بفارق أقل من عُشر انحراف معياري. ومعالجة المطالبة أبطأ بأكثر من الضعف (2.11–2.25)، ويحمل قرابة 9 GiB أوزانًا إضافية. لا تقول بطاقة أي نموذج ذلك، لأنها لا تصف آلتك.
عقدة واحدة، أربعة نماذج، ثلاثة مقاييس
عقدة واحدة بذاكرة موحدة اسمية 128 GB من فئة Ryzen AI Max+ 395، وllama.cpp + Vulkan/RADV، وQ4_K_M عدا gpt-oss-120b بصيغة MXFP4 الأصلية. llama-bench -p 512 -n 128 -ngl 999 -fa 1 -ctk q8_0 -ctv q8_0، وf16 KV لـ kimi-linear الذي لا يستطيع تكميمه. ترتيب اللوحات حسب سرعة التوليد.
| النموذج | pp512 t/s | tg128 t/s | الأوزان GiB | تحميل بارد s | دافئ s |
|---|
تصف هذه الأرقام آلة واحدة تحت مجموعة واحدة من الخيارات. إنها دليل على أهمية القياس، لا تنبؤًا لعتادك. ملاءمة الذاكرة تنتقل بين الآلات لأن البايت بايت؛ أما الإنتاجية فلا. تنتج المعايرة أرقامك أنت، وحتى تعمل نفضّل ألا نعرض شيئًا على أن نعرض أرقام غيرك.
ما لا تستطيع بطاقة النموذج إخبارك به
خمسة أمور لم تظهر إلا عند التشغيل الفعلي. لا يظهر أي منها في ورقة مواصفات؛ وكل منها يغيّر قرارًا.
التحميل البارد أبطأ بنحو 23× من الدافئ
GLM-4.5-Air: 42.19 ث من القرص مقابل 1.85 ث دافئًا — وهذه أضيق الفجوات الأربع. هذه النسبة، لا رقم الإنتاجية، هي ما يحدد تجميع العمل أو تداخله. إنها سياسة طابور مخبأة داخل زمن التحميل.
نجاح هو في الحقيقة فشل
تعيد نماذج الاستدلال HTTP 200 بمحتوى فارغ حين تكون ميزانية الرموز صغيرة: استهلكتها رموز الاستدلال. لا يظهر خطأ، فيسجل خط الأنابيب استدعاءً مكتملًا ويتابع.
نموذج لا يستطيع تكميم ذاكرة KV إطلاقًا
بُعد الرأس في Kimi-Linear هو 72، وحجم كتلة q8_0 هو 32. هذا قيد صارم لا معامل ضبط، ولا يظهر إلا بتشغيل النموذج.
للقدرة سقف قابل للقياس
مبرمج من فئة 30B موثوق في عمل الملف الواحد ويتعثر فوقه. السقف خاصية تُقاس، لا دالة في عدد المعاملات المكتوب على الصندوق.
الآلة تكذب بشأن ذاكرتها
كانت الذاكرة التي يعنونها GPU افتراضيًا 60.61 من 121.21 GiB — النصف تمامًا، لأن ttm_global_init() في النواة ينفذ num_pages /= 2 منذ 6.1. ليس عطلًا ولا بناءً سيئًا، بل افتراض عام لم يختره أحد. بعد معامل إقلاع واحد أصبحت 112 GiB، وملائمًا نموذج 120B الذي «لم يكن يلائم».
والنتيجة غير البديهية على الجهاز نفسه: العلاج الشائع — زيادة حجز الرسومات في BIOS — هو الخيار الأسوأ على Linux. يُشتق سقف GTT من RAM بعد طرح الحجز، لذا يخفض الحجز الكبير السقف الذي يُفترض أن يرفعه.
28 Jul, BIOS carve-out 64 GiB amdgpu: 65536M of VRAM memory ready amdgpu: 31451M of GTT memory ready. 05 Aug, BIOS carve-out 2 GiB + ttm.pages_limit amdgpu: 2048M of VRAM memory ready amdgpu: 114688M of GTT memory ready.
رفع إعداد BIOS إلى 64 GiB ترك 30.71 GiB من GTT. خفضه إلى الحد الأدنى وضبط معامل نواة واحد أعطى 112 GiB — أكثر 3.6× على العتاد نفسه. الإعداد الذي تطلب معظم الأدلة رفعه هو ما ينبغي تركه.
لا يظهر شيء من هذا في بطاقة نموذج. وُجد كله بالتشغيل. هذا هو Bench.
كيف يعمل — قيمة قبل التثبيت
تعرف هل يستحق الأمر قبل أن يطلب منك أحد تثبيت شيء. التشخيص مجاني وسيبقى كذلك.
الحُكم مجاني · لا يثبّت شيئًا
يقرأ الذاكرة المثبتة وما يعنونه GPU وإصدارات برنامج التشغيل والنواة ومساحة القرص، ثم يخبرك بأي فئات النماذج تبقى مقيمة وأيها يمكن تبديلها وأيها لا يلائم. تحمل كل قيمة الملف أو الأمر الذي جاءت منه، لتمييز القياس من الاستنتاج.
ملف التعريف
أمر واحد قابل للتكرار. يثبت بصمة بناء llama.cpp وإصدار وكيل الخدمة والنواة والبرمجيات الثابتة وMesa وكل ملف نموذج بمستودعه واسمه وsha256. للملف إصدار ومصفوفة اختبار وتاريخ انتهاء — وليست اختيارية.
المعايرة تصدق عليها أنت
تشغل مجموعة مهام منتقاة عبر مسار الخدمة الحقيقي. حين يمكن البناء أو الاختبار يحكم CI؛ ولا يحكم نموذج إلا حيث يستحيل الفحص الآلي. الناتج اقتراح لتعيين المسار ويمر بالبوابة نفسها. لا تطبق المعايرة نفسها أبدًا.
التقرير
يعرض باستمرار تقسيم المحلي والمتقدم، وفارق الإنفاق، وأي مسار يبرر ترقية العتاد التالية. يُحسب من السجل الذي يعرف نقطة النهاية التي خدمت كل استدعاء فعلًا — فالوكيل قد يستبدل مسارًا احتياطيًا بصمت، ورقم التوفير الذي يثق بالنية لا بالسجل لا قيمة له.
ملف بلا إصدار وانتهاء كذبة مؤجلة
في أسبوع بناء واحد تغير المصدر ثلاث مرات: أزيل مفتاح تهيئة وسط المهمة، وتوقفت قاعدة «نواة معروفة الجودة» من الشهر السابق عن الصحة، وانتقلت ميزة في طبقة الخدمة. إعداد صحيح يوم الاثنين أصبح خاطئًا بصمت يوم الجمعة.
لذلك يذكر كل ملف ما اختُبر عليه والتاريخ الذي يتوقف بعده عن ادعاء الصحة. حين يصبح ملفك قديمًا، أو تنحرف عنه عمدًا، تعيد الاختبار والتعيين. هذا هو المسار المدعوم، لا حالة فشل.
$ saphan machine show strix-halo-evo-x2 [current] profile strix-halo-evo-x2 v1.0.0 · expires in 90 days kernel 7.0.0-28-generic · mesa 26.0.3 · vulkan 1.4.341 llama.cpp e031d95 · BIOS EVO-X2 1.12 · GTT 112.00 GiB models: 4 pinned by sha256 · 1 hard constraint recorded $ saphan machine show strix-halo-evo-x2 # ninety-one days later [expired] do not treat the figures below as current → run: saphan machine qualify strix-halo-evo-x2 --reverify
القيد الذي لا تكفيه النثرية: n_embd_head_v % kv_block_size == 0 — 72 مقابل كتلة q8_0 بحجم 32، لذلك لا يستطيع kimi-linear تكميم KV. تكميم K وحده لا ينقذه. يُسلَّم القيد كبيانات مع إعادة الإنتاج، فترفض الأداة التهيئة المستحيلة قبل اكتشافها وقت التحميل.
موضع Bench
Bench وحدة في Saphan Studio لا منتج منفصل. المسارات التي يقترحها هي ما تشغله طبقة التوجيه، والتصديق بوابتك القائمة، والإنفاق يأتي من السجل نفسه.
الجزء المستقل الوحيد هو الحُكم المجاني، لأنه يجب أن يعمل على آلة لم يُثبَّت عليها شيء بعد، حتى Saphan.
يقرر التوجيه أين تذهب فئة العمل. ويقيس Bench ما يحتمله عتادك كي يستند القرار إلى القياس لا الافتراض.
حين يحتاج شخص ثانٍ إلى الضمان نفسه
يعمل كل ما سبق للفريق بالطريقة نفسها. لكن التقسيم يتحول من عادة فرد إلى سياسة: تعيين المسار ملف وافق عليه شخص، والإنفاق قابل للإسناد لأن السجل يعرف نقطة النهاية التي خدمت كل استدعاء فعلًا.
هذا باب آخر لا منتج مختلف. ابدأ Solo؛ ويبقى ملف التعريف نفسه عند وصول الآلة الثانية.
الحالة بصراحة
ما هو صحيح اليوم: النشر المرجعي يعمل، ومنه جاءت كل قياسات الصفحة. Verdict نموذج أولي عامل يبلّغ مقابل ملف العتاد المرجعي ومجموعة اختبارات اصطناعية.
ما لم يصبح صحيحًا بعد: لم يُتحقق من Verdict على آلة فعلية ثانية. حُددت مواصفات Profile وCalibration وReport ولم تُبنَ بعد. مصفوفة الدعم ضيقة عمدًا وتتسع بالتحقق، فئة بعد فئة.
نفضل قول «لم يُقَس» على نشر رقم لا نستطيع الدفاع عنه. لذلك يوجد هذا القسم.
استفسارات شركاء التصميم
تواصل معنا — hello@saphan.ai