X
Ultralytics YOLOv8.2 रिलीज़Ultralytics YOLOv8.2 रिलीज़Ultralytics YOLOv8.2 रिलीज़ तीर
ग्रीन चेक
लिंक क्लिपबोर्ड पर कॉपी किया गया

तैनात YOLOv5 के साथ Neural MagicCPU पर GPU-क्लास प्रदर्शन के लिए DeepSparse

अधिकार देना YOLOv5 मॉडल प्रशिक्षण और तैनाती के साथ Neural Magicसीपीयू पर जीपीयू-क्लास प्रदर्शन के लिए डीपस्पार्स। तेजी से, स्केलेबल प्राप्त करें YOLOv5 परिनियोजन।

फेसबुक लोगोट्विटर लोगोलिंक्डइन लोगोकॉपी-लिंक प्रतीक

अपने प्रशिक्षण और तैनाती में तेजी लाना चाहते हैं YOLOv5 मॉडल? हमने आपका ध्यान रखा है! पेश है हमारे सबसे नए साथी, Neural Magic. जैसा Neural Magic सॉफ्टवेयर उपकरण प्रदान करता है जो पीक मॉडल प्रदर्शन और वर्कफ़्लो सादगी पर जोर देते हैं, यह केवल स्वाभाविक है कि हम एक समाधान की पेशकश करने के लिए एक साथ आए हैं YOLOv5 तैनाती की प्रक्रिया और भी बेहतर।

डीपस्पार्स है Neural Magicसीपीयू अनुमान रनटाइम, जो कमोडिटी हार्डवेयर पर असाधारण प्रदर्शन की पेशकश करने के लिए तंत्रिका नेटवर्क के भीतर विरल और कम सटीक अंकगणित का लाभ उठाता है। उदाहरण के लिए, ONNX रनटाइम बेसलाइन, डीपस्पार्स एक ही मशीन पर चलने वाले YOLOv5s के लिए 5.8x स्पीड-अप प्रदान करता है!

YOLOv5 DeepSparse के साथ थ्रूपुट तुलना

पहली बार, आपके गहन सीखने के कार्यभार हार्डवेयर त्वरक की जटिलता और लागत के बिना उत्पादन की प्रदर्शन मांगों को पूरा कर सकते हैं। सीधे शब्दों में कहें, डीपस्पार्स आपको जीपीयू का प्रदर्शन और सॉफ्टवेयर की सादगी देता है:

  1. लचीले परिनियोजन: किसी भी हार्डवेयर प्रदाता के साथ क्लाउड, डेटा सेंटर और किनारे पर लगातार चलाएं
  2. अनंत स्केलेबिलिटी: मानक कुबेरनेट्स के साथ स्केल आउट करें, लंबवत रूप से 100s कोर तक, या सर्वर रहित के साथ पूरी तरह से सारगर्भित
  3. आसान एकीकरण: अपने मॉडल को एक एप्लिकेशन में एकीकृत करने और उत्पादन में इसकी निगरानी के लिए स्वच्छ एपीआई का उपयोग करें

कमोडिटी सीपीयू पर जीपीयू-क्लास प्रदर्शन प्राप्त करें

DeepSparse अपने प्रदर्शन की गति हासिल करने के लिए मॉडल की कमी का लाभ उठाता है।

छंटाई और परिमाणीकरण के माध्यम से प्रसार उच्च सटीकता बनाए रखते हुए एक नेटवर्क को निष्पादित करने के लिए आवश्यक आकार और गणना में क्रम-परिमाण में कमी की अनुमति देता है। डीपस्पार्स विरलता-जागरूक है, गुणा-जोड़े को शून्य से छोड़ देता है और आगे के पास में गणना की मात्रा को कम करता है। चूंकि विरल गणना मेमोरी-बाउंड है, डीपस्पार्स नेटवर्क को गहराई से निष्पादित करता है, समस्या को तोड़ता है Tensor कॉलम, जो गणना की ऊर्ध्वाधर धारियां हैं जो कैश में फिट होती हैं।

DeepSparse और Ultralytics YOLOv5 नेटवर्क

संपीड़ित गणना के साथ विरल नेटवर्क, कैश में गहराई से निष्पादित किया गया, डीपस्पार्स को सीपीयू पर जीपीयू-क्लास प्रदर्शन देने की अनुमति देता है!

का एक विरल संस्करण बनाएँ YOLOv5 कस्टम डेटा पर प्रशिक्षित

Neural Magicओपन-सोर्स मॉडल रिपॉजिटरी, SparseZoo, में प्रत्येक के पूर्व-स्पैर्सफाइड चेकपॉइंट शामिल हैं YOLOv5 को गढ़ना। SparseML का उपयोग करना, जो इसके साथ एकीकृत है Ultralytics, आप एक एकल के साथ अपने डेटा पर एक विरल चेकपॉइंट को ठीक कर सकते हैं CLI आज्ञा।

देखो Neural Magicके एस YOLOv5 अधिक जानकारी के लिए दस्तावेज़ीकरण।

तैनात YOLOv5 डीपस्पार्स के साथ

DeepSparse स्थापित करें

DeepParse को स्थापित करने के लिए निम्न चलाएँ। हम अनुशंसा करते हैं कि आप के साथ एक आभासी वातावरण का उपयोग करें Python.

pip install deepsparse[server,yolo,onnxruntime]

एक लीजिए ONNX रेती

DeepSparse में एक मॉडल स्वीकार करता है ONNX प्रारूप, या तो के रूप में पारित किया गया:

  • एक के लिए एक स्थानीय पथ ONNX को गढ़ना
  • एक SparseZoo स्टब जो SparseZoo में एक मॉडल की पहचान करता है

हम मानक घने YOLOv5s की तुलना छंटनी-मात्रात्मक YOLOv5s से करेंगे, जिन्हें निम्नलिखित SparseZoo स्टब्स द्वारा पहचाना जाएगा:

चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/आधार-कोई नहीं
चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/pruned65_quant-कोई नहीं

एक मॉडल तैनात करें

DeepSparse आपके मॉडल को एक एप्लिकेशन में एकीकृत करने के लिए सुविधाजनक API प्रदान करता है।

नीचे दिए गए परिनियोजन उदाहरणों को आज़माने के लिए, उदाहरण के लिए एक नमूना छवि को नीचे खींचें और इस रूप में सहेजें basilicaनिम्न आदेश के साथ .jpg:

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

Python एपीआई

पाइपलाइन रनटाइम के चारों ओर प्री-प्रोसेसिंग और आउटपुट पोस्ट-प्रोसेसिंग लपेटती हैं, जो किसी एप्लिकेशन में डीपस्पार्स को जोड़ने के लिए एक साफ इंटरफ़ेस प्रदान करती है। द डीपस्पार्स-Ultralytics एकीकरण में एक आउट-ऑफ-द-बॉक्स पाइपलाइन शामिल है जो कच्ची छवियों को स्वीकार करती है और बाउंडिंग बॉक्स को आउटपुट करती है।

एक पाइपलाइन बनाएं और निष्कर्ष चलाएं:

डीपस्पार्स आयात पाइपलाइन से

# स्थानीय फाइल सिस्टम में छवियों की सूची
छवियाँ = ["basilica.jpg"]

# पाइपलाइन बनाएं
model_stub = "चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/pruned65_quant-कोई नहीं"
yolo_pipeline = Pipeline.create(
कार्य ="yolo",
model_path = model_stub,
)

# छवियों पर अनुमान चलाएं, बाउंडिंग बॉक्स + कक्षाएं प्राप्त करें
pipeline_outputs = yolo_pipeline(चित्र = छवियां, iou_thres = 0.6, conf_thres = 0.001)
प्रिंट(pipeline_outputs)

यदि आप क्लाउड में चल रहे हैं, तो आपको एक त्रुटि मिल सकती है कि open-cv libGL.so.1 नहीं ढूंढ सकता है। उबंटू पर निम्नलिखित चलाना इसे स्थापित करता है:

apt-get libgl1-mesa-glx स्थापित करें

HTTP सर्वर

डीपस्पार्स सर्वर लोकप्रिय फास्टएपीआई वेब फ्रेमवर्क और यूविकॉर्न वेब सर्वर के शीर्ष पर चलता है। सिर्फ एक के साथ CLI कमांड, आप आसानी से डीपस्पार्स के साथ एक मॉडल सेवा समापन बिंदु सेट कर सकते हैं। सर्वर डीपस्पार्स से किसी भी पाइपलाइन का समर्थन करता है, जिसमें ऑब्जेक्ट डिटेक्शन भी शामिल है YOLOv5, आपको कच्ची छवियों को समापन बिंदु पर भेजने और बाउंडिंग बॉक्स प्राप्त करने में सक्षम बनाता है।

छंटनी-मात्रात्मक YOLOv5s के साथ सर्वर को स्पिन करें:

deepsparse.server \
--नियत कार्य yolo \
--model_path चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/pruned65_quant-कोई नहीं

एक उदाहरण अनुरोध, का उपयोग कर Pythonअनुरोध पैकेज:

आयात अनुरोध, JSON

# अनुमान के लिए छवियों की सूची (क्लाइंट साइड पर स्थानीय फाइलें)
पथ = ['basilica.jpg']
फ़ाइलें = [('अनुरोध', खुला (आईएमजी, 'आरबी')) पथ में आईएमजी के लिए]

# /predict/from_files समापन बिंदु पर HTTP पर अनुरोध भेजें
यूआरएल = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url = url, फ़ाइलें = फ़ाइलें)

# JSON में प्रतिक्रिया लौटाई जाती है
एनोटेशन = json.loads(resp.text) # एनोटेशन परिणामों का शब्दकोश
bounding_boxes = एनोटेशन["बॉक्स"]
लेबल = एनोटेशन["लेबल"]

टिप्पणी करना CLI

आप इंजन को डिस्क पर एक एनोटेट फोटो सहेजने के लिए एनोटेट कमांड का भी उपयोग कर सकते हैं। कोशिश करें --स्रोत 0 अपने लाइव वेबकैम फ़ीड को एनोटेट करने के लिए!

deepsparse.object_detection.एनोटेट --model_filepath चिड़ियाघर:सीवी/डिटेक्शन/yolov5-दक्षिणी/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpg

उपरोक्त कमांड चलाने से एक एनोटेशन-परिणाम फ़ोल्डर बन जाएगा और एनोटेट की गई छवि को अंदर सहेज लिया जाएगा।

एनोटेट Basilica के साथ YOLOv5

बेंचमार्क प्रदर्शन

डीपस्पार्स की बेंचमार्किंग स्क्रिप्ट का उपयोग करते हुए, हम डीपस्पार्स के थ्रूपुट की तुलना करेंगे ONNX YOLOv5s पर रनटाइम का थ्रूपुट।

बेंचमार्क AWS c6i.8xlarge इंस्टेंस (16 कोर) पर चलाए गए थे।

बैच 32 प्रदर्शन तुलना

ONNX रनटाइम बेसलाइन

बैच 32 पर, ONNX रनटाइम मानक घने YOLOv42s के साथ 5 छवियों/सेकंड को प्राप्त करता है:

DeepSparse.Benchmark चिड़ियाघर:CV/detection/yolov5-दक्षिणी/pytorch/ultralytics/coco/base-none -s सिंक -बी 32 -nstreams 1 -e onnxruntime

> मूल मॉडल पथ: चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/आधार-कोई नहीं
> बैच का आकार: 32
> परिदृश्य: सिंक
> थ्रूपुट (आइटम/सेकंड): 41.9025

डीपस्पार्स डेंस परफॉर्मेंस

जबकि डीपस्पार्स अनुकूलित विरल मॉडल के साथ अपना सर्वश्रेष्ठ प्रदर्शन प्रदान करता है, यह मानक घने YOLOv5s के साथ भी अच्छा प्रदर्शन करता है।

बैच 32 पर, डीपस्पार्स मानक घने YOLOv70s के साथ 5 छवियां/सेकंड प्राप्त करता है - ओआरटी पर 1.7x प्रदर्शन सुधार!

DeepSparse.Benchmark चिड़ियाघर:CV/detection/yolov5-दक्षिणी/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1

> मूल मॉडल पथ: चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/आधार-कोई नहीं
> बैच का आकार: 32
> परिदृश्य: सिंक
> थ्रूपुट (आइटम/सेकंड): 69.5546

डीपस्पार्स विरल प्रदर्शन

जब मॉडल पर विरल प्रभाव लागू होता है, तो डीपस्पार्स का प्रदर्शन समाप्त हो जाता है ONNX रनटाइम और भी मजबूत हैं।

बैच 32 पर, डीपस्पार्स छंटनी-मात्रात्मक YOLOv241s के साथ 5 छवियां/सेकंड प्राप्त करता है - ओआरटी पर 5.8x प्रदर्शन सुधार!

DeepSparse.Benchmark चिड़ियाघर:CV/detection/yolov5-दक्षिणी/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1

> मूल मॉडल पथ: चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/pruned65_quant-कोई नहीं
> बैच का आकार: 32
> परिदृश्य: सिंक
> थ्रूपुट (आइटम/सेकंड): 241.2452

बैच 1 प्रदर्शन तुलना

डीपस्पार्स भी स्पीड-अप ओवर हासिल करने में सक्षम है ONNX विलंबता-संवेदनशील, बैच 1 परिदृश्य के लिए रनटाइम।

ONNX रनटाइम बेसलाइन

बैच 1 पर, ONNX रनटाइम मानक, घने YOLOv48s के साथ 5 छवियों/सेकंड को प्राप्त करता है।

DeepSparse.Benchmark चिड़ियाघर:CV/detection/yolov5-दक्षिणी/pytorch/ultralytics/coco/base-none -s सिंक -बी 1 -nstreams 1 -e onnxruntime

> मूल मॉडल पथ: चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/आधार-कोई नहीं
> बैच का आकार: 1
> परिदृश्य: सिंक
> थ्रूपुट (आइटम/सेकंड): 48.0921

डीपस्पार्स विरल प्रदर्शन

जब मॉडल पर विरल प्रभाव लागू होता है, तो डीपस्पार्स का प्रदर्शन समाप्त हो जाता है ONNX रनटाइम और भी मजबूत हैं।

बैच 1 में, डीपस्पार्स छंटनी-मात्रात्मक YOLOv135s के साथ 5 छवियां/सेकंड प्राप्त करता है-2.8x से अधिक प्रदर्शन में सुधार ONNX रनटाइम!

DeepSparse.Benchmark चिड़ियाघर:CV/detection/yolov5-दक्षिणी/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1

> मूल मॉडल पथ: चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/कोको/pruned65_quant-कोई नहीं
> बैच का आकार: 1
> परिदृश्य: सिंक
> थ्रूपुट (आइटम/सेकंड): 134.9468

चूंकि c6i.8xlarge उदाहरणों में VNNI निर्देश होते हैं, इसलिए डीपस्पार्स के थ्रूपुट को आगे बढ़ाया जा सकता है यदि वजन 4 के ब्लॉक में छंटनी की जाती है।

बैच 1 में, डीपस्पार्स 4-ब्लॉक छंटनी-मात्रात्मक YOLOv5s के साथ 180 आइटम/सेकंड प्राप्त करता है-3.7x परफॉरमेंस गेन ओवर ONNX रनटाइम!

DeepSparse.Benchmark चिड़ियाघर:CV/detection/yolov5-दक्षिणी/pytorch/ultralytics/coco/pruned35_quant-कोई नहीं-वीएनएनआई -एस सिंक -बी 1 -एनस्ट्रीम 1

> मूल मॉडल पथ: चिड़ियाघर: सीवी /yolov5-दक्षिणी/pytorch/ultralytics/coco/pruned35_quant-कोई नहीं-VNNI
> बैच का आकार: 1
> परिदृश्य: सिंक
> थ्रूपुट (आइटम/सेकंड): 179.7375

और वोइला! आप इसके लिए तैयार हैं अपना ऑप्टिमाइज़ करें YOLOv5 डीपस्पार्स के साथ तैनाती।

के साथ आरंभ करें YOLOv5 और डीपस्पार्स

हमसे संपर्क करने के लिए, हमारे समुदाय में शामिल हों और हमें अपने प्रश्न और टिप्पणियां दें। बाहर की जाँच करें Ultralytics YOLOv5 भंडार और पूर्ण Neural Magic परिनियोजन के लिए दस्तावेज़ीकरण YOLOv5.

पर Ultralytics, हम अपने भयानक ओपन-सोर्स टूल के अनुसंधान और विकास को निधि देने में हमारी मदद करने के लिए अन्य स्टार्टअप के साथ व्यावसायिक रूप से साझेदारी करते हैं, जैसे YOLOv5, उन्हें सभी के लिए स्वतंत्र रखने के लिए। इस लेख में उन भागीदारों के लिए संबद्ध लिंक हो सकते हैं।

चलो भविष्य का निर्माण करते हैं
एआई का एक साथ!

मशीन लर्निंग के भविष्य के साथ अपनी यात्रा शुरू करें

इस श्रेणी में और पढ़ें