CPU'larda GPU Sınıfı Performans için Ultralytics YOLOv5'i Neural Magic'in DeepSparse'ı ile Dağıt
CPU'larda GPU sınıfı performans için Neural Magic'in DeepSparse'ı ile Ultralytics YOLOv5 model eğitimini ve dağıtımını güçlendir. Daha hızlı, ölçeklenebilir YOLOv5 dağıtımlarına ulaş.

YOLOv5 modellerinin eğitimini ve dağıtımını hızlandırmak mı istiyorsun? Seni düşündük! En yeni ortağımız Neural Magic ile tanış. Neural Magic, model performansını ve iş akışı basitliğini ön plana çıkaran yazılım araçları sunduğundan, YOLOv5 dağıtım sürecini daha da iyi hale getirecek bir çözüm sunmak için bir araya gelmemiz çok doğal.
DeepSparse, Neural Magic'in CPU çıkarım çalışma zamanıdır ve standart donanımlarda olağanüstü performans sunmak için sinir ağlarındaki seyreklik (sparsity) ve düşük hassasiyetli aritmetikten yararlanır. Örneğin, ONNX Runtime temeline kıyasla DeepSparse, aynı makinede çalışan YOLOv5s için 5.8 kat hız artışı sağlar!

Derin öğrenme iş yüklerin, ilk defa donanım hızlandırıcılarının karmaşıklığı ve maliyeti olmadan üretimin performans taleplerini karşılayabilir. Basitçe ifade etmek gerekirse, DeepSparse sana GPU performansı ve yazılım basitliği sunar:
- Esnek Dağıtımlar: Bulut, veri merkezi ve uç noktalarda herhangi bir donanım sağlayıcısı ile tutarlı bir şekilde çalıştır
- Sonsuz Ölçeklenebilirlik: Standart Kubernetes ile ölçeği genişlet, 100'lerce çekirdeğe dikey olarak çık veya sunucusuz (serverless) yapıyla tamamen soyutla
- Kolay Entegrasyon: Modelini bir uygulamaya entegre etmek ve üretimde izlemek için temiz API'lar kullan
Link to this sectionStandart CPU'larda GPU Sınıfı Performansa Ulaş#
DeepSparse, performans artışı sağlamak için model seyrekliğinden (sparsity) yararlanır.
Budama (pruning) ve nicemleme (quantization) yoluyla seyrekleştirme, yüksek doğruluğu korurken bir ağı çalıştırmak için gereken boyut ve hesaplamada büyüklük derecesinde azalmalara olanak tanır. DeepSparse, seyreklik farkındalığına sahiptir; sıfır olan çarpma-toplama işlemlerini atlar ve ileri geçişteki (forward pass) hesaplama miktarını küçültür. Seyrek hesaplama bellek sınırlı olduğundan, DeepSparse ağı derinlemesine yürütür ve problemi önbelleğe sığan dikey hesaplama şeritleri olan Tensor Columns'a böler.

Sıkıştırılmış hesaplamaya sahip ve önbellekte derinlemesine yürütülen seyrek ağlar, DeepSparse'in CPU'larda GPU sınıfı performans sunmasını sağlar!
Link to this sectionÖzel Veriler Üzerinde Eğitilmiş Seyrek Bir YOLOv5 Sürümü Oluştur#
Neural Magic'in açık kaynaklı model deposu SparseZoo, her bir YOLOv5 modelinin önceden seyrekleştirilmiş kontrol noktalarını içerir. Ultralytics ile entegre olan SparseML'i kullanarak, tek bir CLI komutuyla seyrek bir kontrol noktasını verilerine göre ince ayar (fine-tune) yapabilirsin.
Link to this sectionYOLOv5'i DeepSparse İle Dağıt#
Link to this sectionDeepSparse'i Yükle#
DeepSparse'i yüklemek için aşağıdakini çalıştır. Python ile bir sanal ortam kullanmanı öneririz.
pip install deepsparse[server,yolo,onnxruntime]Link to this sectionBir ONNX Dosyası Edin#
DeepSparse, modeli ONNX formatında kabul eder ve şu şekilde iletilir:
- Bir ONNX modeline giden yerel bir yol
- SparseZoo'daki bir modeli tanımlayan bir SparseZoo kısa yolu (stub)
Standart yoğun (dense) YOLOv5s'i, aşağıdaki SparseZoo kısa yolları ile tanımlanan budanmış-nicemlenmiş (pruned-quantized) YOLOv5s ile karşılaştıracağız:
zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-noneLink to this sectionBir Model Dağıt#
DeepSparse, modelini bir uygulamaya entegre etmek için kullanışlı API'lar sunar.
Aşağıdaki dağıtım örneklerini denemek için, örnek bir görseli şu komutla basilica.jpg olarak kaydet ve indir:
wget -O basilica.jpg https://raw.githubusercontent.com/neuralmagic/deepsparse/main/src/deepsparse/yolo/sample_images/basilica.jpgLink to this sectionPython API#
Pipeline'lar, çalışma zamanının etrafında ön işleme ve çıktı sonrası işlemeyi sarmalar ve DeepSparse'i bir uygulamaya eklemek için temiz bir arayüz sağlar. DeepSparse-Ultralytics entegrasyonu, ham görüntüleri kabul eden ve sınırlayıcı kutuları (bounding boxes) çıktı olarak veren kullanıma hazır bir Pipeline içerir.
Bir Pipeline oluştur ve çıkarımı çalıştır:
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, open-cv'nin libGL.so.1 dosyasını bulamadığına dair bir hata alabilirsin. Ubuntu üzerinde aşağıdakini çalıştırmak bunu kuracaktır:
apt-get install libgl1-mesa-glxLink to this sectionHTTP Sunucusu#
DeepSparse Sunucusu, popüler FastAPI web çatısı ve Uvicorn web sunucusu üzerinde çalışır. Tek bir CLI komutuyla, DeepSparse ile kolayca bir model servis uç noktası kurabilirsin. Sunucu, YOLOv5 ile nesne algılama da dahil olmak üzere DeepSparse'ten herhangi bir Pipeline'ı destekler ve uç noktaya ham görüntüler gönderip sınırlayıcı kutuları almanı sağlar.
Sunucuyu budanmış-nicemlenmiş YOLOv5s ile çalıştır:
deepsparse.server \
--task yolo \
--model_path zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-nonePython'ın requests paketini kullanan bir örnek istek:
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"]Link to this sectionAnnotate CLI#
Motorun diskte açıklamalı (annotated) bir fotoğraf kaydetmesini sağlamak için annotate komutunu da kullanabilirsin. Canlı web kamerası akışını açıklamak için --source 0 kullanmayı dene!
deepsparse.object_detection.annotate --model_filepath zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpgYukarıdaki komutu çalıştırmak bir annotation-results klasörü oluşturacak ve açıklamalı görüntüyü içine kaydedecektir.

Link to this sectionPerformans Karşılaştırması#
DeepSparse'in kıyaslama (benchmarking) betiğini kullanarak, DeepSparse'in YOLOv5s üzerindeki verimliliğini ONNX Runtime'ın verimliliği ile karşılaştıracağız.
Kıyaslamalar bir AWS c6i.8xlarge örneğinde (16 çekirdek) çalıştırıldı.
Link to this sectionBatch 32 Performans Karşılaştırması#
Link to this sectionONNX Runtime Temel Değeri#
Batch 32'de ONNX Runtime, standart yoğun YOLOv5s ile 42 görüntü/sn elde eder:
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntimeOrijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Boyutu: 32 Senaryo: sync Verimlilik (öğe/sn): 41.9025
Link to this sectionDeepSparse Yoğun Performans#
DeepSparse en iyi performansını optimize edilmiş seyrek modellerle sunsa da, standart yoğun YOLOv5s ile de iyi performans gösterir.
Batch 32'de DeepSparse, standart yoğun YOLOv5s ile 70 görüntü/sn elde eder—ORT'ye göre 1.7 kat performans iyileştirmesi!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Boyutu: 32 Senaryo: sync Verimlilik (öğe/sn): 69.5546
Link to this sectionDeepSparse Seyrek Performans#
Modele seyreklik uygulandığında, DeepSparse'in ONNX Runtime'a karşı performans kazançları daha da güçlü hale gelir.
Batch 32'de DeepSparse, budanmış-nicemlenmiş YOLOv5s ile 241 görüntü/sn elde eder—ORT'ye göre 5.8 kat performans iyileştirmesi!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Batch Boyutu: 32 Senaryo: sync Verimlilik (öğe/sn): 241.2452
Link to this sectionBatch 1 Performans Karşılaştırması#
DeepSparse, gecikmeye duyarlı batch 1 senaryosu için de ONNX Runtime'a göre hız artışı sağlayabilir.
Link to this sectionONNX Runtime Temel Değeri#
Batch 1'de ONNX Runtime, standart yoğun YOLOv5s ile 48 görüntü/sn elde eder.
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntimeOrijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Boyutu: 1 Senaryo: sync Verimlilik (öğe/sn): 48.0921
Link to this sectionDeepSparse Seyrek Performans#
Modele seyreklik uygulandığında, DeepSparse'in ONNX Runtime'a karşı performans kazançları daha da güçlü hale gelir.
Batch 1'de DeepSparse, budanmış-nicemlenmiş YOLOv5s ile 135 görüntü/sn elde eder—ONNX Runtime'a göre 2.8 kat performans iyileştirmesi!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 1 -nstreams 1Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Batch Boyutu: 1 Senaryo: sync Verimlilik (öğe/sn): 134.9468
c6i.8xlarge örnekleri VNNI yönergelerine sahip olduğundan, ağırlıklar 4'lü bloklar halinde budanırsa DeepSparse'in verimliliği daha da artırılabilir.
Batch 1'de DeepSparse, 4 bloklu budanmış-nicemlenmiş YOLOv5s ile 180 öğe/sn elde eder—ONNX Runtime'a göre 3.7 kat performans kazancı!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni Batch Boyutu: 1 Senaryo: sync Verimlilik (öğe/sn): 179.7375
Ve işte bu kadar! YOLOv5 dağıtımını DeepSparse ile optimize etmeye hazırsın.
Link to this sectionYOLOv5 ve DeepSparse ile Başla#
Bizimle iletişime geçmek için topluluğumuza katıl ve soru ve yorumlarını bizimle paylaş. Ultralytics YOLOv5 deposuna ve tüm YOLOv5 dağıtımı için Neural Magic belgelerine göz at.
Ultralytics olarak, YOLOv5 gibi harika açık kaynaklı araçlarımızı herkes için ücretsiz tutmak adına araştırma ve geliştirme çalışmalarımızı finanse etmemize yardımcı olmaları için diğer girişimlerle ticari ortaklıklar kuruyoruz. Bu makale, bu ortaklara ait satış ortaklığı bağlantıları içerebilir.






