सामग्री पर जाएं

Neural Magicडीपस्पार्स

सॉफ़्टवेयर-डिलीवर AI में आपका स्वागत है।

यह मार्गदर्शिका बताती है कि कैसे तैनात किया जाए YOLOv5 के साथ Neural Magicडीपस्पार्स है।

DeepSparse CPU पर असाधारण प्रदर्शन के साथ एक अनुमान रनटाइम है। उदाहरण के लिए, ONNX रनटाइम बेसलाइन, डीपस्पार्स एक ही मशीन पर चलने वाले YOLOv5s के लिए 5.8x स्पीड-अप प्रदान करता है!

YOLOv5 गति में सुधार

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

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

डीपस्पार्स जीपीयू-क्लास प्रदर्शन कैसे प्राप्त करता है?

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

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

YOLO मॉडल छंटाई

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

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

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

अदायगी काउन्‍टर Neural Magicके एस YOLOv5 अधिक जानकारी के लिए दस्तावेज़ीकरण

डीपस्पार्स उपयोग

हम डीपस्पार्स के साथ YOLOv5s के विरल संस्करण को बेंचमार्किंग और तैनात करने के एक उदाहरण के माध्यम से चलेंगे।

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

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

pip install "deepsparse[server,yolo,onnxruntime]"

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

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

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

नीचे दिए गए उदाहरण मानक घने और छंटनी-मात्रात्मक YOLOv5s चौकियों का उपयोग करते हैं, जिन्हें निम्नलिखित SparseZoo स्टब्स द्वारा पहचाना जाता है:

zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

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

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

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

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

Python एपीआई

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

एक बनाएँ Pipeline और रन निष्कर्ष:

from deepsparse import Pipeline

# list of images in local filesystem
images = ["basilica.jpg"]

# create Pipeline
model_stub = "zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
    task="yolo",
    model_path=model_stub,
)

# run inference on images, receive bounding boxes + classes
pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001)
print(pipeline_outputs)

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

apt-get install libgl1

HTTP सर्वर

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

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

deepsparse.server \
    --task yolo \
    --model_path zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

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

import requests, json

# list of images for inference (local files on client side)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# send request over HTTP to /predict/from_files endpoint
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)

# response is returned in JSON
annotations = json.loads(resp.text)  # dictionary of annotation results
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

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

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

deepsparse.object_detection.annotate --model_filepath zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpg

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

एनोटेट

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

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

बेंचमार्क AWS पर चलाए गए थे c6i.8xlarge उदाहरण (16 कोर)।

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

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

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

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime

> Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Batch Size: 32
> Scenario: sync
> Throughput (items/sec): 41.9025

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

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

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

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1

> Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Batch Size: 32
> Scenario: sync
> Throughput (items/sec): 69.5546

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

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

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

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1

> Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Batch Size: 32
> Scenario: sync
> Throughput (items/sec): 241.2452

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

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

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

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

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntime

> Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Batch Size: 1
> Scenario: sync
> Throughput (items/sec): 48.0921

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

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

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 1 -nstreams 1

> Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Batch Size: 1
> Scenario: sync
> Throughput (items/sec): 134.9468

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

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

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1

> Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni
> Batch Size: 1
> Scenario: sync
> Throughput (items/sec): 179.7375

DeepSparse के साथ शुरुआत करें

अनुसंधान या परीक्षण? डीपस्पार्स समुदाय अनुसंधान और परीक्षण के लिए स्वतंत्र है। हमारे दस्तावेज़ीकरण के साथ आरंभ करें।



2023-11-12 बनाया गया, अपडेट किया गया 2023-12-03
लेखक: ग्लेन-जोचर (3)

टिप्पणियाँ