Ultralytics YOLO27:

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

OpenVINO Ecosystem

مقدمة#

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

التحسين لزمن الاستجابة#

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

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

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

إدارة زمن استجابة الاستدلال الأول#

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

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

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

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

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

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

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

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

  • تعالج المدخلات بالتوازي، مستفيدةً استفادة كاملة من إمكانات الجهاز.
  • تجزئ تدفق البيانات إلى طلبات استدلال متزامنة، تُجدول لتنفيذها بالتوازي.
  • تستخدم Async API مع دوال الاستدعاء للحفاظ على الكفاءة وتجنب ترك الجهاز دون مهام.

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

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

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

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

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

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

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

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 ومستودع Ultralytics YOLO. توفر هذه الموارد أدلة وبرامج تعليمية ودعمًا من المجتمع لمساعدتك على تحقيق أقصى استفادة من نماذج التعلّم العميق.

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

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

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

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

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

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

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

    مثال على الإعداد:

    import openvino as ov
    import openvino.properties.hint as hints
    
    core = ov.Core()
    model = core.read_model("yolo26n_openvino_model/yolo26n.xml")
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)

    تعرّف على المزيد حول تحسين معدل المعالجة في قسم تحسين معدل المعالجة من دليلنا التفصيلي.

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

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

    للاطلاع على استراتيجيات تفصيلية لإدارة زمن الاستدلال الأول، راجع قسم إدارة زمن الاستدلال الأول.

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

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

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

  • نعم، تتميز نماذج Ultralytics YOLO بمرونة عالية ويمكن دمجها مع أطر AI متنوعة. وتشمل الخيارات ما يلي:

    استكشف المزيد من عمليات الدمج في صفحة عمليات دمج Ultralytics.

التعليقات