अधिकार देना YOLOv5 मॉडल प्रशिक्षण और तैनाती के साथ Neural Magicसीपीयू पर जीपीयू-क्लास प्रदर्शन के लिए डीपस्पार्स। तेजी से, स्केलेबल प्राप्त करें YOLOv5 परिनियोजन।
अपने प्रशिक्षण और तैनाती में तेजी लाना चाहते हैं YOLOv5 मॉडल? हमने आपका ध्यान रखा है! पेश है हमारे सबसे नए साथी, Neural Magic. जैसा Neural Magic सॉफ्टवेयर उपकरण प्रदान करता है जो पीक मॉडल प्रदर्शन और वर्कफ़्लो सादगी पर जोर देते हैं, यह केवल स्वाभाविक है कि हम एक समाधान की पेशकश करने के लिए एक साथ आए हैं YOLOv5 तैनाती की प्रक्रिया और भी बेहतर।
डीपस्पार्स है Neural Magicसीपीयू अनुमान रनटाइम, जो कमोडिटी हार्डवेयर पर असाधारण प्रदर्शन की पेशकश करने के लिए तंत्रिका नेटवर्क के भीतर विरल और कम सटीक अंकगणित का लाभ उठाता है। उदाहरण के लिए, ONNX रनटाइम बेसलाइन, डीपस्पार्स एक ही मशीन पर चलने वाले YOLOv5s के लिए 5.8x स्पीड-अप प्रदान करता है!
पहली बार, आपके गहन सीखने के कार्यभार हार्डवेयर त्वरक की जटिलता और लागत के बिना उत्पादन की प्रदर्शन मांगों को पूरा कर सकते हैं। सीधे शब्दों में कहें, डीपस्पार्स आपको जीपीयू का प्रदर्शन और सॉफ्टवेयर की सादगी देता है:
DeepSparse अपने प्रदर्शन की गति हासिल करने के लिए मॉडल की कमी का लाभ उठाता है।
छंटाई और परिमाणीकरण के माध्यम से प्रसार उच्च सटीकता बनाए रखते हुए एक नेटवर्क को निष्पादित करने के लिए आवश्यक आकार और गणना में क्रम-परिमाण में कमी की अनुमति देता है। डीपस्पार्स विरलता-जागरूक है, गुणा-जोड़े को शून्य से छोड़ देता है और आगे के पास में गणना की मात्रा को कम करता है। चूंकि विरल गणना मेमोरी-बाउंड है, डीपस्पार्स नेटवर्क को गहराई से निष्पादित करता है, समस्या को तोड़ता है Tensor कॉलम, जो गणना की ऊर्ध्वाधर धारियां हैं जो कैश में फिट होती हैं।
संपीड़ित गणना के साथ विरल नेटवर्क, कैश में गहराई से निष्पादित किया गया, डीपस्पार्स को सीपीयू पर जीपीयू-क्लास प्रदर्शन देने की अनुमति देता है!
Neural Magicओपन-सोर्स मॉडल रिपॉजिटरी, SparseZoo, में प्रत्येक के पूर्व-स्पैर्सफाइड चेकपॉइंट शामिल हैं YOLOv5 को गढ़ना। SparseML का उपयोग करना, जो इसके साथ एकीकृत है Ultralytics, आप एक एकल के साथ अपने डेटा पर एक विरल चेकपॉइंट को ठीक कर सकते हैं CLI आज्ञा।
देखो Neural Magicके एस YOLOv5 अधिक जानकारी के लिए दस्तावेज़ीकरण।
DeepParse को स्थापित करने के लिए निम्न चलाएँ। हम अनुशंसा करते हैं कि आप के साथ एक आभासी वातावरण का उपयोग करें Python.
pip install deepsparse[server,yolo,onnxruntime]
DeepSparse में एक मॉडल स्वीकार करता है ONNX प्रारूप, या तो के रूप में पारित किया गया:
हम मानक घने 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
पाइपलाइन रनटाइम के चारों ओर प्री-प्रोसेसिंग और आउटपुट पोस्ट-प्रोसेसिंग लपेटती हैं, जो किसी एप्लिकेशन में डीपस्पार्स को जोड़ने के लिए एक साफ इंटरफ़ेस प्रदान करती है। द डीपस्पार्स-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 स्थापित करें
डीपस्पार्स सर्वर लोकप्रिय फास्टएपीआई वेब फ्रेमवर्क और यूविकॉर्न वेब सर्वर के शीर्ष पर चलता है। सिर्फ एक के साथ 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 = एनोटेशन["बॉक्स"]
लेबल = एनोटेशन["लेबल"]
आप इंजन को डिस्क पर एक एनोटेट फोटो सहेजने के लिए एनोटेट कमांड का भी उपयोग कर सकते हैं। कोशिश करें --स्रोत 0 अपने लाइव वेबकैम फ़ीड को एनोटेट करने के लिए!
deepsparse.object_detection.एनोटेट --model_filepath चिड़ियाघर:सीवी/डिटेक्शन/yolov5-दक्षिणी/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpg
उपरोक्त कमांड चलाने से एक एनोटेशन-परिणाम फ़ोल्डर बन जाएगा और एनोटेट की गई छवि को अंदर सहेज लिया जाएगा।
डीपस्पार्स की बेंचमार्किंग स्क्रिप्ट का उपयोग करते हुए, हम डीपस्पार्स के थ्रूपुट की तुलना करेंगे ONNX YOLOv5s पर रनटाइम का थ्रूपुट।
बेंचमार्क AWS c6i.8xlarge इंस्टेंस (16 कोर) पर चलाए गए थे।
बैच 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
डीपस्पार्स भी स्पीड-अप ओवर हासिल करने में सक्षम है ONNX विलंबता-संवेदनशील, बैच 1 परिदृश्य के लिए रनटाइम।
बैच 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 डीपस्पार्स के साथ तैनाती।
हमसे संपर्क करने के लिए, हमारे समुदाय में शामिल हों और हमें अपने प्रश्न और टिप्पणियां दें। बाहर की जाँच करें Ultralytics YOLOv5 भंडार और पूर्ण Neural Magic परिनियोजन के लिए दस्तावेज़ीकरण YOLOv5.
पर Ultralytics, हम अपने भयानक ओपन-सोर्स टूल के अनुसंधान और विकास को निधि देने में हमारी मदद करने के लिए अन्य स्टार्टअप के साथ व्यावसायिक रूप से साझेदारी करते हैं, जैसे YOLOv5, उन्हें सभी के लिए स्वतंत्र रखने के लिए। इस लेख में उन भागीदारों के लिए संबद्ध लिंक हो सकते हैं।
मशीन लर्निंग के भविष्य के साथ अपनी यात्रा शुरू करें