Habr AI يعرض كيفية بناء طبقة Linear Layer بلغتي C++ وCUDA ضمن سلسلة «من MNIST إلى Transformer»

نشر Habr AI الجزء الثالث من سلسلة «من MNIST إلى Transformer»، وهو هذه المرة عن التنسورات (tensors) وضرب التنسورات وبناء Linear Layer خاصة دون PyTorch. تتضمن المقالة قدرًا كبيرًا من شيفرات C++ وCUDA: يبني الكاتب الطبقة كاملة الاتصال خطوة بخطوة، ويشرح كيفية العمل مع ذاكرة GPU، ثم يصل بكل ذلك إلى شبكة بسيطة للتعرف على MNIST. تركّز المادة على ما يجري فعليًا أثناء تنفيذ هذه العمليات على GPU، لا على واجهات المكتبات الجاهزة (API). وهي موجهة لمن يريد فهم آلية عمل أنظمة الذكاء الاصطناعي الحديثة لا الاكتفاء بتشغيل نماذج جاهزة.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
Habr AI يعرض كيفية بناء طبقة Linear Layer بلغتي C++ وCUDA ضمن سلسلة «من MNIST إلى Transformer»
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1تنفيذ ضرب التنسورات
حقيقة رئيسية #2إنشاء أول Linear Layer، أي الطبقة كاملة الاتصال
حقيقة رئيسية #3العمل مع الذاكرة وتوزيع البيانات على GPU

نشر Habr AI الجزء الثالث من سلسلة «من MNIST إلى Transformer»، ويتناول فيه الانتقال من المصفوفات العادية إلى التنسورات، ويوضح كيفية بناء طبقة Linear Layer أساسية بالأيدي دون PyTorch. تقود المادة القارئ إلى شبكة عصبية بسيطة للتعرف على MNIST، وتركّز لا على واجهات المكتبات (API) بل على الكيفية التي تُنفَّذ بها هذه العمليات فعليًا على GPU.

عمّا يدور الجزء الثالث

تواصل المقالة الجديدة المسار الممتد من شيفرة CUDA منخفضة المستوى إلى المعماريات التي تقوم عليها لاحقًا نماذج Transformer وأنظمة LLM الحديثة. وبدلًا من الاعتماد على تجريدات جاهزة، يدعو الكاتب إلى النظر مباشرة في الحسابات: كيف تُخزَّن البيانات في الذاكرة، وكيف يُشغّل GPU العمليات، ولماذا تتطلب طبقة عصبية تبدو بسيطة قدرًا كبيرًا من العمل الهندسي. وهذه صيغة مناسبة لمن سئم من التعامل مع أطر ML على أنها سحر يُستدعى بسطر واحد من الشيفرة.

التحول الرئيسي في هذا الجزء هو الانتقال من المصفوفات إلى التنسورات. وهو موضوع أساسي في تعلّم الآلة التطبيقي، لأن البيانات الواقعية نادرًا ما تقتصر على بعدين. ويعرض الكاتب كيف يتغير تفكير المطوّر حين يبدأ العمل لا مع جداول الأرقام فحسب، بل مع بنى متعددة الأبعاد تتشكل منها لاحقًا الدفعات (batches) وأوزان الطبقات والتمثيلات الوسيطة وغيرها من لبنات النموذج المستقبلي. وعند هذا المستوى تبدأ التهيئة لفهم كتل أكثر تعقيدًا مثل attention والتضمينات (embeddings).

ما الذي يُنفَّذ يدويًا

يدور الجزء العملي حول شيفرة خاصة مكتوبة بلغتي C++ وCUDA. لا توجد هنا محاولة لإخفاء التعقيد خلف واجهة مريحة، بل على العكس: يُدعى القارئ إلى قطع الطريق كاملًا من الصيغة الرياضية إلى التنفيذ اليدوي. وتكمن فائدة هذا النهج في أنه يربط الجبر الخطي المجرد بخطوات تطوير محددة: تخصيص البيانات في الذاكرة، واستدعاء النوى (kernels)، والتحقق من أشكال الأبعاد، وفهم المواضع التي تظهر فيها الأخطاء أو تضيع فيها الأداءات. ومن دون هذه الحلقة يصعب الإحساس بالفرق بين المثال التعليمي والنظام الحقيقي.

  • تنفيذ ضرب التنسورات
  • إنشاء أول Linear Layer، أي الطبقة كاملة الاتصال
  • العمل مع الذاكرة وتوزيع البيانات على GPU
  • الربط بين الرياضيات والشيفرة للتدريب على MNIST
  • بناء شبكة بسيطة للتعرف على الأرقام المكتوبة بخط اليد
«بهذه الطريقة وحدها يمكن فهم كيفية عمل LLM فهمًا حقيقيًا».

بعد تنفيذ العمليات الأساسية، تقود المقالة إلى طبقة كاملة الاتصال خاصة، ثم إلى شبكة صغيرة للتعرف على الأرقام المكتوبة بخط اليد من مجموعة MNIST. وهذه نقطة مهمة: فالمادة لا تتوقف عند العمليات الأولية المنفصلة، بل تبيّن كيف تُركَّب منها سلسلة عاملة. ويتضح في الوقت نفسه أن حتى المصنِّف البسيط يستند إلى حزمة معرفية عميقة، من الرياضيات إلى بنية ذاكرة الفيديو وخصائص الحوسبة المتوازية.

لماذا يهم ذلك

تكمن قيمة مثل هذه الشروح في أنها تزيل وهم السهولة الذي يخلقه غالبًا الغلاف البرمجي بلغة Python. فحين لا يرى المطوّر سوى استدعاءات المكتبات الجاهزة، يصعب عليه تقدير كلفة كل عملية وفهم سبب اصطدام النموذج فجأة بحدود الذاكرة أو عرض النطاق الترددي أو حجم الدفعة. أما التحليل على مستوى التنسورات والطبقات فيساعد على قراءة أدوات التنميط (profilers) بشكل أفضل، وتصميم المعمارية بعناية أكبر، واختيار المفاضلات بين السرعة والدقة وتعقيد التنفيذ عن وعي أكبر.

وتفيد سلسلة «من MNIST إلى Transformer» بوجه خاص من لا يريد الاكتفاء بتشغيل نماذج الآخرين، بل فهم آليات أنظمة الذكاء الاصطناعي الحديثة. فهي لا تعد بمدخل سريع، وتحذّر صراحةً من أن المحتوى سيتضمن الكثير من الشيفرة وCUDA والرياضيات والعمل اليدوي مع الذاكرة. لكن هذه الصيغة تحديدًا تمنح أساسًا ينفع عند تحسين الاستدلال (inference)، وعند قراءة تنفيذات CUDA التي كتبها آخرون، وعند محاولة فهم سبب كون بعض القرارات المعمارية أسرع من غيرها.

ماذا يعني ذلك

هذه إشارة جيدة للجمهور الناطق بالروسية: فالطلب يتحول من الدروس السطحية إلى التحليل الهندسي لبواطن حزمة الذكاء الاصطناعي. وكلما زادت هذه المواد، قلّ النظر إلى LLM بوصفها صندوقًا أسود، وسهل على المطورين الانتقال من استخدام النماذج الجاهزة إلى ضبطها وتحسينها بوعي. وهذا مهم خصوصًا الآن، مع النمو السريع في الطلب لدى المهندسين الممارسين على تحسين أداء GPU وفهم بواطن النماذج.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول عمّا يدور الجزء الثالث؟

تواصل المقالة الجديدة المسار الممتد من شيفرة CUDA منخفضة المستوى إلى المعماريات التي تقوم عليها لاحقًا نماذج Transformer وأنظمة LLM الحديثة. وبدلًا من الاعتماد على تجريدات جاهزة، يدعو الكاتب إلى النظر مباشرة في الحسابات: كيف تُخزَّن البيانات في الذاكرة، وكيف يُشغّل GPU العمليات، ولماذا تتطلب طبقة عصبية تبدو بسيطة قدرًا كبيرًا من العمل الهندسي. وهذه صيغة مناسبة لمن سئم من التعامل مع أطر ML على أنها سحر يُستدعى بسطر واحد من الشيفرة. التحول الرئيسي في هذا الجزء هو الانتقال من المصفوفات إلى التنسورات. وهو موضوع أساسي في تعلّم الآلة التطبيقي، لأن البيانات الواقعية نادرًا ما تقتص

ما أبرز التفاصيل حول ما الذي يُنفَّذ يدويًا؟

يدور الجزء العملي حول شيفرة خاصة مكتوبة بلغتي C++ وCUDA. لا توجد هنا محاولة لإخفاء التعقيد خلف واجهة مريحة، بل على العكس: يُدعى القارئ إلى قطع الطريق كاملًا من الصيغة الرياضية إلى التنفيذ اليدوي. وتكمن فائدة هذا النهج في أنه يربط الجبر الخطي المجرد بخطوات تطوير محددة: تخصيص البيانات في الذاكرة، واستدعاء النوى (kernels)، والتحقق من أشكال الأبعاد، وفهم المواضع التي تظهر فيها الأخطاء أو تضيع فيها الأداءات. ومن دون هذه الحلقة يصعب الإحساس بالفرق بين المثال التعليمي والنظام الحقيقي. تنفيذ ضرب التنسورات إنشاء أول Linear Layer، أي الطبقة كاملة الاتصال العمل مع الذاكرة وتوزيع البيا

ما أبرز التفاصيل حول لماذا يهم ذلك؟

تكمن قيمة مثل هذه الشروح في أنها تزيل وهم السهولة الذي يخلقه غالبًا الغلاف البرمجي بلغة Python. فحين لا يرى المطوّر سوى استدعاءات المكتبات الجاهزة، يصعب عليه تقدير كلفة كل عملية وفهم سبب اصطدام النموذج فجأة بحدود الذاكرة أو عرض النطاق الترددي أو حجم الدفعة. أما التحليل على مستوى التنسورات والطبقات فيساعد على قراءة أدوات التنميط (profilers) بشكل أفضل، وتصميم المعمارية بعناية أكبر، واختيار المفاضلات بين السرعة والدقة وتعقيد التنفيذ عن وعي أكبر. وتفيد سلسلة «من MNIST إلى Transformer» بوجه خاص من لا يريد الاكتفاء بتشغيل نماذج الآخرين، بل فهم آليات أنظمة الذكاء الاصطناعي الحديثة

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…