الشيك الأخضر
تم نسخ الرابط إلى الحافظة

انشر Ultralytics YOLOv5 باستخدام Neural Magic'DeepSparse 'DeepSparse لأداء GPU- Class على وحدات المعالجة المركزية

تمكين Ultralytics YOLOv5 تدريب النماذج ونشرها باستخدام Neural Magic'DeepSparse من 'DeepSparse لأداء GPU-الفئة على وحدات المعالجة المركزية. تحقيق عمليات نشر YOLOv5 أسرع وقابلة للتطوير .

تريد تسريع التدريب ونشر الخاص بك YOLOv5 نماذج؟ لقد حصلت على تغطيتها! نقدم لكم أحدث شريك لنا ، Neural Magic. مثل Neural Magic يوفر أدوات برمجية تؤكد على ذروة أداء النموذج وبساطة سير العمل ، ومن الطبيعي أن نجتمع معا لتقديم حل لجعل YOLOv5 عملية النشر أفضل.

DeepSparse هو وقت تشغيل الاستدلال CPU الخاص بـ Neural Magic، والذي يستفيد من التباعد والحسابات منخفضة الدقة داخل الشبكات العصبية لتقديم أداء استثنائي على الأجهزة السلعية. على سبيل المثال، بالمقارنة مع خط الأساس لوقت التشغيل ONNX Runtime، يوفر DeepSparse سرعة 5.8 أضعاف لـ YOLOv5s التي تعمل على نفس الجهاز!

YOLOv5 مقارنة الإنتاجية مع DeepSparse

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

  1. عمليات نشر مرنة: يمكنك التشغيل باستمرار عبر السحابة ومركز البيانات والحافة مع أي مزود أجهزة
  2. قابلية تطوير لا نهائية: يمكنك التوسع باستخدام Kubernetes القياسي ، عموديا إلى 100 ثانية من النوى ، أو يتم تجريده بالكامل باستخدام بدون خادم
  3. سهولة التكامل: استخدم واجهات برمجة التطبيقات النظيفة لدمج نموذجك في تطبيق ومراقبته في الإنتاج

تحقيق أداء من الفئة GPU على وحدات المعالجة المركزية السلعية

يستفيد DeepSparse من تناثر النموذج للحصول على تسريع أدائه.

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

ديب متفرق و Ultralytics YOLOv5 شبكة

تسمح الشبكات المتفرقة ذات الحسابات المضغوطة التي يتم تنفيذها بعمق في ذاكرة التخزين المؤقت، لـ DeepSparse بتقديم أداء من فئة GPU على وحدات المعالجة المركزية!

إنشاء نسخة متفرقة من YOLOv5 تدريب على البيانات المخصصة

Neural Magicمستودع النماذج مفتوح المصدر ، SparseZoo ، يحتوي على نقاط تفتيش متفرقة مسبقا لكل منها YOLOv5 نموذج. استخدام SparseML ، الذي يتكامل مع Ultralytics، يمكنك ضبط نقطة تفتيش متفرقة على بياناتك باستخدام نقطة تفتيش واحدة CLI أمر.

سحب Neural Magic's YOLOv5 وثائق لمزيد من التفاصيل.

نشر YOLOv5 مع ديب سباترس

تثبيت ديب سبارس

قم بتشغيل ما يلي لتثبيت DeepSparse. نوصيك باستخدام بيئة افتراضية مع Python.

نقطة تثبيت deepsparse[الخادم,yolo، onnxruntime]

اجمع ONNX ملف

يقبل DeepSparse نموذجا في ONNX ، تم تمريره إما على النحو التالي:

  • مسار محلي إلى ONNX نموذج
  • كعب SparseZoo يحدد نموذجا في SparseZoo

سنقارن YOLOv5s الكثيفة القياسية ب YOLOv5s المشذبة ، والتي تم تحديدها بواسطة بذرة SparseZoo التالية:

حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / قاعدة لا شيء
حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned65_quant-لا شيء

نشر نموذج

يوفر DeepSparse واجهات برمجة تطبيقات ملائمة لدمج نموذجك في أحد التطبيقات.

لتجربة أمثلة النشر أدناه، اسحب صورة عينة للمثال لأسفل واحفظها ك basilica.jpg الأمر التالي:

wget -O basilica.jpg https://raw.githubusercontent.com/neuralmagic/deepsparse/main/src/deepsparse/yolo/sample_images/basilica.jpg

Python API

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

إنشاء خط أنابيب وتشغيل الاستدلال:

من خط أنابيب الاستيراد المتناثر العميق

# قائمة الصور في نظام الملفات المحلي
الصور = ["basilica.jpg"]

# إنشاء خط أنابيب
model_stub = "حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned65_quant-لا شيء"
yolo_pipeline = خط الأنابيب.إنشاء (
المهمة = "yolo",
model_path=model_stub,
)

# تشغيل الاستدلال على الصور ، وتلقي المربعات المحيطة + الفئات
pipeline_outputs = yolo_pipeline (الصور = الصور ، iou_thres = 0.6 ، conf_thres = 0.001)
طباعة(pipeline_outputs)

إذا كنت تعمل في السحابة ، فقد تحصل على خطأ مفاده أن open-cv لا يمكنه العثور على libGL.so.1. يؤدي تشغيل ما يلي على Ubuntu إلى تثبيته:

apt-get install libgl1-mesa-glx

خادم HTTP

يعمل خادم DeepSparse على رأس إطار عمل الويب FastAPI الشهير وخادم الويب Uvicorn. مع واحد فقط CLI ، يمكنك بسهولة إعداد نقطة نهاية خدمة نموذج باستخدام DeepSparse. يدعم الخادم أي خط أنابيب من DeepSparse ، بما في ذلك اكتشاف الكائنات باستخدام YOLOv5، مما يتيح لك إرسال صور أولية إلى نقطة النهاية واستقبال المربعات المحيطة.

قم بتدوير الخادم باستخدام YOLOv5s المشذبة:

خادم deepsparse.server \
--مهمة yolo \
--model_path حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned65_quant-لا شيء

مثال على الطلب، باستخدام Pythonحزمة الطلبات:

طلبات الاستيراد، JSON

# قائمة الصور للاستدلال (الملفات المحلية على جانب العميل)
المسار = ['basilica.jpg']
الملفات = [('طلب' ، فتح (IMG ، 'RB')) ل IMG في المسار]

# إرسال طلب عبر HTTP إلى نقطة النهاية / التنبؤ / from_files
عنوان URL = "http://0.0.0.0:5543/predict/from_files"
resp = requests.post (عنوان url = url ، الملفات = الملفات)

# يتم إرجاع الاستجابة في JSON
التعليقات التوضيحية = json.loads (resp.text) # قاموس نتائج التعليقات التوضيحية
bounding_boxes = التعليقات التوضيحية["مربعات"]
التسميات = التعليقات التوضيحية["التسميات"]

تعليم CLI

يمكنك أيضا استخدام الأمر annotate لجعل المحرك يحفظ صورة مشروحة على القرص. جرب --source 0 لإضافة تعليق توضيحي على موجز كاميرا الويب المباشر!

deepsparse.object_detection.annotate --model_filepath حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / pruned65_quant - لا شيء - المصدر basilica.jpg

سيؤدي تشغيل الأمر أعلاه إلى إنشاء مجلد نتائج التعليقات التوضيحية وحفظ الصورة المشروحة بالداخل.

المشروح Basilica مع YOLOv5

الأداء المعياري

باستخدام البرنامج النصي لقياس الأداء في DeepSparse ، سنقارن إنتاجية DeepSparse ب ONNX معدل نقل وقت التشغيل على YOLOv5s.

تم تشغيل المعايير على مثيل AWS c6i.8xlarge (16 مركزا).

مقارنة أداء الدفعة 32

ONNX خط الأساس لوقت التشغيل

في الدفعة 32 ، ONNX يحقق وقت التشغيل 42 صورة / ثانية باستخدام YOLOv5s القياسية الكثيفة:

deepsparse.benchmark حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / قاعدة لا شيء -S مزامنة -B 32 -nstreams 1 -e onnxruntime

> مسار النموذج الأصلي: حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / قاعدة لا شيء
> حجم الدفعة: 32
> السيناريو: مزامنة
> الإنتاجية (العناصر/ثانية): 41.9025

أداء كثيف متناثر عميق

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

في الدفعة 32 ، يحقق DeepSparse 70 صورة / ثانية مع YOLOv5s الكثيف القياسي - وهو تحسين أداء 1.7x مقارنة ب ORT!

deepsparse.benchmark حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / قاعدة لا شيء -S مزامنة -B 32 -nstreams 1

> مسار النموذج الأصلي: حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / قاعدة لا شيء
> حجم الدفعة: 32
> السيناريو: مزامنة
> الإنتاجية (العناصر/ثانية): 69.5546

أداء متناثر عميق

عندما يتم تطبيق التناثر على النموذج ، فإن أداء DeepSparse يزيد عن ONNX وقت التشغيل أقوى.

في الدفعة 32 ، يحقق DeepSparse 241 صورة / ثانية باستخدام YOLOv5s المشذبة - وهو تحسن في الأداء بمقدار 5.8 مرة مقارنة ب ORT!

deepsparse.benchmark حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned65_quant-لا شيء-ق سينك -ب 32 -nstreams 1

> مسار النموذج الأصلي: حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned65_quant-لا شيء
> حجم الدفعة: 32
> السيناريو: مزامنة
> الإنتاجية (عناصر / ثانية): 241.2452

مقارنة أداء الدفعة 1

DeepSparse قادر أيضا على الحصول على تسريع أكثر من ONNX وقت التشغيل لسيناريو الدفعة 1 الحساس لزمن الوصول.

ONNX خط الأساس لوقت التشغيل

في الدفعة 1 ، ONNX يحقق وقت التشغيل 48 صورة / ثانية باستخدام YOLOv5s القياسية الكثيفة.

deepsparse.benchmark حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / قاعدة لا شيء -S مزامنة -B 1 -nstreams 1 -e onnxruntime

> مسار النموذج الأصلي: حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/ كوكو / قاعدة لا شيء
> حجم الدفعة: 1
> السيناريو: مزامنة
> الإنتاجية (العناصر/ثانية): 48.0921

أداء متناثر عميق

عندما يتم تطبيق التناثر على النموذج ، فإن أداء DeepSparse يزيد عن ONNX وقت التشغيل أقوى.

في الدفعة 1 ، يحقق DeepSparse 135 صورة / ثانية باستخدام YOLOv5s المشذب -تحسن في الأداء بمقدار 2.8 مرة ONNX وقت التشغيل!

deepsparse.benchmark حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned65_quant-لا شيء-ق سينك -ب 32 -nstreams 1

> مسار النموذج الأصلي: حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned65_quant-لا شيء
> حجم الدفعة: 1
> السيناريو: مزامنة
> الإنتاجية (العناصر/ثانية): 134.9468

نظرا لأن مثيلات c6i.8xlarge تحتوي على تعليمات VNNI ، يمكن دفع إنتاجية DeepSparse إلى أبعد من ذلك إذا تم تقليم الأوزان في كتل من 4.

في الدفعة 1 ، يحقق DeepSparse 180 عنصرا / ثانية باستخدام YOLOv5s المشذب المكون من 4 كتل -زيادة في الأداء بمقدار 3.7 أضعاف ONNX وقت التشغيل!

deepsparse.benchmark حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned35_quant-لا شيء-vnni -s sync -b 1 -nstreams 1

> مسار النموذج الأصلي: حديقة: السيرة الذاتية / الكشف /yolov5-ق/pytorch/ultralytics/كوكو/pruned35_quant-نوني-فني
> حجم الدفعة: 1
> السيناريو: مزامنة
> الإنتاجية (العناصر/ثانية): 179.7375

وفويلا! أنت جاهز ل تحسين YOLOv5 النشر باستخدام DeepSparse.

ابدأ مع YOLOv5 وديب سبارس

للتواصل معنا ، انضم إلى مجتمعنا واترك لنا أسئلتك وتعليقاتك. تحقق من Ultralytics YOLOv5 مستودع وكامل Neural Magic وثائق النشر YOLOv5.

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

شعار الفيسبوكشعار تويترشعار لينكد إنرمز نسخ الرابط

اقرأ المزيد في هذه الفئة

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

ابدأ رحلتك مع مستقبل التعلم الآلي