Ultralytics YOLO27: انضم إلى قائمة الانتظار.
ترخيص YOLO
Ultralytics YOLO

كيف نسرّع نماذج YOLO في Ultralytics على الشريحة المفضلة لديك

كيف تؤثر الشرائح والذاكرة والساعات على سرعة YOLO، وكيف يجعل التكميم ودمج العمليات والتقليم النماذج سريعة على وحدات CPU وGPU والأجهزة الطرفية.

فرانشيسكو ماتيوليFrancesco Mattioli21 دقيقة قراءة
تحسين نماذج YOLO عبر وحدات CPU وGPU وشرائح الأجهزة الطرفية

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

تعالج نماذج Ultralytics YOLO الصور على حقيقتها: مصفوفات من الأعداد! فكل بكسل ليس في الواقع سوى قيم لونية، أي مقدار الأحمر والأخضر والأزرق (RGB) في كل نقطة تتكون منها الصورة. ونسمي مصفوفات الأعداد هذه «موترات» لأنها تبدو أروع بكثير من «المصفوفات متعددة الأبعاد»، التي تبدو بدورها أروع بكثير من «أعداد مكدسة فوق أعداد مكدسة فوق أعداد».

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

ما الذي يخرج من الطرف الآخر؟ مزيد من الأعداد! أعداد ذات دلالة. ففي مهام الكشف، تخبرك هذه الأعداد بدقة بموقع الأشياء في الصورة وبماهية تلك الأشياء على الأرجح. «مرحبًا، هناك احتمال بنسبة 95% أن يكون هذا كلبًا عند الإحداثيات (x, y)!» نسمي هذه العملية السحرية الاستدلال.

والآن، قبل أن تتمكن نماذجنا من أداء سحرها، عليها الذهاب إلى المدرسة؛ أي يجب تدريبها. وهنا تبدأ مرحلة التدريب، وتشتد الأمور.

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

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

كم عددًا نتحدث عنه؟ حسنًا، يحتوي نموذجنا الصغير اللطيف YOLO11n على بضعة ملايين من المعلمات. أما YOLO11x؟ فهذا النموذج الضخم يضم أكثر من 50 مليون معلمة! وتعني زيادة عدد المعلمات إمكانية ترميز مزيد من التفاصيل، مثل الفرق بين الرسم بأقلام التلوين وامتلاك لوحة ألوان كاملة لفنان.

أثناء الاستدلال، يصبح عدد المعلمات هذا بالغ الأهمية. فتشغيل شبكة تضم 3 ملايين معلمة يشبه الركض حول الحي. أما تشغيل شبكة تضم 50 مليون معلمة؟ فيشبه أكثر خوض ماراثون مع تدوير مشاعل ملتهبة.

إذًا، ما الحوسبة بالضبط؟ كيف تجري كل هذه الحسابات العددية فعليًا؟ وكيف نجعلها أسرع؟ وماذا يعني أصلًا «تحسين الحوسبة»؟

كيف تنفذ الشرائح الحسابات فعليًا#

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

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

لنرفع الغطاء عن هذه الطبقات. لنأخذ هذا الرمز البسيط جدًا بلغة Python:

x = 1
if x == 1:
    y = x + 1

ننشىء متغيرًا اسمه x ونسند إليه القيمة 1، وإذا كان x يساوي 1 (وهذا هو الحال بالفعل)، ننشئ y ونسند إليه قيمة x زائد 1. ثلاثة أسطر. الأمر سهل.

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

الطبقة 1: Python → الرمز الثانوي أولًا، تقرأ Python الرمز البرمجي وتترجمه إلى ما يسمى الرمز الثانوي، وهي لغة وسيطة يسهل على الحواسيب استيعابها، لكنها قد تؤذي عينيك إذا حاولت قراءتها.

الطبقة 2: الرمز الثانوي → رمز الآلة يأخذ مفسر Python (مثل CPython) الرمز الثانوي ويترجمه إلى رمز الآلة، أي التعليمات الفعلية التي يفهمها المعالج. وهنا تتحول عبارة "if x == 1" الأنيقة إلى شيء يشبه "LOAD register, COMPARE register, JUMP if zero flag set."

الطبقة 3: رمز الآلة → الرمز الميكروي مفاجأة! حتى إن المعالجات الحديثة لا تنفذ رمز الآلة مباشرة. فهي تقسّمه إلى وحدات أصغر من الرمز الميكروي، وهي عمليات أصغر يمكن للمكونات الداخلية للشريحة التعامل معها. وقد تتحول تعليمة "ADD" واحدة إلى عدة عمليات ميكروية.

الطبقة 4: الرمز الميكروي → الإلكترونيات المادية أخيرًا، نصل إلى السيليكون. تؤدي هذه العمليات الميكروية إلى إطلاق إشارات كهربائية فعلية تسري عبر الترانزستورات. وتعمل مليارات المفاتيح الصغيرة وتنطفئ، وترقص الإلكترونات عبر مسارات مصممة بعناية، وبطريقة سحرية ما، يصبح 1 + 1 مساويًا لـ 2.

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

والمفارقة؟ من المحتمل أن تؤدي أسطر Python الثلاثة هذه إلى تشغيل ملايين الترانزستورات وإيقافها. لكن بفضل هذه التجريدات، لا تحتاج إلى التفكير في كل ذلك. ما عليك سوى كتابة "y = x + 1" والثقة بأن السحر يحدث في مكان ما، عميقًا داخل السيليكون.

البنية#

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

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

  • x86 (Intel وAMD) - عرّاب الحوسبة المكتبية، معقد لكنه قوي
  • ARM - يشغّل هاتفك وحاسوبك المحمول على نحو متزايد، وصُمم لتحقيق الكفاءة
  • RISC-V - المتمرد مفتوح المصدر، الذي يكتسب زخمًا في كل مكان
  • PowerPC - معالج IBM القوي، استُخدم سابقًا في أجهزة ألعاب الفيديو ولا يزال شائعًا في الأنظمة المضمنة
  • MIPS - المفضل لدى الأكاديميين، بسيط وأنيق
  • SPARC - إسهام Sun Microsystems (التي أصبحت الآن تابعة لـ Oracle) في الحوسبة عالية الأداء
  • معماريات GPU (أنوية CUDA من NVIDIA وRDNA من AMD) - وحوش المعالجة المتوازية

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

نبض السيليكون#

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

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

عندما تسمع عبارة «معالج بتردد 3.5 GHz»، فإن GHz (غيغاهرتز) هو تردد الساعة، أي 3.5 مليارات نبضة في الثانية. وتسمى كل نبضة دورة ساعة، وهي وحدة الزمن الأساسية في الحوسبة.

لا يحدث أي شيء بين دورات الساعة. يتجمد الحاسوب بأكمله منتظرًا النبضة التالية. يشبه الأمر لعبة «إشارة حمراء، إشارة خضراء» الأكثر تطرفًا في الكون. مع كل «إشارة خضراء» (نبضة الساعة):

  • تنتقل البيانات بين المكونات
  • تُنفذ الحسابات
  • تُتخذ القرارات المنطقية
  • تُقرأ الذاكرة أو تُكتب فيها

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

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

في الماضي، كانت هذه العمليات تُنفذ بآلات بحجم الغرف. لكن المكونات التي تنفذ كل هذه الحسابات بسيطة على نحو مدهش: إنها مجرد مفاتيح، تعمل أو تتوقف.

صِل عددًا كافيًا من هذه المفاتيح بالنمط الصحيح، وستحصل على الحوسبة. فالثورة الرقمية بأكملها تقوم على ترتيب متطور للمفاتيح.

تعني هذه البساطة أنه يمكنك بناء حاسوب إذا توفرت لديك مفاتيح، أيًّا كان نوعها. وقد صنع الناس حواسيب عاملة باستخدام أنابيب المياه وصماماتها، والدومينو، وقطع LEGO، والكرات الزجاجية، وحتى حجر الريدستون في Minecraft.

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

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

لا عجب أن تدريب النماذج يجعل حاسوبك يصدر صوتًا كأنه يحاول الإقلاع!

تشغيل الشبكات العصبية بأقصى سرعة#

حسنًا، لدينا شرائح تضم مليارات المفاتيح التي ترقص على إيقاع بلورة، ونريد تشغيل شبكات عصبية تضم ملايين المعلمات عليها. ينبغي أن يكون الأمر سهلًا، أليس كذلك؟ ما علينا سوى رمي الأعداد على الشريحة وتركها تنطلق!

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

عدم التوافق بين المعماريات#

صُممت معظم الشرائح لتشغيل Microsoft Word، لا الشبكات العصبية. فقد صُممت CPU لديك على أساس أنها ستقضي عمرها في تشغيل العبارات الشرطية والحلقات، وحساب ضرائبك من حين إلى آخر (وهي العملية الحسابية الوحيدة التي تستنزف عاطفيًا حتى الحواسيب العملاقة). وهي محسّنة للعمليات التسلسلية: نفّذ هذا، ثم ذاك، ثم الذي يليه.

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

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

لكن حتى GPU ليست مثالية للشبكات العصبية. ولهذا تبني الشركات الآن شرائح ذكاء اصطناعي متخصصة (TPU وNPU وكل اختصار آخر ينتهي بـ PU). صُممت هذه الشرائح من الأساس لمهمة واحدة: تسريع الشبكات العصبية. إنها أشبه بتوظيف طاهٍ لا يعرف سوى إعداد طبق واحد، لكنه يعده بسرعة خارقة. فبينما تكافح CPU لتنفيذ العمليات المصفوفية تسلسليًا، وتتعامل GPU معها جيدًا بالتوازي، تلتهم هذه الشرائح المتخصصة المصفوفات على الإفطار والغداء والعشاء.

جدار الذاكرة (أو: لماذا يصعب نقل البتات أكثر من إجراء الحسابات)#

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

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

يمكن للشريحة ضرب عددين في دورة ساعة واحدة (تذكّر أن هذه إحدى مليارات النبضات في الثانية). سرعة البرق! لكن جلب هذين العددين من الذاكرة إلى الشريحة؟ قد يستغرق مئات الدورات. يشبه الأمر عالم رياضيات يستطيع حل مسألة في ثانية واحدة، لكنه يحتاج إلى خمس دقائق للذهاب إلى المكتبة والعودة.

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

  • السجلات (مدمجة مباشرة في وحدات الحوسبة): مكتب عالم الرياضيات. وصول فوري! لكنها صغيرة؛ فلا يمكنك الاحتفاظ إلا بنحو 32 عددًا فيها. يشبه الأمر وجود ملاحظات لاصقة أمامك مباشرة.
  • ذاكرة التخزين المؤقت L1 (على بُعد ميكرومترات): رف الكتب في المكتب. يستغرق جلب شيء منها 3-4 دورات. ويمكنك تخزين بضعة آلاف من الأعداد فيها.
  • ذاكرة التخزين المؤقت L2 (على بُعد مليمترات): خزانة الملفات في نهاية الممر. يتطلب الوصول إليها 10-15 دورة، ويمكنها استيعاب بضعة ملايين من الأعداد.
  • ذاكرة التخزين المؤقت L3 (في الطرف الآخر من الشريحة): غرفة التخزين في الطابق السفلي. يستغرق الوصول إليها 30-50 دورة، وتتسع لعشرات الملايين من الأعداد.
  • RAM (على شريحة مختلفة تمامًا): المستودع في الطرف الآخر من المدينة. يستغرق الوصول إليها 100-300 دورة. وهنا تعيش مليارات الأعداد لديك.
  • SSD/Hard Drive (متصل بالكابلات): مدينة أخرى بالكامل. يستغرق الوصول إليه ملايين الدورات. مساحة تخزين هائلة، وسرعة شديدة البطء.

تختلف البنى الدقيقة؛ فقد تتجاهل شريحة هاتفك ذاكرة التخزين المؤقت L3، بينما قد تضم CPU الخادم كمية هائلة منها. لكن المبدأ يظل كما هو: الذاكرة الأقرب أسرع، لكنها أصغر.

وهنا تبدأ معاناة الشبكات العصبية. تخيّل أن نموذج Ultralytics YOLO لديك يضم 50 مليون معلمة (أما ChatGPT فيضم مليارات، بالمناسبة). هذه 50 مليون عدد يجب أن تنتقل من الذاكرة إلى وحدات الحوسبة ثم تعود إليها. وحتى لو كان حجم كل عدد 4 بايتات فقط، فذلك يعني نقل 200 ميغابايت من البيانات عبر نظامك.

قد تعالج الشريحة كل عدد في دورة واحدة، لكن إذا استغرق جلب ذلك العدد من RAM مئة دورة، فستقضي 99% من وقتك في انتظار وصوله. يشبه الأمر سيارة سباق Formula 1 عالقة في ازدحام مروري. كل تلك القدرة الحوسبية جالسة في مكانها تنتظر وصول البيانات.

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

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

في كل مرة تنقل فيها جزءًا من البيانات، تستهلك طاقة. ليست كمية كبيرة، فنحن نتحدث عن بيكوجولات، لكن عندما تنقل تيرابايتات في الثانية، تتراكم الكمية بسرعة هائلة. في الواقع، يتطلب نقل البيانات مسافة 1 مم عبر شريحة طاقة أكبر من إجراء العملية الحسابية نفسها!

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

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

الحل؟ تصميم يراعي البنية المعمارية#

الشبكات العصبية الأسرع ليست بالضرورة الأذكى؛ بل هي المصممة مع مراعاة الشرائح. وهي:

  • تحافظ على البيانات محلية قدر الإمكان
  • تعيد استخدام العمليات الحسابية بإصرار
  • تتوافق تمامًا مع إمكانات الأجهزة
  • تقلل نقل الذاكرة بأي ثمن

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

ولهذا فإن تسريع الشبكات العصبية فن بحد ذاته. لا يكفي أن تكون العمليات الحسابية جيدة؛ بل عليك فهم الأجهزة، واحترام التسلسل الهرمي للذاكرة، والتوافق بسلاسة تامة مع البنية المعمارية.

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

كيف نجعل YOLO أسرع#

عندما تدرّب نموذج YOLO، تحصل على شبكة عصبية تعمل بكفاءة عالية على إعداد التدريب لديك. لكن إليك الأمر: بطاقة GPU المخصصة للألعاب، وهاتف iPhone، والشريحة الصغيرة في كاميرا مراقبة، كلها تتحدث لغات مختلفة تمامًا. لكل منها نقاط قوة وضعف مختلفة، وتصور مختلف تمامًا لكيفية معالجة البيانات.

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

في Ultralytics، ندعم أكثر من اثني عشر صيغة تصدير مختلفة، لأن كل صيغة محسّنة لأجهزة مختلفة. لا يتعلق الأمر بتوفير خيارات كثيرة، بل بتوفير الخيار المناسب لاحتياجاتك أنت تحديداً.

دمج العمليات: إنجاز المزيد بموارد أقل#

في نموذج YOLO الأصلي، تُنفَّذ عمليات كثيرة بالتتابع. على سبيل المثال، قد نجري التفافًا، ثم نطبّع النتائج، ثم نطبّق دالة تنشيط. هذه ثلاث خطوات منفصلة، تتطلب كل منها عمليات قراءة وكتابة خاصة بها في الذاكرة.

لكن إليك الفكرة الذكية: يمكننا دمج هذه العمليات في خطوة واحدة. عند تصدير YOLO لنشره، ندمج هذه العمليات معًا. بدلًا من:

  1. حساب الالتفاف ← الحفظ في الذاكرة
  2. التحميل من الذاكرة ← التطبيع ← الحفظ في الذاكرة
  3. التحميل من الذاكرة ← تطبيق دالة التنشيط ← الحفظ في الذاكرة

ننفّذ ما يلي:

  1. حساب الالتفاف + التطبيع + التنشيط ← الحفظ في الذاكرة

في نموذج YOLO نموذجي يعالج صورة بأبعاد 640×640، تزيل هذه الحيلة البسيطة غيغابايتات من عمليات نقل الذاكرة غير الضرورية. وعلى الهاتف المحمول، يصنع ذلك الفرق بين اكتشاف سلس وفوري وبين تأخر مزعج.

استخدام أرقام أصغر: سحر التكميم#

لا يحتاج YOLO فعليًا إلى أرقام فائقة الدقة لاكتشاف الكائنات بدقة. أثناء التدريب، نستخدم 32 بت لتمثيل كل وزن؛ وهذا أشبه باستخدام آلة حاسبة علمية لقياس مكونات شطيرة. أما عند النشر الفعلي، فتكفي 8 بت.

يُسمى هذا التكميم، وهو أحد أقوى أساليب التحسين لدينا. باستخدام أعداد أصغر:

  • ينكمش حجم النموذج بنسبة 75% (من 200MB إلى 50MB في Ultralytics YOLO11x)
  • يعمل بسرعة أكبر بمقدار 2-4 أضعاف على معظم الأجهزة
  • يستهلك طاقة أقل بكثير (وهو ما تشكرك عليه بطارية هاتفك)

لا تتأثر كل طبقات YOLO بالتخفيض بالقدر نفسه. فالطبقات الأولى التي تكتشف الحواف والأشكال الأساسية؟ إنها متينة، ويمكننا استخدام أرقام من 8 بت دون أي مشكلات. أما طبقات الكشف النهائية التي تحدد «هل هذا قط أم كلب؟» فتحتاج إلى دقة أعلى قليلًا. لذا نضبط الدقة طبقةً تلو الأخرى، مستخدمين أقل عدد كافٍ من البتات للحفاظ على الدقة مع زيادة السرعة إلى أقصى حد.

اختيار أفضل خوارزمية#

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

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

الذاكرة: عنق الزجاجة الخفي#

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

نستخدم عدة حيل لتقليل نقل البيانات في الذاكرة:

الجدولة الذكية: نرتب العمليات بحيث تُستخدم البيانات فورًا ما دامت في ذاكرة التخزين المؤقت السريعة. وفي شبكة هرم الهرميات للميزات في YOLO، يقلل هذا حركة البيانات في الذاكرة بنسبة 40%.

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

إعادة استخدام المخازن المؤقتة: بدلًا من تخصيص ذاكرة جديدة باستمرار للنتائج الوسيطة، نعيد استخدام مخازن الذاكرة المؤقتة نفسها. وهذا فعال للغاية؛ إذ يمكن تشغيل العمود الفقري بالكامل في YOLO باستخدام مجموعة من المخازن المؤقتة القابلة لإعادة الاستخدام.

التقليم: الأقل أكثر#

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

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

التسريع بالأجهزة: الاستفادة من نقاط قوة كل شريحة#

تتفوق المعالجات المختلفة في مهام مختلفة، ولا تقتصر فجوات الأداء بينها على فروق السرعة الناتجة عن تردد الساعة، بل تعكس اختلافات جوهرية في البنية. وتضم وحدات GPU آلاف الأنوية التي تعمل بالتوازي، ما يجعلها مثالية للعمليات الالتفافية في YOLO. أما وحدات NPU المحمولة فتضم دوائر متخصصة مصممة خصيصًا للشبكات العصبية. ووحدات CPU متعددة الاستخدامات ومرنة، لكنها غير متخصصة.

يكمن مفتاح التحسين في مواءمة عمليات YOLO مع ما تجيده كل شريحة. تحب GPU تنفيذ العملية نفسها على كميات كبيرة من البيانات في الوقت نفسه. وقد لا تدعم وحدة NPU المحمولة سوى عمليات معينة، لكنها تنفذها بكفاءة عالية للغاية. أما Edge TPU فلا يعمل إلا مع الأعداد الصحيحة ذات 8 بت، لكنه يحقق سرعة مذهلة ضمن هذا القيد.

سحر الترجمة البرمجية#

عند تصدير نموذج YOLO، يحدث أمر لافت خلف الكواليس. فنحن لا نحوّل تنسيق الملف فحسب، بل نُترجم النموذج برمجيًا خصيصًا للأجهزة المستهدفة لديك. يشبه الأمر الفرق بين Google Translate والمتحدث الأصلي. وتقوم عملية الترجمة البرمجية بما يلي:

  1. تحلل نموذجك لفهم بنيته ومتطلباته
  2. تأخذ إمكانات أجهزتك في الحسبان، أي ما تجيده وما يصعب عليها
  3. تُنشئ تعليمات برمجية محسّنة تتحدث اللغة الأصلية لأجهزتك

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

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

النشر الطرفي في العالم الحقيقي#

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

  • الذاكرة: قد لا تتوفر سوى 512MB إلى 2GB من ذاكرة RAM إجمالًا
  • الطاقة: غالبًا ما لا تتجاوز 2-5 واط (أقل من شاحن هاتف)
  • التبريد: بلا مراوح، وتعتمد على تبديد الحرارة السلبي فحسب
  • الموثوقية: يجب أن تعمل باستمرار دون تعطل

يكمن السر في اختيار المفاضلات المناسبة. ففي الأجهزة الطرفية، غالبًا ما نقوم بما يلي:

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

عملية التحسين#

في Ultralytics، نتبع نهجًا منهجيًا للتحسين. أولًا، نحلل أداء النموذج لفهم المواضع التي يُستهلك فيها الوقت فعليًا. وغالبًا ما تكون العوائق في مواضع غير متوقعة. فقد يُستهلك 80% من الوقت في بضع طبقات فقط، أو قد تهيمن عمليات نقل الذاكرة على وقت الحوسبة.

بعد ذلك، نطبق التحسينات تكراريًا:

  1. ابدأ بأكبر العوائق
  2. طبّق تحسينًا واحدًا في كل مرة
  3. قِس تحسن السرعة وتأثيره في الدقة معًا
  4. احتفظ بالتحسينات التي تحقق مفاضلات جيدة
  5. كرّر العملية حتى نحقق أهدافنا

المستقبل: الحوسبة غير المتجانسة#

أصبحت الأجهزة الحديثة أذكى في استخدام عدة معالجات معًا. فهاتفك لا يحتوي على معالج واحد فحسب، بل على عدة معالجات، لكل منها تخصص مختلف:

  • يحتوي مستشعر الكاميرا على معالج إشارة الصور (ISP) للمعالجة المسبقة
  • تتولى وحدة المعالجة العصبية (NPU) تنفيذ استدلال YOLO
  • تتولى وحدة CPU المنطق المعقد والتنسيق
  • تعرض وحدة GPU النتائج على الشاشة

يركز مستقبل تحسين YOLO على توزيع النموذج بذكاء على هذه المعالجات. فقد تتولى وحدة NPU عمليات الالتفاف الرئيسية، وتتولى وحدة CPU منطق الكشف النهائي، وتتولى وحدة GPU عرض النتائج. يؤدي كل معالج المهمة التي يتفوق فيها، ما ينشئ مسارًا متكاملًا أكثر كفاءة مما يمكن لأي معالج منفرد تحقيقه.

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

الخلاصة#

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

والأمر اللافت؟ لا يوجد تحسين «أفضل» واحد يناسب الجميع. فالخادم السحابي ذو الطاقة غير المحدودة يحتاج إلى تحسينات تختلف عن تلك التي تحتاج إليها طائرة مسيّرة تعمل بالبطارية. والهاتف المزود بشريحة مخصصة للذكاء الاصطناعي يحتاج إلى معالجة تختلف عن Raspberry Pi. ولهذا توفر Ultralytics خيارات تصدير عديدة، إذ إن كل خيار محسّن لسيناريوهات مختلفة.

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

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

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

بقلم

Francesco Mattioli
Francesco Mattioli

مدير الشراكات والمنظومة · Ultralytics

فرانشيسكو ماتيولي مدير الشراكات والنظام البيئي لدى Ultralytics، حيث يقود الشراكات التقنية ويعمل على ضمان تشغيل نماذج YOLO بسلاسة في كل مكان، بدءًا من المستشعرات الصغيرة والأنظمة المضمنة وصولًا إلى المنصات السحابية. وبفضل خلفيته التي تجمع بين علم الأعصاب المعرفي وتعلّم الآلة في الشركات الناشئة والأوساط الأكاديمية، يركّز على نشر أحدث تقنيات الرؤية الحاسوبية في العالم الفعلي وأدائها وقابليتها للتوسع. وقد مثّل Ultralytics في فعاليات كبرى بالقطاع، منها CES 2026 وMobile World Congress 2026 في برشلونة.

التعليقات

اطرح سؤالًا، أو شارك نتائجك، أو ساعد شخصًا آخر.

استكشف الحلول

الرؤية الحاسوبية في الرياضة

الرؤية الحاسوبية في الرياضة

اكتشف كيف يعزّز Ultralytics YOLO الرؤية الحاسوبية الرياضية عبر تتبّع اللاعبين والكرة، وتحليلات الأداء، ورؤى التدريب، وإعادة تأهيل الرياضيين.
معرفة المزيد
الرؤية الحاسوبية للصور الجوية

الرؤية الحاسوبية للصور الجوية

حوّل صور الطائرات المسيّرة والصور الجوية إلى رؤى آنية للزراعة وتربية الأحياء المائية والحفاظ على البيئة والتحليل الجغرافي المكاني باستخدام Ultralytics YOLO.
معرفة المزيد
الرؤية الحاسوبية في قطاع الطيران والفضاء

الرؤية الحاسوبية في قطاع الطيران والفضاء

طبّق الرؤية الحاسوبية في مجال الطيران والفضاء باستخدام Ultralytics YOLO لفحص الطائرات، واكتشاف الأجسام الغريبة على المدارج (FOD)، والعمليات الأرضية في المطارات، واكتشاف عيوب المواد المركّبة.
معرفة المزيد
الرؤية الحاسوبية في مجال الأمن

الرؤية الحاسوبية في مجال الأمن

احمِ كل موقع باستخدام نماذج Ultralytics YOLO. يدعم الذكاء الاصطناعي البصري مراقبة المحيط، واكتشاف التهديدات، والتعرف على لوحات المركبات، والسلامة في مكان العمل.
معرفة المزيد
الرؤية الحاسوبية في الروبوتات

الرؤية الحاسوبية في الروبوتات

عزّز أداء الآلات الذكية باستخدام نماذج Ultralytics YOLO. يدعم الذكاء الاصطناعي البصري في الروبوتات الملاحة الذاتية والإدراك وتعقب الأجسام والتحكم الآني.
معرفة المزيد
الرؤية الحاسوبية في الخدمات اللوجستية

الرؤية الحاسوبية في الخدمات اللوجستية

بسّط العمليات اللوجستية باستخدام نماذج Ultralytics YOLO. يتيح الذكاء الاصطناعي البصري فحص الطرود وفرزها وتتبع المركبات ومراقبة سلامة المستودعات في الوقت الفعلي.
معرفة المزيد
الرؤية الحاسوبية في تجارة التجزئة

الرؤية الحاسوبية في تجارة التجزئة

أعِد تصور تجارة التجزئة باستخدام نماذج Ultralytics YOLO. يتيح الذكاء الاصطناعي البصري تتبع المخزون ومراقبة الرفوف وإدارة الطوابير واستخلاص رؤى أذكى عن العملاء.
معرفة المزيد
الرؤية الحاسوبية في الرعاية الصحية

الرؤية الحاسوبية في الرعاية الصحية

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

الرؤية الحاسوبية في التصنيع

حسّن التصنيع باستخدام نماذج Ultralytics YOLO. يعزز الذكاء الاصطناعي للرؤية مراقبة الجودة واكتشاف العيوب والالتزام بمعدات الوقاية الشخصية وأتمتة خطوط التجميع.
معرفة المزيد
الرؤية الحاسوبية في قطاع السيارات

الرؤية الحاسوبية في قطاع السيارات

طبّق الرؤية الحاسوبية في قطاع السيارات باستخدام نماذج Ultralytics YOLO. يعزز الذكاء الاصطناعي للرؤية سلامة الطرق ومساعدة السائق وأتمتة المركبات لإنشاء طرق أكثر ذكاءً.
معرفة المزيد
الرؤية الحاسوبية في الزراعة

الرؤية الحاسوبية في الزراعة

أدخل الذكاء الاصطناعي البصري إلى الزراعة الذكية باستخدام نماذج Ultralytics YOLO. عزّز مراقبة المحاصيل وتتبع الماشية والزراعة الدقيقة لزيادة الإنتاجية وتحسينها.
معرفة المزيد

لنبنِ مستقبل الذكاء الاصطناعي معًا!

ابدأ رحلتك نحو مستقبل تعلّم الآلة