
شنو هو Handwired؟
Handwired كيحوّل كود JavaScript العادي لحسابات شبيهة بالشبكات العصبية بلا ما يحتاج للتدريب. عوض ما يمثّل البرنامج فشكل تدفّق عادي للتحكّم، كيحوّل المنطق بحال الشروط، والحلقات، والحالة لضرب المصفوفات مع عمليات reglu على قيم بالفاصلة العائمة.
البرنامج الناتج كيبقى قابل للاشتقاق بشكل كامل، ولكن الأوزان ديالو مكتوبة يدوياً وماشي متعلّمة. Handwired يقدر ينفّذ هاد الحسابات فـ JavaScript ولا باستعمال WebGPU.

علاش نحوّلو البرامج لحسابات عصبية؟
Handwired كيختزل سلوك البرنامج فمجموعة صغيرة ديال العمليات الرياضية الأساسية، خصوصاً الجمع، والضرب، وعمليات على طريقة ReLU. هاد الأسلوب كيوفّر بزاف ديال الخصائص المثيرة للاهتمام:
- البرنامج كامل كيبقى قابل للاشتقاق.
- الأوزان ما كيحتاجوش للتدريب حيث مكتوبين يدوياً.
- تحسينات GPU بحال الدمج، والتخلخل، وإعادة ترتيب العمليات تقدر تخدم مع هاد الحسابات المبسّطة.
- كود JavaScript التقليدي يقدر نظرياً يستافد من التوازي بمستوى GPU ملي كيتّمثّل بهاد الشكل.
المشروع كيفتح حتى إمكانيات تجريبية. تقدر تحيّد تجميد الأوزان المحددة يدوياً وتشوف شنو كيوقع مع التدريب، ولا تربط برنامج مجمّد بشبكة عصبية عامة وتدرّب النظام المدموج من البداية للنهاية.
إعداد المشروع
Handwired فيه عروض تجريبية مباشرة والمصدر اللازم باش تستكشف طريقة الخدمة ديالو محلياً. خاصك يكون Bun منصّب فالنظام ديالك.
- نسخ مستودع Handwired.
- دخل لمجلد المشروع.
- نصّب الاعتماديات باستعمال
bun install. - شغّل العروض التجريبية المحلية باستعمال
bun start.
git clone <handwired-repository-url>
cd handwired
bun install
bun startمن بعد ما تشغّل المشروع، استعمل العنوان المحلي اللي كيطبعه Bun باش تشوف العروض التجريبية. وتقدر حتى تجرّب العروض المستضافة فـ chenglou.me/handwired.
فهم التحويل الأساسي
خد مثلاً شرط بسيط فـ JavaScript:
const a = 5
const result = (a > 4) ? 10 : 12Handwired كيعبّر على الشرط باستعمال الحسابات. بالنسبة لقيمة صحيحة، الفرق بين عمليات ReLU التالية كيعطي محدِّداً قيمتو 1 ملي a > 4 و0 ملي a <= 4:
const a = 5
const above4 = Math.max(0, a - 4) - Math.max(0, a - 5)
const result = above4 * 10 + (1 - above4) * 12الفرعين بجوج كيتحسبو، ولكن above4 كيختار النتيجة المناسبة. ملي كتكون a = 5، المحدِّد كيكون 1، وبالتالي القيمة النهائية هي 10، وهي نفس النتيجة ديال التعبير الشرطي الأصلي.
كيفاش كتمثّل الرياضيات هاد العملية؟
الفكرة الأساسية هي نعوّضو التفرّع بعمليات حسابية مستمرة. الشرط كيولي مكوّناً من:

- عمليات ReLU باش نبنيو محدِّداً انطلاقاً من المُدخل.
- الضرب باش نطبّقو المحدِّد على كل فرع.
- الجمع باش ندمجو نتائج الفروع.
منين كتتجمع هاد العمليات، Handwired يقدر يمثّل الحساب على شكل ضرب كبير للمصفوفات مع عمليات التفعيل المناسبة. ومن بعد يقدر يتقيّم نفس البرنامج باستعمال JavaScript ولا WebGPU.
الفرعين بجوج كيتحسبو، والمحدِّد كيختار شنو هي النتيجة اللي غادي تساهم فالمخرج.
استكشاف المستودع
ملي كتخدم على المشروع، بدا بالمجلدات اللي مذكورة فـ README:
docs/فيه التوثيق والمواد اللازمة لفهم المشروع.src/فيه التطبيق.template/كيوفّر نقطة بداية باش تولّي مألوف مع المشروع.lab/فيه تجارب قديمة تقدر تستكشفها ولا تتجاوزها.
منهج عملي هو تشغّل العروض التجريبية أولاً، ومن بعد تقارن السلوك ديالها مع ملفات المصدر المرتبطة بها. هاد الشي كيساعدك تربط بين الأمثلة اللي باينة والتحويل الأساسي لعمليات المصفوفات.
جرّب العروض التجريبية
العرض التجريبي المستضاف هو أسرع طريقة باش تشوف Handwired خدام. وصف المشروع كيسلّط الضوء بالخصوص على عرض تجريبي للبحث فـ JSON كي processing 100,000 وثيقة فبضعة ميليثواني. كيبين الهدف ديال المشروع: يجيب توازياً كبيراً للكود اللي كان مكتوب فالأصل بطريقة تقليدية وبخيط تنفيذ واحد.
استعمل العروض التجريبية باش تلاحظ الفرق بين البنية الأصلية للبرنامج والتمثيل الرياضي اللي كيتولّد. وهي حتى نقطة بداية مفيدة قبل ما تبدّل المصدر المحلي.
أفكار متقدمة
جرّب الأوزان القابلة للتدريب
Handwired كيستعمل عادة أوزان مكتوبة يدوياً، وبالتالي ما كايناش حاجة للتدريب باش يخدم البرنامج. واحد التجارب اللي كيقترحها المشروع هي تحيّد تجميد هاد الأوزان وتشوف شنو غادي تنتج عملية التحسين.
دمج البرامج المجمّدة مع الشبكات العصبية
إمكانية أخرى هي تربط برنامج Handwired مجمّد ومحدد بشبكة عصبية عامة، وتدرّب النظام المدموج من البداية للنهاية. هاد الشي يقدر يخلي النموذج يحتافظ ببرنامج محدد بدقة، وفنفس الوقت يتعلّم سلوكات أخرى.
فكّر بمنطق العمليات الأساسية
ملي كتصمّم التجارب، ركّز على كيفاش يمكن التعبير على تدفّق التحكّم باستعمال الجمع، والضرب، وعمليات على طريقة ReLU. كلما كانت الحسابات الناتجة أبسط، كلما قدرت تستافد بشكل مباشر أكثر من تقنيات بحال الدمج، والتخلخل، وإعادة الترتيب.
الخلاصة
كيبيّن Handwired كيفاش يمكن نعاودو نكتبو المنطق العادي ديال JavaScript على شكل حساب رياضي قابل للاشتقاق. من خلال تعويض تدفّق التحكم بمحدّدات حسابية، واختزال النتيجة فعملية ضرب المصفوفات وزيادة عمليات التنشيط، كيخلّي البرامج التقليدية متوافقة مع تقنيات الشبكات العصبية ومع التنفيذ باستعمال JavaScript ولا WebGPU. نصّبو باستعمال Bun، واستكشفو العروض التجريبية، ومن بعد تفقدو docs/ وsrc/ وtemplate/ باش تبداو التجارب ديالكم.
