AI & GPU
كيفية فهم أساسيات مجموعة أجهزة الحساب عالية الأداء بسهولة

كيفية فهم أساسيات مجموعة أجهزة الحساب عالية الأداء بسهولة

I. مقدمة في مجموعات أجهزة الحساب عالية الأداء

A. تعريف مجموعة أجهزة الحساب عالية الأداء (HPC) تشير مجموعة أجهزة الحساب عالية الأداء (HPC) إلى استخدام موارد الحساب المتقدمة، مثل الحواسيب الفائقة القوة ومجموعات الحواسيب والأجهزة المتخصصة، لحل المشاكل المعقدة والتي تتطلب قدرات حسابية عالية. تم تصميم أنظمة HPC لتوفير أداء وقوة معالجة أعلى بكثير مقارنة بالأجهزة المحمولة التقليدية أو الخوادم، مما يتيح تنفيذ المحاكاة على نطاق واسع وتحليل البيانات ومهام أخرى تتطلب حسابات محوسبة.

B. نظرة عامة على مجموعات أجهزة الحساب عالية الأداء

  1. هندسة الحوسبة المتوازية عادةً ما يتم بناء مجموعات أجهزة الحساب عالية الأداء باستخدام هندسة الحوسبة المتوازية، حيث تعمل العديد من العقد الحسابية المتصلة ببعضها البعض معًا لحل مشكلة واحدة. وهذا يتيح توزيع المهام الحسابية عبر عدة معالجات، مما يؤدي إلى تسريع وقت المعالجة والقدرة على التعامل مع مشاكل أكبر وأكثر تعقيدًا.

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

  3. التوسعية والأداء أحد أهم ميزات مجموعات أجهزة الحساب عالية الأداء هو التوسعية الخاصة بها. يمكن إضافة وحدات حسابية إضافية إلى المجموعة مع زيادة احتياجات الحسابات للمشكلة، مما يوفر المزيد من القدرة على المعالجة والذاكرة. وهذا يتيح لمجموعات HPC التعامل مع مهام معقدة وتضخيم البيانات، مثل تلك التي تواجهها تقنية التعلم العميق وتطبيقات الذكاء الاصطناعي الأخرى.

II. مكونات مجموعة أجهزة الحساب عالية الأداء

A. الأجهزة

  1. وحدات الحساب a. وحدات المعالجة المركزية (CPUs) تتكون وحدات الحساب في مجموعة أجهزة الحساب عالية الأداء عادة من وحدات المعالجة المركزية ذات الأداء العالي، والتي توفر القوة الحسابية الرئيسية للنظام. يتم اختيار هذه الوحدات بناءً على عدد النوى وسرعة الساعة وحجم الذاكرة المؤقتة لتحسين الأداء للحمولات التي تم معالجتها.

    b. وحدات معالجة الرسومات (GPUs) (اختياري) بالإضافة إلى وحدات المعالجة المركزية، قد تشمل بعض مجموعات أجهزة الحساب عالية الأداء وحدات معالجة الرسومات لتسريع بعض أنواع الحسابات مثل تلك الموجودة في تقنية التعلم العميق وتطبيقات أخرى تتطلب معالجة البيانات بكميات كبيرة. تتميز وحدات معالجة الرسومات بقدرتها على المعالجة المتوازية، مما يجعلها مناسبة للمهام التي يمكن توزيعها بسهولة.

    c. الذاكرة تم تزويد وحدات الحساب في مجموعة أجهزة الحساب عالية الأداء بكميات كبيرة من الذاكرة ذات السرعة العالية، مثل ذاكرة DDR4 أو DDR5، لدعم معالجة مجموعات البيانات الكبيرة والخوارزميات المعقدة.

    d. التخزين عادةً ما يكون لكل وحدة حساب تخزين محلي، مثل وحدات التخزين ذات الحالة الصلبة (SSDs) أو وحدات الأقراص الصلبة (HDDs)، لتخزين البيانات والملفات اللازمة لعمليات الحساب. بالإضافة إلى ذلك، قد تحتوي المجموعة على أنظمة تخزين مشتركة، كما يتم مناقشته في القسم التالي.

  2. البنية التحتية للشبكة a. ربط سريع السرعة يتم ربط وحدات الحساب داخل مجموعة أجهزة الحساب عالية الأداء من خلال بنية تحتية للشبكة سريعة السرعة، والتي تستخدم غالبًا تقنيات ربط متخصصة مثل InfiniBand أو Omni-Path أو Ethernet عالية الأداء. توفر هذه التقنيات اتصالًا ذو عرض نطاق ترددي عالٍ واتصالًا منخفض التأخير بين العقد، مما يتيح نقل البيانات والمعالجة المتوازية بكفاءة.

    b. Ethernet أو InfiniBand أو شبكات متخصصة أخرى يتوقف اختيار التكنولوجيا الشبكية على متطلبات مجموعة أجهزة الحساب عالية الأداء المحددة، مثل عبء العمل واحتياجات نقل البيانات وقيود الميزانية. تعتبر Ethernet خيارًا شائعًا وفعال من حيث التكلفة، في حين توفر InfiniBand وشبكات متخصصة أخرى أداءً عاليًا على حساب تعقيد أعلى واستثمار أكبر.

  3. أنظمة التخزين المشتركة a. التخزين المرتبط بالشبكة (NAS) تستخدم مجموعات أجهزة ال--- title: "كيفية فهم أساسيات الحوسبة العالية الأداء بسهولة" date: 2024-03-27


كيفية فهم أساسيات الحوسبة العالية الأداء بسهولة

I. مقدمة في أنظمة الحوسبة العالية الأداء

A. تعريف الحوسبة العالية الأداء (HPC) الحوسبة العالية الأداء (HPC) تشير إلى استخدام موارد الحوسبة المتقدمة مثل الحواسيب العملاقة ، ومجموعات الحواسب وأجهزة متخصصة لحل المشاكل المعقدة والتي تحتاج إلى معالجة حسابية مكثفة. تم تصميم أنظمة HPC لتوفير أداء وقوة معالجة أعلى بشكل كبير مقارنة بأجهزة الحواسيب المكتبية التقليدية أو الخوادم ، مما يتيح تنفيذ المحاكاة على نطاق كبير وتحليل البيانات وغيرها من المهام ذات الطلب المنتجات حسابية.

B. نظرة عامة على نظم HPC

  1. ترتيب الحوسبة المتوازية تم بناء صفوف HPC عادة باستخدام ترتيب الحوسبة المتوازية ، حيث تعمل العديد من العقد المتصلة معًا لحل مشكلة واحدة. هذا يتيح توزيع المهام الحسابية عبر المعالجات المتعددة ، مما يؤدي إلى زمن معالجة أسرع والقدرة على التعامل مع مشاكل كبيرة وأكثر تعقيدًا.

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

  3. توسعية وأداء إحدى المزايا الرئيسية لأنظمة HPC هي قابليتها للتوسع. مع زيادة متطلبات الحساب الخاصة بمشكلة ما ، يمكن إضافة عقده إلى العصابة لتوفير قدرة معالجة وذاكرة إضافية. هذا يسمح لصفوف HPC بالتعامل مع المهام المعقدة والغنية بالبيانات بشكل متزايد ، مثل تلك التي تواجه في تعلم العمق وتطبيقات الذكاء الاصطناعي الأخرى.

II. مكونات عصبة HPC

A. الأجهزة

  1. عقد المعالجة a. وحدات المعالجة المركزية (CPUs) عادة ما تتكون عقد HPC من وحدات المعالجة المركزية ذات الأداء العالي (CPUs) التي توفر القدرة الحسابية الرئيسية للنظام. غالبًا ما يتم اختيار هذه الوحدات المركزية بناءً على عدد الأنوية ، وسرعة الساعة ، وحجم الذاكرة المؤقتة لتحسين الأداء لمجموعات العمل المحددة.

    b. وحدات المعالجة الرسومية (GPUs) (اختياري) بالإضافة إلى وحدات المعالجة المركزية ، قد تشمل بعض الصفوف HPC وحدات المعالجة الرسومية (GPUs) لتسريع بعض أنواع العمليات ، مثل تلك التي توجد في التعلم العميق وتطبيقات البيانات المكثفة الأخرى. تتميز وحدات المعالجة الرسومية بالمعالجة المتوازية ، مما يجعلها مناسبة تمامًا للمهام التي يمكن توازيها بسهولة.

    c. الذاكرة يتم تزويد عقد HPC بكميات كبيرة من الذاكرة عالية السرعة ، مثل ذاكرة DDR4 أو DDR5 ، لدعم معالجة المجموعات البيانات الكبيرة والخوارزميات المعقدة.

    d. التخزين يتم تزويد كل عقدة معالجة عادة بتخزين محلي ، مثل وحدات تخزين الحالة الصلبة (SSDs) أو أقراص الصلب (HDDs) ، لتخزين البيانات والملفات الضرورية للعمليات الحسابية. بالإضافة إلى ذلك ، قد يحتوي العصابة على أنظمة تخزين مشتركة ، كما سيتم مناقشته في القسم التالي.

  2. بنية الشبكة a. ربط سريع يتصل عقد HPC داخل العصابة من خلال بنية شبكة ذات سرعة عالية ، وعادة ما تستخدم اتصالات داخل العقد مثل InfiniBand أو Omni-Path أو Ethernet ذات الأداء العالي. توفر هذه الاتصالات تواصل عالي السرعة وكثافة النطاق الترددي بين العقد ، مما يتيح نقل البيانات بكفاءة وعمليات المعالجة المتوازية.

    b. Ethernet ، InfiniBand أو شبكات متخصصة أخرى يعتمد اختيار تكنولوجيا الشبكة على متطلبات عصابة HPC المحددة ، مثل متطلبات العمل ، واحتياجات نقل البيانات ، وقيود الميزانية. يعد Ethernet خيارًا شائعًا وفعالًا من حيث التكلفة ، بينما تقدم InfiniBand وشبكات متخصصة أخرى أداءًا أعلى وبتكلفة أعلى ومعقدة.

  3. أنظمة التخزين المشتركة a. التخزين المرتبط بالشبكة (NAS) غالبًا ما يستخدم أنظمة الهوب HPC أنظمة التخزين المرتبطة بالشبكة (NAS) لتوفير تخزين متمركز ومشترك لعقد المعالجة. عادة ما تتكون أنظمة NAS من أجهزة تخزين متعددة ، مثل الأقراص الصلبة أو وحدات التخزين بحالة الصلب ، المتصلة عبر شبكة ذات سرعة عالية ، مما يتيح لجميع العقد الوصول إلى نفس البيانات.

    b. شبكات مناطق التخزين (SAN) حل آخر للتخزين في صفوف HPC هو شبكات مناطق التخزين (SAN) التي توفر شبكة مخصصة عالية الأداء لأجهزة التخزين. توفر شبكات SAN ميزات متقدمة مثل الاستعاضة ، والتوفر العالي ، وقابلية التوسع ، مما يجعلها مناسبة لتطبيقات البيانات ذات المقياس الكبير وذات الملاءمة العالية.

B. البرمجيات

  1. نظام التشغيل a. لينكس (على سبيل المثال ، CentOS ، Ubuntu) تعمل غالبية صفوف HPC على أنظمة تشغيل قائمة على لينكس مثل CentOS أو Ubuntu. توفر هذه الأنظمة تنمية مستقرة وقابلة للتطوير ومخصصة لأعباء HPC ، مع مجموعة واسعة من البرامج والأدوات المتاحة.

    b. ويندوز (لحالات الاستخدام المحددة) على الرغم من أن لينكس هو الخيار السائد ، إلا أن بعض صفوف HPC قد تستخدم أيضًا أنظمة التشغيل ويندوز ، خاصة لتطبيقات محددة أو حالات استخدام تتطلب برامج أو أدوات تعتمد على نظام التشغيل ويندوز.

  2. جدولة الوظائف ومدير الموارد a. SLURM ، PBS ، SGE ، إلخ. تستخدم صفوف HPC بشكل عام جدولة الوظائف ومدير الموارد لتخصيص وإدارة الموارد الحسابية بكفاءة. تشمل الأمثلة الشائعة SLURM (أداة Linux Simple Utility لإدارة الموارد) ، و PBS (نظام دُفعة محمول) ، و SGE (محرك الشبكة لشركة Sun).

    b. إدارة الأعباء العمل وتحديد أولوية الوظيفة يتولى هذه الجداول ومدراء الموارد إدارة وتحديد أولوية المهام الحسابية المختلفة (الوظائف) المقدمة من المستخدمين ، وضمان استخدام فعال لموارد العصابة.

  3. أطر البرمجة الموازية a. واجهة تمرير الرسائل (MPI) واجهة تمرير الرسائل (MPI) هي إطار برمجة موازية مشهورة تستخدم في HPC ، والتي تمكن من التواصل والتنسيق الفعال بين عقد المعالجة في العصابة.

    b. OpenMP OpenMP هو إطار برمجة موازية شائع آخر يركز على الموازاة المشتركة للذاكرة ، والذي يستخدم في كثير من الأحيان بالاشتراك مع MPI في البرامج الموازية المختلطة.

    c. كودا (لحوسبة معالجة الرسومات) بالنسبة لقطاعات الحوسبة العالية الأداء مع وحدات المعالجة المركزية التي تعمل بسرعة ، يتم استخدام إطار البرمجة CUDA (معمارية جهاز التوحيد في المعالجة) بشكل شائع للاستفادة من قدرات المعالجة الموازية لوحدات المعالجة المركزية.

III. التعلم العميق على صفوف HPC

A. مزايا استخدام صفوف HPC للتعلم العميق

  1. التدريب والاستنتاج المسرع تتمكن صفوف HPC ، بفضل أجهزتها القوية وقدراتها للمعالجة المتوازية ، من تسريع بشكل كبير عملية التدريب والاستنتاج لنماذج التعلم العميق ، مما يمكن استكشاف نماذج أكبر وأكثر تعقيدًا ، وكذلك القدرة على التعامل مع مجموعات بيانات كبيرة في نطاق واسع.

  2. التعامل مع مجموعات بيانات ذات مقياس كبير تجعل قابلية التوسع وموارد الحوسبة عالية الأداء في صفوف HPC مناسبة تمامًا للعمل مع مجموعات بيانات ذات مقياس كبير ، والتي غالبًا ما تكون مطلبًا في تطبيقات التعلم العميق.

  3. التدريب الموزع والتوازي في النمط تمكن صفوف HPC استخدام تقنيات التدريب الموزعة ، حيث يتم تقسيم النموذج عبر العدد المتعدد من عقد المعالجة ، وتوازن عملية التدريب. يمكن أن يؤدي هذا إلى تحسين أسرع والقدرة على تدريب نماذج أكبر لا تتناسب مع جهاز واحد.

B. أطر التعلم العميق وتكامل HPC

  1. تنسيق TensorFlow a. التدريب الموزع باستخدام TensorFlow الموزع توفر TensorFlow ، إطار التعلم العميق الشهير ، دعم مدمج للتدريب الموزع من خلال وحدة TensorFlow الموزعة. يتيح لك هذا الأمر استخدام موارد حسابية في صفوف HPC لتدريب نماذج التعلم العميق الخاصة بك بطريقة موازية وقابلة للتوسع.

    b. تسريع المعالجة باستخدام TensorFlow-GPU يوفر TensorFlow أيضًا تكاملًا سلسًا مع أجهزة GPU ، مما يتيح لك الاستفادة من قدرات المعالجة الموازية لوحدات المعالجة المركزية لتسريع عملية التدريب والاستنتاج لنماذج التعلم العميق الخاصة بك.

  2. تنسيق PyTorch a. التدريب الموزع باستخدام PyTorch الموزع يدعم PyTorch ، إطار التعلم العميق الآخر المستخدم على نطاق واسع ، التدريب الموزع من خلال وحدة PyTorch الموزعة. يتيح لك ذلك استغلال موارد صفوف HPC لتدريب نماذج التعلم العميق الخاصة بك بطريقة موزعة وقابلة للتوسع.

    b. تسريع المعالجة باستخدام PyTorch CUDA على غرار TensorFlow ، يوفر PyTorch دعمًا قويًا لتسريع GPU ، مما يتيح لك استخدام موارد GPU المتاحة في صفوف HPC لتسريع عملية التدريب والاستنتاج لنماذج التعلم العميق الخاصة بك.

  3. أطر أخرى (مثل Keras و Caffe و Theano) على الرغم من أن TensorFlow و PyTorch هما من أشهر أطر التعلم العميق ، إلا أن هناك خيارات أخرى مثل Keras و Caffe و Theano التي توفر مستويات متفاوتة من التكامل والدعم لبيئات صفوف HPC.

C. التنشيط والتكوين

  1. تثبيت وتكوين أطر التعلم العميق a. إدارة الحزمة (مثل pip أو conda) اعتمادًا على بيئة البرنامج في صفوف HPC ، قد تحتاج إلى استخدام أدوات إدارة الحزم مثل pip أو conda لتثبيت أطر التعلم العميق اللازمة وتبعياتها.

    b. إعداد البيئة وإدارة التبعيات يعد إعداد البيئة البرمجية بشكل صحيح ، بما في ذلك تثبيت إطار التعلم العميق وتبعياته وأي مكتبات مطلوبة ، أمرًا حاسمًا لضمان سلسة تشغيل أعباء التعلم العميق الخاصة بك على صفوف HPC.

  2. دمج التعلم العميق مع صفوف HPC a. تقديم الوظيفة وتخصيص الموارد لتشغيل أعباء التعلم العميق الخاصة بك على صفوف HPC ، ستحتاج إلى تقديم الوظائف من خلال جدول المهام ومدير الموارد في العصابة ، مثل SLURM أو PBS. ينطوي ذلك على تحديد الموارد الحسابية المطلوبة (عدد وحدات المعالجة المركزية ، وحدات المعالجة الرسومية ، والذاكرة) لمهام التعلم العميق الخاصة بك.

    b. استغلال موارد وحدة المعالجة المركزية في العصابةإذا كانت عندك مجموعة HPC مزودة بأجهزة GPU، ستحتاج إلى التأكد من تكوين وظائف التعلم العميق الخاصة بك لاستخدام هذه الموارد بكفاءة، غالبًا من خلال استخدام إطارات عمل تعلم العمق المستندة إلى GPU مثل TensorFlow-GPU أو PyTorch CUDA.

c. التدريب الموزع وتوازي النموذج للاستفادة من قدرات المعالجة الموازية لمجموعة HPC، يمكنك تنفيذ تقنيات التدريب الموزع، مثل التوازي بيانات أو التوازي النموذج، باستخدام ميزات التدريب الموزع المقدمة من إطار عمل التعلم العميق المفضل لديك.

D. الأداء والتحسين

  1. اختيار وتكوين الأجهزة a. اختيار وحدة المعالجة المركزية ووحدة المعالجة الرسومية عند تصميم أو تكوين مجموعة HPC للتعلم العميق، من الضروري اختيار بعناية وحدة المعالجة المركزية ووحدة المعالجة الرسومية المناسبة التي تتوافق مع متطلبات أعباء عمل التعلم العميق الخاصة بك. العوامل مثل عدد النوى وسرعة الساعة والذاكرة وهندسة وحدة المعالجة الرسومية يمكن أن تؤثر بشكل كبير على أداء نماذج التعلم العميق الخاصة بك.

    b. الاعتبارات المتعلقة بالذاكرة والتخزين يمكن أن تؤثر كمية الذاكرة والتخزين المتاحة على العقد الحسابية أيضًا على أداء أعباء عمل التعلم العميق، خاصة عند التعامل مع مجموعات بيانات كبيرة أو نماذج تتطلب موارد ذاكرة وتخزين هائلة.

  2. تحسين الشبكة a. اختيار اتصالات مناسبة يمكن أن يؤثر اختيار اتصالات الشبكة، مثل Ethernet أو InfiniBand أو خيارات متخصصة أخرى، على أداء أعباء عمل التعلم العميق الموزع. يمكن أن تعزز اتصالات أسرع وأقل تأخير كفاءة نقل البيانات والاتصال بين العقد الحسابية.

    b. ضبط معلمات الشبكة يمكن أيضًا تحسين معلمات الشبكة ذات الصلة بالشبكة، مثل حجم MTU (وحدة النقل الكحدية) وإعدادات TCP / IP وتكوينات بروتوكول الشبكة المختلفة، لمساعدة تحسين الأداء العام لأعباء عمل التعلم العميق على مجموعة HPC.

  3. استراتيجيات التدريب المتوازي a. التوازي بيانات التوازي بيانات هو نهج شائع للتعلم العميق الموزع، حيث يتم تقسيم مجموعة بيانات التدريب عبر عدة عقد حسابية، ويقوم كل عقد بتدريب النموذج على مجموعة البيانات الفرعية الخاصة به.

    b. التوازي النموذج ينطوي التوازي النموذج على تقسيم نموذج التعلم العميق عبر عدة عقد حسابية، حيث يتحمل كل عقد مسؤولية جزء من النموذج. يمكن أن يكون ذلك مفيدًا بشكل خاص لتدريب النماذج الضخمة جدًا التي لا تتناسب مع عقدة واحدة.

    c. النهج الهجين يمكن استخدام مزيج من التوازي بيانات والتوازي النموذج، المعروف باسم النهج الهجين، لتحسين مقياس القابلية للتوسع وأداء التعلم العميق الموزع على مجموعات HPC.

  4. ضبط المعلمات الهجينة a. تحسين المعلمات الهجينة تلقائيًا لتحسين أداء نماذج التعلم العميق، من الضروري غالبًا ضبط معلمات مختلفة، مثل معدل التعلم وحجم التجمع ومعلمات التعميم. يمكن استغلال تقنيات تحسين المعلمات الهجينة لاستكشاف مساحة المعلمات بكفاءة وإيجاد التكوين المثالي.

    b. بحث المعلمات الهجينة الموزع يمكن استخدام قدرات المعالجة الموازية لمجموعات HPC لإجراء بحث المعلمات الهجينة الموزعة، حيث يتم استكشاف تكوينات متعددة للمعلمات متزامنة، مما يسرع أكثر من عملية تحسين النموذج.

 

شبكات التعلم العميق المتسلسلة (CNNs)

شبكات التعلم العميق المتسلسلة (CNNs) هي نوع متخصص من الشبكات العصبية تصلح بشكل خاص لمعالجة وتحليل البيانات الصورية. تم تصميم شبكات CNN لاستخراج المعالم تلقائيًا وتسلسليًا من البيانات الصورية الخام، مما يجعلها فعالة للغاية في المهام مثل تصنيف الصور وكشف الكائنات وتجزئة الصور.

المكونات الرئيسية لبنية شبكة CNN هي:

  1. الطبقات التأثيرية: تطبق هذه الطبقات مجموعة من الفلاتر التعلمية على الصورة الداخلية، مما يستخرج المعالم المحلية مثل الحواف والأشكال والقوام. يتم تعلم الفلاتر أثناء عملية التدريب، وناتج الطبقة التأثيرية هو خريطة معالم تمثل وجود المعالم المكتشفة في مواقع مختلفة في الصورة الداخلية.

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

  3. الطبقات المتصلة بالكامل: بعد الطبقات التأثيرية وطبقات التجميع، يتم تسطيح الناتج وتمريره من خلال طبقة واحدة أو أكثر تم تصميمها للتفكير والتصنيف على أساس المعالم التي تم استخراجها.

فيما يلي مثال لبنية CNN بسيطة لتصنيف الصور:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
 
# حدد نموذج CNN
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
 
# قم بتجميع النموذج
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

في هذا المثال، يتكون نموذج CNN من ثلاثة طبقات تأثيرية، يليها طبقة تجميع حد الأقصى، وطبقتين متصلتين بالكامل في النهاية. صورة الإدخال هي (28، 28، 1)، والتي تتوافق مع صورة رمادية بحجم 28x28 بكسل. يتم تجميع النموذج باستخدام محسن Adam وفقدان خطأ الشبكة العصبية التصنيفية التقاطعية، ويتم إخراج توزيع الاحتمال على 10 فئات.

شبكات الذاكرة التتابعية المتسلسلة (RNNs)

شبكات الذاكرة التتابعية المتسلسلة (RNNs) هي فئة من الشبكات العصبية تم تصميمها لمعالجة البيانات التتابعية مثل النص والكلام أو البيانات التي تتغير مع مرور الوقت. على عكس الشبكات العصبية التي تعالج كل إدخال بشكل مستقل، تحتفظ شبكات RNN بحالة مخفية تم تحديثها في كل خطوة زمنية، مما يسمح لها بدمج المعلومات من الإدخالات السابقة في الإخراج الحالي.

المكونات الرئيسية لبنية RNN هي:

  1. سلسلة الإدخال: الإدخال إلى RNN هو سلسلة من القواميس، حيث يمثل كل قاموس عنصرًا واحدًا من الإدخال، مثل كلمة في جملة أو خطوة زمنية في سلسلة زمنية.

  2. الحالة المخفية: الحالة المخفية لشبكة RNN هي متجه يمثل الذاكرة الداخلية للشبكة، والتي يتم تحديثها في كل خطوة زمنية بناءً على الإدخال الحالي والحالة المخفية السابقة.

  3. سلسلة الإخراج: إخراج شبكة RNN هو سلسلة من القواميس، حيث يمثل كل قاموس إخراج الشبكة في قدر زمني معين.

فيما يلي مثال لبنية RNN بسيطة لتصنيف النص:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, SimpleRNN, Dense
 
# حدد نموذج RNN
model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=128, input_length=100))
model.add(SimpleRNN(64))
model.add(Dense(1, activation='sigmoid'))
 
# قم بتجميع النموذج
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

في هذا المثال، يتكون نموذج RNN من طبقة تضميد، طبقة RNN بسيطة، وطبقة إخراج كثيفة. إدخال النموذج هو سلسلة من 100 كلمة، حيث يتم تمثيل كل كلمة بمعرّف صحيح فريد بين 0 و 9999. تقوم طبقة التضميد بتعيين هذه المعرّفات الصحيحة لتمثيلات متجهية ذات بعد 128، ثم يتم تمرير هذه التمثيلات المتجهية إلى طبقة RNN. تقوم طبقة RNN بمعالجة السلسلة وإخراج متجه واحد، يتم تمريره ثم لطبقة إخراج كثيفة لإنتاج توصيف لفئة ثنائية.

الذاكرة الطويلة القصيرة المدى (LSTMs)

الذاكرة الطويلة القصيرة المدى (LSTMs) هي نوع خاص من RNN تم تصميمه للتغلب على مشكلة تلاشي التدرج، التي يمكن أن يجعل من الصعب على الشبكات العصبية التقليدية تعلم الاعتماديات طويلة المدى في البيانات التتابعية. يتحقق LSTMs من ذلك عن طريق تقديم حالة مخفية أكثر تعقيدًا تشتمل على حالة خلية، والتي تسمح للشبكة بتذكر ونسيان المعلومات من خطوات الوقت السابقة بشكل انتقائي.

المكونات الرئيسية لبنية LSTM هي:

  1. حالة الخلية: حالة الخلية هي متجه يمثل الذاكرة طويلة المدى لـ LSTM، والتي يتم تحديثها في كل خطوة زمنية بناءً على الإدخال الحالي وحالة الخلية والحالة المخفية السابقة.

  2. بوابة النسيان: بوابة النسيان هي مكون في LSTM يحدد المعلومات التي يجب نسيانها أو الاحتفاظ بها من الحالة السابقة للخلية.

  3. بوابة الإدخال: بوابة الإدخال هي مكون في LSTM يحدد المعلومات التي يجب إضافتها من الإدخال الحالي والحالة المخفية السابقة إلى الحالة الخلوية.

  4. بوابة الإخراج: بوابة الإخراج هي مكون في LSTM يحدد المعلومات التي يجب استخدامها من الإدخال الحالي والحالات السابقة (المخفية والخلوية الحالية) لإنتاج الإخراج في الخطوة الزمنية الحالية.

فيما يلي مثال لنموذج LSTM بسيط لتوليد النص:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense
 
# حدد نموذج LSTM
model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=128, input_length=50))
model.add(LSTM(128))
model.add(Dense(10000, activation='softmax'))
 
# قم بتجميع النموذج
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

في هذا المثال، يتكون نموذج LSTM من طبقة تضميد، طبقة LSTM، وطبقة إخراج كثيفة. إدخال النموذج هو سلسلة مكونة من 50 كلمة، حيث يتم تمثيل كل كلمة بمعرّف صحيح فريد بين 0 و 9999. تقوم طبقة التضميد بتعيين هذه المعرّفات الصحيحة لتمثيلات متجهية ذات بعد 128، ثم يتم تمرير هذه التمثيلات المتجهية إلى طبقة LSTM. تقوم طبقة LSTM بمعالجة السلسلة وإخراج متجه واحد، يتم تمريره ثم لطبقة إخراج كثيفة لإنتاج توليد نص تصنيفي على 10000 فئة.

في هذا المثال، يتكون نموذج LSTM من طبقة تضمين، وطبقة LSTM، وطبقة إخراج كثيفة. المدخل إلى النموذج هو سلسلة تتكون من 50 كلمة، حيث يتم تمثيل كل كلمة بمعرف صحيح فريد بين 0 و 9999. تقوم طبقة التضمين بتعيين هذه المعرفات الصحيحة إلى تمثيلات بُعدية ذات أبعاد 128، والتي يتم تمريرها بعد ذلك إلى طبقة LSTM. تقوم طبقة LSTM بمعالجة التسلسل وتُخرج ناقطة واحدة، يتم تمريرها بعد ذلك إلى طبقة الإخراج الكثيف لإنتاج توزيع احتمالي على الكلمات المخرجة المحتملة (التي تصل إلى 10,000 كلمة).

الشبكات التضادية العامّة (GANs)

الشبكات التضادية العامّة (GANs) هي نوع من نماذج التعلم العميق تتألف من شبكتين عصبيتين، مولد ومميز، يتم تدريبهما بطريقة تنافسية. الشبكة المولدة مسؤولة عن إنتاج بيانات جديدة وتخيلية تشبه البيانات الحقيقية، في حين تعتبر الشبكة المميزة مسؤولة عن التمييز بين البيانات الحقيقية والبيانات المولدة.

تشتمل العناصر الرئيسية لبنية الشبكة التضادية العامّة على:

  1. الشبكة المولّدة: تأخذ الشبكة المولّدة مدخلًا عشوائيًا، عادة متجهًا من الضجيج، وتحوّله إلى عيّنة بيانات مزيفة تشبه البيانات الحقيقية.

  2. الشبكة المميزة: تأخذ الشبكة المميزة عيّنة بيانات، سواء كانت حقيقية أو مزيفة، وتنتج احتمالًا لكون العيّنة حقيقية (بدلاً من أن تكون مزيفة).

  3. التدريب المناقض: يتم تدريب الشبكة المولّدة والشبكة المميزة بطريقة تنافسية، حيث تحاول الشبكة المولّدة خداع الشبكة المميزة عن طريق إنتاج بيانات أكثر وأكثر واقعية، وتحاول الشبكة المميزة أن تصبح أفضل في التمييز ما بين البيانات الحقيقية والبيانات المولّدة.

وفيما يلي مثال لشبكة GAN بسيطة لإنتاج أرقام مكتوبة يدويًا:

import tensorflow as tf
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Dense, Reshape, Flatten
from tensorflow.keras.optimizers import Adam
 
# تعريف شبكة المُولِّد
generator = Sequential()
generator.add(Dense(256, input_dim=100, activation='relu'))
generator.add(Dense(784, activation='tanh'))
generator.add(Reshape((28, 28, 1)))
 
# تعريف شبكة المُمِيز
discriminator = Sequential()
discriminator.add(Flatten(input_shape=(28, 28, 1)))
discriminator.add(Dense(256, activation='relu'))
discriminator.add(Dense(1, activation='sigmoid'))
 
# تعريف نموذج GAN
gan = Model(generator.input, discriminator(generator.output))
 
# تجميع النماذج
generator.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.0002, beta_1=0.5))
discriminator.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.0002, beta_1=0.5))
gan.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.0002, beta_1=0.5))

في هذا المثال، تأخذ شبكة المولِّد متجه ضوضاء بُعديًا يبلغ 100 بُعدًا كمدخل وتُنتج صورة رمادية حجمها 28x28 لرقم مكتوب يدويًا. تأخذ شبكة المميزة صورة رمادية بحجم 28x28 كمدخل وتُخرج احتمالًا لكون الصورة حقيقية (بدلاً من أن تكون مولَّدة). يتم تعريف نموذج GAN عن طريق ربط شبكتي المولِّد والمميزة، ويتم تدريبه بطريقة متنافسة لإنتاج أرقام أكثر وأكثر واقعية.

الاستنتاج

في هذا البرنامج التعليمي، استكشفنا عدة هياكل وتقنيات أساسية في مجال التعلم العميق، بما في ذلك شبكات العصب العميقة التصنيفية (CNNs)، وشبكات العصب العميقة الانتقائية (RNNs)، وطويل الطريق الثابت (LSTMs)، وشبكات التغذية التضادية العامَّة (GANs). لكل من هذه الهياكل قوتها الخاصة وهي مناسبة تمامًا لأنواع محددة من المشاكل، مثل تصنيف الصور وتوليد النص وتوليد البيانات الاصطناعية.

من خلال فهم المفاهيم والعناصر الأساسية لهذه النماذج في التعلم العميق، يمكنك البدء في بناء التطبيقات الخاصة بك والقيام بتجارب في مجال التعلم العميق. تذكر أن التعلم العميق هو مجال يتطور بسرعة، ويتم تطوير هياكل وتقنيات جديدة باستمرار، لذا فمن المهم أن تبقى على اطلاع دائم بأحدث الأبحاث وأفضل الممارسات.

حظًا سعيدًا في رحلتك في مجال التعلم العميق!