─░├žeri─če ge├ž

Neural Magic'in DeepSparse

Yaz─▒l─▒m destekli yapay zekaya ho┼č geldiniz.

Bu k─▒lavuzda YOLOv5 adresinin Neural Magic's DeepSparse ile nas─▒l da─č─▒t─▒laca─č─▒ a├ž─▒klanmaktad─▒r.

DeepSparse, CPU'larda ola─čan├╝st├╝ performansa sahip bir ├ž─▒kar─▒m ├žal─▒┼čma zaman─▒d─▒r. ├ľrne─čin, ONNX Runtime taban ├žizgisine k─▒yasla DeepSparse, ayn─▒ makinede ├žal─▒┼čan YOLOv5'ler i├žin 5,8 kat h─▒z art─▒┼č─▒ sunuyor!

YOLOv5 h─▒z iyile┼čtirme

─░lk kez, derin ├Â─črenme i┼č y├╝kleriniz, donan─▒m h─▒zland─▒r─▒c─▒lar─▒n─▒n karma┼č─▒kl─▒─č─▒ ve maliyetleri olmadan ├╝retimin performans taleplerini kar┼č─▒layabilir. Basit├že s├Âylemek gerekirse, DeepSparse size GPU'lar─▒n performans─▒n─▒ ve yaz─▒l─▒m─▒n basitli─čini sunar:

  • Esnek Da─č─▒t─▒mlar: Intel'den AMD'ye ve ARM'ye kadar t├╝m donan─▒m sa─člay─▒c─▒lar─▒yla bulut, veri merkezi ve u├žta tutarl─▒ bir ┼čekilde ├žal─▒┼č─▒n
  • Sonsuz ├ľl├žeklenebilirlik: Standart Kubernetes ile dikey olarak 100'lerce ├žekirde─če ├Âl├žeklendirin veya Sunucusuz ile tamamen soyutlay─▒n
  • Kolay Entegrasyon: Modelinizi bir uygulamaya entegre etmek ve ├╝retimde izlemek i├žin temiz API'ler

DeepSparse GPU S─▒n─▒f─▒ Performansa Nas─▒l Ula┼č─▒yor?

DeepSparse, performans h─▒z─▒n─▒ art─▒rmak i├žin model seyrekli─činden yararlan─▒r.

Budama ve niceleme yoluyla seyrekle┼čtirme, y├╝ksek do─črulu─ču korurken bir a─č─▒ y├╝r├╝tmek i├žin gereken boyut ve hesaplamada b├╝y├╝kl├╝k s─▒ras─▒na g├Âre azalmalara izin veren geni┼č ├žapta ├žal─▒┼č─▒lm─▒┼č bir tekniktir. DeepSparse seyrekli─če duyarl─▒d─▒r, yani s─▒f─▒rlanm─▒┼č parametreleri atlayarak ileri ge├ži┼čte hesaplama miktar─▒n─▒ azalt─▒r. Seyrek hesaplama art─▒k belle─če ba─čl─▒ oldu─čundan, DeepSparse a─č─▒ derinlemesine y├╝r├╝t├╝r ve sorunu ├Ânbelle─če s─▒─čan dikey hesaplama ┼čeritleri olan Tensor S├╝tunlar─▒na b├Âler.

YOLO model budama

├ľnbellekte derinlik baz─▒nda y├╝r├╝t├╝len s─▒k─▒┼čt─▒r─▒lm─▒┼č hesaplamaya sahip seyrek a─člar, DeepSparse'─▒n CPU'larda GPU s─▒n─▒f─▒ performans sunmas─▒n─▒ sa─člar!

Verilerim ├ťzerinde E─čitilmi┼č YOLOv5 'un Seyrek Bir S├╝r├╝m├╝n├╝ Nas─▒l Olu┼čturabilirim?

Neural Magic'in a├ž─▒k kaynakl─▒ model deposu SparseZoo, her YOLOv5 modelinin ├Ânceden ayr─▒┼čt─▒r─▒lm─▒┼č kontrol noktalar─▒n─▒ i├žerir. Ultralytics ile entegre olan SparseML'i kullanarak, tek bir CLI komutuyla seyrek bir kontrol noktas─▒n─▒ verilerinize ince ayar yapabilirsiniz.

Daha fazla ayr─▒nt─▒ i├žin Neural Magic'un YOLOv5 belgelerine g├Âz at─▒n.

DeepSparse Kullan─▒m─▒

DeepSparse ile YOLOv5s'in seyrek bir versiyonunu k─▒yaslayan ve da─č─▒tan bir ├Ârnek ├╝zerinden y├╝r├╝yece─čiz.

DeepSparse'─▒ y├╝kleyin

DeepSparse'─▒ y├╝klemek i├žin a┼ča─č─▒dakileri ├žal─▒┼čt─▒r─▒n. Python ile sanal bir ortam kullanman─▒z─▒ ├Âneririz.

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

Bir ONNX Dosyas─▒ Toplay─▒n

DeepSparse, ONNX bi├žiminde bir model kabul eder ve ┼ču ┼čekilde aktar─▒l─▒r:

  • SparseZoo'daki bir ONNX dosyas─▒n─▒ tan─▒mlayan bir SparseZoo saplamas─▒
  • Dosya sistemindeki bir ONNX modeline giden yerel bir yol

A┼ča─č─▒daki ├Ârnekler, a┼ča─č─▒daki SparseZoo taslaklar─▒ ile tan─▒mlanan standart yo─čun ve budanm─▒┼č-kuvantize YOLOv5s kontrol noktalar─▒n─▒ kullanmaktad─▒r:

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

Bir Model Da─č─▒t─▒n

DeepSparse, modelinizi bir uygulamaya entegre etmek i├žin kullan─▒┼čl─▒ API'ler sunar.

A┼ča─č─▒daki da─č─▒t─▒m ├Ârneklerini denemek i├žin ├Ârnek bir g├Âr├╝nt├╝y├╝ a┼ča─č─▒ ├žekin ve ┼ču ┼čekilde kaydedin basilica.jpg a┼ča─č─▒daki ile:

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

Python API

Pipelines ├Ân i┼čleme ve ├ž─▒kt─▒ son i┼člemeyi ├žal─▒┼čma zaman─▒n─▒n etraf─▒na sararak bir uygulamaya DeepSparse eklemek i├žin temiz bir aray├╝z sa─člar. DeepSparse-Ultralytics entegrasyonu, kullan─▒ma haz─▒r bir Pipeline Ham g├Âr├╝nt├╝leri kabul eder ve s─▒n─▒rlay─▒c─▒ kutular─▒ ├ž─▒kt─▒ olarak verir.

Olu┼čturmak Pipeline ve ├ž─▒kar─▒m─▒ ├žal─▒┼čt─▒r─▒n:

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)

Bulutta ├žal─▒┼č─▒yorsan─▒z, open-cv'nin bulamad─▒─č─▒ bir hata alabilirsiniz libGL.so.1. Ubuntu'da a┼ča─č─▒dakileri ├žal─▒┼čt─▒rmak y├╝kler:

apt-get install libgl1

HTTP Sunucusu

DeepSparse Server, pop├╝ler FastAPI web ├žer├ževesi ve Uvicorn web sunucusu ├╝zerinde ├žal─▒┼č─▒r. Sadece tek bir CLI komutuyla DeepSparse ile kolayca bir model hizmet u├ž noktas─▒ kurabilirsiniz. Sunucu, YOLOv5 ile nesne alg─▒lama da dahil olmak ├╝zere DeepSparse'tan herhangi bir Pipeline'─▒ destekler ve u├ž noktaya ham g├Âr├╝nt├╝ler g├Ândermenize ve s─▒n─▒rlay─▒c─▒ kutular─▒ alman─▒za olanak tan─▒r.

Sunucuyu budanm─▒┼č-kuvantize edilmi┼č YOLOv5'lerle ├žal─▒┼čt─▒r─▒n:

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

Python'u kullanan ├Ârnek bir istek requests Paket:

import json

import requests

# 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"]

Ek a├ž─▒klama CLI

Motorun a├ž─▒klamal─▒ bir foto─čraf─▒ diske kaydetmesini sa─člamak i├žin annotate komutunu da kullanabilirsiniz. Canl─▒ web kameras─▒ ak─▒┼č─▒n─▒za a├ž─▒klama eklemek i├žin --source 0 komutunu deneyin!

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

Yukar─▒daki komutu ├žal─▒┼čt─▒rmak bir annotation-results klas├Âr├╝n├╝ a├ž─▒n ve a├ž─▒klamal─▒ g├Âr├╝nt├╝y├╝ i├žine kaydedin.

AÇIKLAMALI

Performans Kar┼č─▒la┼čt─▒rmas─▒

DeepSparse'─▒n k─▒yaslama beti─čini kullanarak DeepSparse'─▒n verimini ONNX Runtime'─▒n YOLOv5s ├╝zerindeki verimiyle kar┼č─▒la┼čt─▒raca─č─▒z.

K─▒yaslamalar bir AWS ├╝zerinde ├žal─▒┼čt─▒r─▒ld─▒ c6i.8xlarge ├Ârne─či (16 ├žekirdek).

Batch 32 Performans Kar┼č─▒la┼čt─▒rmas─▒

ONNX ├çal─▒┼čma Zaman─▒ Temel ├çizgisi

Toplu i┼č 32'de, ONNX ├çal─▒┼čma Zaman─▒ standart yo─čun YOLOv5'lerle 42 g├Âr├╝nt├╝/sn'ye ula┼č─▒r:

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

DeepSparse Yo─čun Performans

DeepSparse en iyi performans─▒n─▒ optimize edilmi┼č seyrek modellerle sunarken, standart yo─čun YOLOv5'lerle de iyi performans g├Âsterir.

Y─▒─č─▒n 32'de DeepSparse, standart yo─čun YOLOv5'lerle 70 g├Âr├╝nt├╝/sn'ye ula┼čarak ORT'ye g├Âre 1,7 kat performans art─▒┼č─▒ sa─čl─▒yor!

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

DeepSparse Seyrek Performans

Modele seyreklik uyguland─▒─č─▒nda, DeepSparse'─▒n ONNX Runtime'a g├Âre performans kazan─▒mlar─▒ daha da g├╝├žl├╝d├╝r.

Y─▒─č─▒n 32'de DeepSparse, budanm─▒┼č-kuvantize edilmi┼č YOLOv5'lerle 241 g├Âr├╝nt├╝/sn elde ederek ORT'ye g├Âre 5,8 kat performans art─▒┼č─▒ sa─čl─▒yor!

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

Parti 1 Performans Kar┼č─▒la┼čt─▒rmas─▒

DeepSparse ayr─▒ca gecikmeye duyarl─▒ toplu i┼č 1 senaryosu i├žin ONNX Runtime'a g├Âre h─▒z kazanabilmektedir.

ONNX ├çal─▒┼čma Zaman─▒ Temel ├çizgisi

Parti 1'de, ONNX ├çal─▒┼čma Zaman─▒ standart, yo─čun YOLOv5'lerle 48 g├Âr├╝nt├╝/sn'ye ula┼č─▒r.

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

DeepSparse Seyrek Performans

Y─▒─č─▒n 1'de DeepSparse, budanm─▒┼č-kuvantize YOLOv5s ile 135 ├Â─če/sn'ye ula┼čarak ONNX Runtime' a g├Âre 2,8 kat performans art─▒┼č─▒ sa─člar!

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

O zamandan beri c6i.8xlarge ├Ârneklerinde VNNI talimatlar─▒ varsa, a─č─▒rl─▒klar 4'l├╝ bloklar halinde budan─▒rsa DeepSparse'─▒n verimi daha da art─▒r─▒labilir.

Toplu i┼č 1'de DeepSparse, 4 bloklu budanm─▒┼č-kuvantize YOLOv5'lerle 180 ├Â─če/sn'ye ula┼čarak ONNX ├çal─▒┼čma Zaman─▒na g├Âre 3,7 kat performans art─▒┼č─▒ sa─člar!

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 ile Ba┼člay─▒n

Ara┼čt─▒rma m─▒ Test mi? DeepSparse Toplulu─ču ara┼čt─▒rma ve test i├žin ├╝cretsizdir. Dok├╝mantasyonumuz ile ba┼člay─▒n.



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (6)

Yorumlar