← voidwest    ember    الطريق إلى Ember 1.0

v0.5، من محرك استدلال إلى سير عمل بحثي

مسودة · الجزء 5 من سلسلة الطريق إلى Ember 1.0 · غير منشورة بعد
محمد الثبيتي · 2026-08-04
Ember قابلية الاستنساخ حزم تجارب تحقق ترميز عربي LLaMA
حالة المسودة

مسودة مكتملة باستشهادات صريحة. الأشكال مضمّنة كـ SVG (نسختا الوضع الداكن والفاتح) بتعليقات تستشهد بالأدلة. نص سير الشغل والتجزئات وأحكام المقارنة ونتائج الإغلاق الآمن أدناه أُنتجت مباشرة في 2026-08-04 من ثنائي الإصدار عند main @ 359e492 ومسجّلة في artifacts/benchmark-v05/part5-reproduction.md؛ الحزم الأساسية تبقى على القرص تحت runs/part5-*.

باحث لم يكتب Ember لازم يقدر تشغيل تجربة على دواخل النموذج والتحقق منها من غير قراءة Rust. v0.5 جعل داك ميزة زمن تشغيل لا وعدًا.

المشكلة: التجارب تعليمات، والتعليمات تنحرف

قبل v0.5، كانت تجربة Ember مجموعة أعلام سطر أوامر وإجراءً نثريًا. التقط hidden state هنا، عدّل طبقة هناك، قارن جريانين. عمل، لمن كتب الأعلام. لأي شخص آخر، كان سلسلة ادعاءات غير قابلة للتحقق: أي token طابقه داك النطاق؟ أي موقع hook هو "بعد attention"؟ هل نفّذ هذا التشغيل ما يقول الـ README إنه نفّذه؟ وإذا فسد الـ artifact على القرص، من يلاحظ؟

يذكر عقد v0.5 (docs/v05-research-contract.md) الاستجابة كأطروحته: التجربة مواصفة صارمة تُحل حتميًا، وتُنفَّذ عبر خطة v0.4 بhooks قابلة للملاحظة، وتهبط في حزمة تتحقق من نفسها ويصمد معناها الدلالي عبر النقل. الادعاء المركزي لالمقال دا هو اللي بُني عليه الإصدار: قابلية الاستنساخ صيغة artifact، وإجراء تحقق، وعقد يفشل بإغلاق آمن، لا جملة في README.

الحل الساذج: وثّق الأوامر

النهج الساذج صادق وغير كافٍ: اكتب إرشادًا، ثبّت ملف النموذج، وثق أن جهاز القارئ يوافق جهازك. يفشل على أربعة محاور صامتة:

التصميم: مواصفة تُحل حتميًا

ember.experiment.v1 TOML صارم بافتراضات مسجّلة وتحقق يفشل بإغلاق آمن يسمي مسار الحقل الدقيق لأي خطأ. سير الشغل المرجعي (examples/experiments/) جملة عربية واحدة تحتوي الكلمة المعلّمة كِتَاب ("book")، وخططي التقاط، وفي ذراع التدخل استبدالًا واحدًا في المكان (مقتطف مواصفة، examples/experiments/morphology-intervention.toml):

[[captures]]
id = "target-final-subtoken"
site = "residual-post-mlp"
layers = "all"
[captures.tokens]
kind = "matched-span"
text = "كِتَاب"
occurrence = 0
subtokens = "final"

[[interventions]]
id = "replace-layer7"
site = "residual-post-mlp"
layers = [7]
operation = { kind = "replace" }
source = { kind = "capture-from-current-run", capture_id = "target-final-subtoken" }
[interventions.tokens]
kind = "prompt-final"

ثلاث خصائص تشتغل. اختيار tokens بدقة البايت: نهاية الـ prompt، مواضع مطلقة ونسبية، خطوات مولّدة، ونطاقات مطابقة مع occurrence واختيار subtoken، كلها محلولة ضد إزاحات بايتية (القسمان 5–7 من العقد). هوية الـ hooks الدلالية: المواقع الست لها جدول واصفات مجمّد آلي القراءة (ember.hook.v1) معيّن على مراحل hook v0.4. حل حتمي: نفس المواصفة على نفس البيئة المدعومة تنتج نفس التجربة المحلولة ونفس اختيار الـ tokens ونفس الخطة، الطوابع الزمنية وأسماء المضيفين والمسارات المحلية لا تدخل الهوية الدلالية أبدًا (القسمان 13–14 من العقد).

التدخلات هي آلية v0.2 بقواعد: replace وzero وscale وinterpolate وadd-delta وrestore-original، مع تحقق مصدر يفشل بإغلاق آمن، مصدر لا يحل إلى سجل واحد بالضبط خطأ لا تخمين. التوريد عبر الحزم صريح: ممكن للتدخل سحب صف من حزمة مختلفة، وهو ما يمارسه دليل v0.5.1 capture-from-bundle (artifacts/benchmark-v05/capture-from-bundle/). ولأن مجموعة الـ fusion مجمّدة (v0.4)، سياسة defusion في v0.5 قصيرة: F5 بس يلغي tensor قابلاً لملاحظة الـ hook، والالتقاط أو التدخل المستهدِف له يفرض المسار غير المدمج مع تسجيل السبب (القسمان 9–10 من العقد).

الحزم: artifact يتحقق من نفسه

يهبط التشغيل في ember.bundle.v1: مرحلة ذرية، لا يكتب فوق دليل موجود أبدًا، مع manifest دلالي تجزئاته ثابتة تجاه التشغيل وتجزئة حمولة فوق الـ manifests إضافة إلى manifest الدلالي نفسه. خطط التنفيذ تُعقَّم قبل التجزئة (يصبح طابع بناء الخطة unix-0) حتى لا تسرّب تجزئة الخطة حالة الجهاز (CHANGELOG.md، v0.5). الترتيب، مُعاد من تشغيل حي في 2026-08-04 (runs/part5-baseline):

ترتيب ember.bundle.v1: manifest.json وsemantic-manifest.json وruntime.json وresolved-experiment.json وexecution-plan.json وtokenization.jsonl وcaptures/ وinterventions/ وchecksums.sha256 وverification.json ترتيب ember.bundle.v1 (الوضع الفاتح)
الشكل 2، ترتيب ember.bundle.v1 (17 ملفًا في إعادة الإنتاج الحية)؛ semantic-manifest.json وchecksums.sha256 هما حد التحقق (artifacts/benchmark-v05/part5-reproduction.md).

(الحزمة الحقيقية تحمل كمان inputs.jsonl وoutputs.jsonl و model.json وtraces/events.jsonl وtokenizer.json، 17 ملفًا إجمالًا، مدرجة في artifacts/benchmark-v05/part5-reproduction.md.) يثبّت الـ manifest تجزئتي SHA-256 للنموذج والـ tokenizer؛ ملف مختلف يفشل بإغلاق آمن قبل حساب token واحد (examples/experiments/README.md).

التحقق: من غير اتصال، ويلتقط بايتًا مقلوبًا

يشغّل ember experiment verify 15 فحصًا أساسيًا من غير اتصال بالكامل، بنية، توافق مخطط، تجزئات خطة/دلالية/حمولة مُعاد حسابها، checksums الحمولة لكل ملف، وفحوص ترميز/نموذج عميقة عند الطلب. سلوك الإغلاق الآمن هو النقطة، فإليك الاختبار، مُعادًا مباشرة في 2026-08-04 (artifacts/benchmark-v05/part5-reproduction.md القسم 4):

# قلب بايت في منطقة رأس safetensors
$ ember experiment verify part5-corrupt
Error: safetensors header is not valid JSON: invalid unicode code point

# قلب بايت في منطقة بيانات الـ tensors
$ ember experiment verify part5-corrupt
  [ok] execution plan hash: plan hash 624ec2e08b63
  [ok] semantic hash: recomputed f01c90f4deb4 vs stored f01c90f4deb4
  [ok] payload hash: recomputed ed0b870f94c6 vs stored ed0b870f94c6
  [FAIL] semantic payload checksums: captures/tensors.safetensors: checksum mismatch
verdict: FAILED

# الضابط
$ ember experiment verify runs/part5-baseline
verdict: verified

بايت مقلوب واحد في tensor ملتقط ينتج فشلًا مسمّى لا عدم تطابق صامتًا. هذا هو عقد الإغلاق الآمن: أي شيء تغير إما متحقق منه أو مسمّى.

المقارنة: إيش اللي تغير، بدقة

يفصل ember experiment compare الحقائق الدلالية عن ضجيج التشغيل: الطوابع الزمنية وtps وRSS تُبلغ بس لا يُسمح لها أبدًا بحسم الهوية (Gate G في docs/v05-research-contract.md). الإعادة الحية لسير الشغل المرجعي تعطي الشكل السببي كله في جدول واحد (artifacts/benchmark-v05/part5-reproduction.md القسم 3):

التشغيلالنص المولدlogit النهائي top-1
خط الأساس" كِتَاب هو كلمة"15.830419540405273
التدخل (استبدال صف الطبقة 7 بصف subtoken الهدف)"، وَما يُشك"12.156656265258789
الاستعادة" كِتَاب هو كلمة"15.830419540405273

والمقارنة تبلغها بنيويًا: خط الأساس مقابل التدخل، generated_tokens_equal: false، first_divergence_step: 1، وtensors الـ prompt-final الملتقطة تتباعد من الطبقة 8 فصاعدًا (استبدال الطبقة 7 residual-post-mlp يُطبَّق بعد إضافات residual تلك الطبقة وفق توقيت تدخل العقد، فتستهلك الطبقات 8+ القيمة المستبدلة). خط الأساس مقابل الاستعادة، generated_tokens_equal: true، generated_text_equal: true، final_top1_equal: true، لا خطوة تباعد، وكل الـ 32 tensor ملتقطة مطابقة للبت. الاستعادة تعيد إنتاج خط الأساس حتى نفس الـ logit النهائي، إلى آخر رقم f32 مسجّل.

خط الأساس والتدخل والاستعادة: استبدال الطبقة 7 يباعد المخرجات عند الخطوة 1 والالتقاطات من الطبقة 8؛ الاستعادة تعيد إنتاج خط الأساس مطابقة للبت خط الأساس والتدخل والاستعادة (الوضع الفاتح)
الشكل 3، خط الأساس والتدخل والاستعادة، مباشرة (2026-08-04): استبدال الطبقة 7 يباعد المخرجات عند الخطوة 1 والتقاطات prompt-final من الطبقة 8؛ الاستعادة تعيد إنتاج خط الأساس مع كل الـ 32 التقاطًا مطابقة للبت (artifacts/benchmark-v05/part5-reproduction.md §3).

يظهر الشكل نفسه في دليل v0.5.1 عبر الحزم (artifacts/benchmark-v05/capture-from-bundle/، CHANGELOG v0.5.1): استبدل صف الطبقة 8 بصف الطبقة 3 من حزمة خط الأساس → الطبقات 0–8 مطابقة للبت، و9–15 تتباعد؛ أضف restore-original → يُعاد إنتاج خط الأساس مع كل طبقات الـ 16 التقاطًا مطابقة والمخرجات متساوية.

سير الشغل، من البداية إلى النهاية

خط الأنابيب كله، شُغّل مباشرة في 2026-08-04 (الأوامر في ملف الأدلة؛ المواصفات عند examples/experiments/):

$ ember experiment validate examples/experiments/morphology-intervention.toml
  inputs: 1  captures: 2  interventions: 1  defaults applied: 2

$ ember experiment run examples/experiments/morphology-layerwise-capture.toml
bundle written to runs/part5-baseline
  semantic hash: f01c90f4deb4…
  payload hash:  ed0b870f94c6…
  verification: 15 check(s) passed

$ ember experiment run …/morphology-intervention.toml      # حزمة + 15/15
$ ember experiment run …/morphology-restoration.toml       # حزمة + 15/15

$ ember experiment verify runs/part5-baseline
verdict: verified

$ ember experiment compare runs/part5-baseline runs/part5-restoration
# generated tokens equal: true; all 32 captures bit-exact; restore event recorded

كل خطوة أمر فرعي بمخرجات حتمية آلي القراءة. سلم التحقق: validateresolvetokenize and alignexecutecapture/intervene → حزمة ذرية → verifycomparereproduce.

سير عمل التجربة: validate ثم resolve ثم tokenize and align ثم execute ثم capture/intervene ثم حزمة ذرية ثم verify ثم compare ثم reproduce سير عمل التجربة (الوضع الفاتح)
الشكل 1، سير عمل التجربة: validate → resolve → tokenize/align → execute → capture/intervene → حزمة ذرية → verify → compare → reproduce؛ الحزمة هي حد الـ artifact (examples/experiments/README.md؛ artifacts/benchmark-v05/part5-reproduction.md).

عزل الأداء

لازم ألا تلوّث الآلات الاستدلال العادي (Gate H في العقد): مع عدم استخدام نظام التجارب، يستغرق التشغيل 2.61 ثانية / 2,751,024 KB RSS مقابل 2.58 ثانية / 2,751,028 KB لنفس الشغل بمن غيره؛ تضيف أعباء التجارب 2.2% RSS مقابل بوابة ≤3% (artifacts/benchmark-v05/SUMMARY.json). لا تُحلَّ مواصفة تجربة ولا يطلق hook ما لم يشغّل أمر experiment الفرعي.

إيش اللي لا يشتغل بعد

إيش اللي أطلق هذا

سير الشغل موجود عشان سؤال بحثي فشل، فرضية تدهور الكمّية الانتقائي للعربية في الـ pilot. المقال التالي يحعشان تلك القصة: النتيجة الصفرية، فشل الحدود النادر، وسلسلة أدوات التحديد السببي اللي بُنيت آلات v0.2–v0.5 لتشغيلها.