رؤية YOLO 2026:

تحسين الاستدلال باستخدام OpenVINO لنماذج YOLO#

OpenVINO Ecosystem

مقدمة#

عند نشر نماذج deep learning، ولا سيما تلك الخاصة بـ object detection مثل نماذج Ultralytics YOLO، يُعد تحقيق الأداء الأمثل أمراً بالغ الأهمية. يتعمق هذا الدليل في الاستفادة من Intel's OpenVINO toolkit لتحسين الاستدلال، مع التركيز على زمن الوصول والإنتاجية. وسواء كنت تعمل على تطبيقات استهلاكية أو عمليات نشر واسعة النطاق، فإن فهم وتطبيق استراتيجيات التحسين هذه سيضمن تشغيل نماذجك بكفاءة على مختلف الأجهزة.

التحسين من أجل زمن الوصول#

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

استراتيجيات رئيسية لتحسين زمن الوصول:#

  • استدلال واحد لكل جهاز: الطريقة الأبسط لتحقيق زمن وصول منخفض هي القصر على استدلال واحد في كل مرة لكل جهاز. غالباً ما يؤدي التزامن الإضافي إلى زيادة زمن الوصول.
  • الاستفادة من الأجهزة الفرعية: يمكن للأجهزة مثل وحدات المعالجة المركزية (CPU) متعددة المقابس أو وحدات معالجة الرسومات (GPU) متعددة الأجزاء تنفيذ طلبات متعددة مع حد أدنى من الزيادة في زمن الوصول من خلال استخدام أجهزتها الفرعية الداخلية.
  • تلميحات أداء OpenVINO: يتيح استخدام ov::LATENCY من OpenVINO لخاصية ov::performance_mode أثناء تجميع النموذج تبسيط ضبط الأداء، مما يوفر نهجاً محايداً للجهاز وقابلاً للمستقبل.

إدارة زمن وصول الاستدلال الأول:#

  • تخزين النموذج مؤقتاً: لتقليل تأثير أوقات تحميل وتجميع النموذج على زمن الوصول، استخدم التخزين المؤقت للنموذج حيثما أمكن. بالنسبة للسيناريوهات التي لا يكون فيها التخزين المؤقت قابلاً للتطبيق، توفر وحدات المعالجة المركزية (CPU) عموماً أسرع أوقات تحميل للنموذج.
  • تعيين النموذج مقابل القراءة: لتقليل أوقات التحميل، استبدلت OpenVINO قراءة النموذج بالتعيين. ومع ذلك، إذا كان النموذج على محرك أقراص قابل للإزالة أو محرك شبكة، ففكر في استخدام ov::enable_mmap(false) للعودة إلى القراءة.
  • اختيار الجهاز التلقائي (AUTO): يبدأ هذا الوضع الاستدلال على وحدة المعالجة المركزية (CPU)، وينتقل إلى مسرع بمجرد جاهزيته، مما يقلل زمن وصول الاستدلال الأول بسلاسة.

التحسين من أجل الإنتاجية#

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

نهج تحسين الإنتاجية:#

  1. تلميحات أداء OpenVINO: طريقة عالية المستوى ومستقبلية لتعزيز الإنتاجية عبر الأجهزة باستخدام تلميحات الأداء.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
  2. التجميع الصريح والتدفقات (Streams): نهج أكثر دقة يتضمن التجميع الصريح واستخدام التدفقات لضبط الأداء المتقدم.

تصميم تطبيقات موجهة نحو الإنتاجية:#

لزيادة الإنتاجية إلى أقصى حد، يجب على التطبيقات:

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

التنفيذ متعدد الأجهزة:#

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

مكاسب الأداء في العالم الحقيقي#

يمكن أن يؤدي تطبيق تحسينات OpenVINO مع نماذج Ultralytics YOLO إلى تحسينات كبيرة في الأداء. وكما هو موضح في benchmarks، يمكن للمستخدمين تجربة سرعات استدلال أسرع تصل إلى 3 أضعاف على وحدات المعالجة المركزية (CPUs) من Intel، مع إمكانية تحقيق تسارعات أكبر عبر طيف الأجهزة من Intel بما في ذلك وحدات معالجة الرسومات المدمجة (integrated GPUs) وحدات معالجة الرسومات المخصصة (dedicated GPUs) ووحدات معالجة الرؤية (VPUs).

على سبيل المثال، عند تشغيل نماذج YOLO26 على وحدات المعالجة المركزية Intel Xeon، تتفوق الإصدارات المحسنة بواسطة OpenVINO باستمرار على نظيراتها في PyTorch من حيث وقت الاستدلال لكل صورة، دون المساس بـ accuracy.

التنفيذ العملي#

لتصدير نموذج Ultralytics YOLO وتحسينه لـ OpenVINO، يمكنك استخدام وظيفة export:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Export the model to OpenVINO format
model.export(format="openvino", quantize=16)  # Export with FP16 precision

بعد التصدير، يمكنك تشغيل الاستدلال باستخدام النموذج المحسن:

# Load the OpenVINO model
ov_model = YOLO("yolo26n_openvino_model/")

# Run inference (Ultralytics auto-selects OpenVINO LATENCY mode for batch=1)
results = ov_model("https://ultralytics.com/images/bus.jpg", verbose=True)

الخلاصة#

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

لمزيد من المعلومات التقنية التفصيلية وأحدث التحديثات، راجع OpenVINO documentation و Ultralytics YOLO repository. توفر هذه الموارد أدلة متعمقة، ودروساً تعليمية، ودعماً مجتمعياً لمساعدتك في تحقيق أقصى استفادة من نماذج التعلم العميق الخاصة بك.


ضمان تحقيق نماذجك لأفضل أداء لا يقتصر فقط على تعديل الإعدادات؛ بل يتعلق بفهم احتياجات تطبيقك واتخاذ قرارات مدروسة. وسواء كنت تحسين الأداء لـ real-time responses أو تعظيم الإنتاجية للمعالجة واسعة النطاق، فإن الجمع بين نماذج Ultralytics YOLO و OpenVINO يوفر مجموعة أدوات قوية للمطورين لنشر حلول ذكاء اصطناعي عالية الأداء.

الأسئلة الشائعة#

  • يتضمن تحسين نماذج Ultralytics YOLO لزمن وصول منخفض عدة استراتيجيات رئيسية:

    1. استدلال واحد لكل جهاز: قصر الاستدلالات على واحد في كل مرة لكل جهاز لتقليل التأخير.
    2. الاستفادة من الأجهزة الفرعية: استخدم أجهزة مثل وحدات المعالجة المركزية (CPU) متعددة المقابس أو وحدات معالجة الرسومات (GPU) متعددة الأجزاء التي يمكنها التعامل مع طلبات متعددة مع حد أدنى من الزيادة في زمن الوصول.
    3. تلميحات أداء OpenVINO: استخدم ov::LATENCY من OpenVINO أثناء تجميع النموذج لضبط مبسط ومحايد للأجهزة.

    لمزيد من النصائح العملية حول تحسين زمن الوصول، راجع Latency Optimization section في دليلنا.

  • تعمل OpenVINO على تعزيز إنتاجية نموذج Ultralytics YOLO من خلال زيادة استخدام موارد الجهاز دون التضحية بالأداء. تشمل المزايا الرئيسية ما يلي:

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

    تكوين مثال:

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)

    تعرف على المزيد حول تحسين الإنتاجية في Throughput Optimization section من دليلنا المفصل.

  • لتقليل زمن وصول الاستدلال الأول، ضع في اعتبارك هذه الممارسات:

    1. تخزين النموذج مؤقتاً: استخدم التخزين المؤقت للنموذج لتقليل أوقات التحميل والتجميع.
    2. تعيين النموذج مقابل القراءة: استخدم التعيين (ov::enable_mmap(true)) بشكل افتراضي ولكن انتقل إلى القراءة (ov::enable_mmap(false)) إذا كان النموذج على محرك أقراص قابل للإزالة أو محرك شبكة.
    3. اختيار الجهاز التلقائي (AUTO): استخدم وضع AUTO للبدء باستدلال وحدة المعالجة المركزية (CPU) والانتقال إلى مسرع بسلاسة.

    للحصول على استراتيجيات مفصلة حول إدارة زمن وصول الاستدلال الأول، راجع Managing First-Inference Latency section.

  • تتطلب الموازنة بين تحسين زمن الوصول والإنتاجية فهم احتياجات تطبيقك:

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

    يمكن أن يساعد استخدام تلميحات الأداء عالية المستوى وأوضاع الأجهزة المتعددة في OpenVINO في تحقيق التوازن الصحيح. اختر OpenVINO performance hints المناسبة بناءً على متطلباتك المحددة.

  • نعم، نماذج Ultralytics YOLO متعددة الاستخدامات للغاية ويمكن دمجها مع أطر ذكاء اصطناعي مختلفة. تشمل الخيارات ما يلي:

    استكشف المزيد من عمليات التكامل على Ultralytics Integrations page.

التعليقات