Ultralytics YOLOv5'i Neural Magic'in DeepSparse Çözümüyle Dağıtarak CPU'larda GPU Sınıfı Performans Elde Et
GPU sınıfı CPU performansı için Neural Magic'in DeepSparse çözümüyle Ultralytics YOLOv5 modeli eğitimini ve dağıtımını güçlendir. Daha hızlı ve ölçeklenebilir YOLOv5 dağıtımları gerçekleştir.

YOLOv5 modellerinin eğitimini ve dağıtımını hızlandırmak mı istiyorsun? Sana yardımcı olabiliriz! En yeni iş ortağımız Neural Magic ile tanış. Neural Magic, en yüksek model performansını ve basit iş akışlarını öne çıkaran yazılım araçları sunduğundan, YOLOv5 dağıtım sürecini daha da iyileştirecek bir çözüm sunmak üzere bir araya gelmemiz son derece doğal.
DeepSparse, sinir ağlarındaki seyrekliğin ve düşük hassasiyetli aritmetiğin avantajlarından yararlanarak yaygın donanımlarda olağanüstü performans sunan Neural Magic'in CPU çıkarım çalışma zamanıdır. Örneğin DeepSparse, ONNX Runtime temel çizgisine kıyasla aynı makinede çalışan YOLOv5s için 5.8x hız artışı sunar!

İlk kez, derin öğrenme iş yüklerin üretim performansı gereksinimlerini donanım hızlandırıcılarının karmaşıklığı ve maliyeti olmadan karşılayabilir. Basitçe söylemek gerekirse DeepSparse, GPU performansını yazılımın basitliğiyle sunar:
- Esnek dağıtımlar: Herhangi bir donanım sağlayıcısıyla bulut, veri merkezi ve uç ortamlarında tutarlı biçimde çalıştır
- Sınırsız ölçeklenebilirlik: Standart Kubernetes ile yatay, yüzlerce çekirdeğe kadar dikey veya sunucusuz mimariyle tamamen soyutlanmış biçimde ölçeklendir
- Kolay entegrasyon: Modelini bir uygulamaya entegre etmek ve üretimde izlemek için temiz API'ler kullan
Yaygın CPU'larda GPU sınıfı performans elde et#
DeepSparse, performans hız artışını sağlamak için model seyrekliğinden yararlanır.
Budama ve nicemleme yoluyla seyrekleştirme, yüksek doğruluğu korurken bir ağı çalıştırmak için gereken boyutu ve işlem miktarını kat kat azaltabilir. DeepSparse seyrekliğin farkındadır; sıfırla çarpma-toplama işlemlerini atlar ve ileri geçişteki işlem miktarını azaltır. Seyrek hesaplama bellekle sınırlı olduğundan DeepSparse ağı derinlik boyunca çalıştırır ve problemi önbelleğe sığan dikey işlem şeritleri olan Tensör Sütunlarına böler.

Önbellekte derinlik boyunca 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!
Özel Verilerle Eğitilmiş Seyrek Bir Ultralytics YOLOv5 Sürümü Oluştur#
Neural Magic'in açık kaynaklı model deposu SparseZoo, her YOLOv5 modelinin önceden seyrekleştirilmiş kontrol noktalarını içerir. Ultralytics ile entegre olan SparseML'yi kullanarak tek bir CLI komutuyla seyrek bir kontrol noktasını verilerine göre ince ayarlayabilirsin.
Ultralytics YOLOv5'i DeepSparse ile Dağıt#
DeepSparse'ı Yükle#
DeepSparse'ı yüklemek için aşağıdaki komutu çalıştır. Python ile sanal ortam kullanmanı öneririz.
pip install deepsparse[server,yolo,onnxruntime]Bir ONNX Dosyası Al#
DeepSparse, ONNX biçimindeki bir modeli şu yollardan biriyle kabul eder:
- Bir ONNX modeline giden yerel yol
- SparseZoo'daki bir modeli tanımlayan SparseZoo stub'ı
Standart yoğun YOLOv5s modelini, aşağıdaki SparseZoo stub'larıyla tanımlanan budanmış ve kuantize edilmiş YOLOv5s modeliyle 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-noneModel Dağıt#
DeepSparse, modelini bir uygulamaya entegre etmek için kullanışlı API'ler sunar.
Aşağıdaki dağıtım örneklerini denemek için örnek görseli indir ve aşağıdaki komutla basilica.jpg adıyla kaydet:
wget -O basilica.jpg https://raw.githubusercontent.com/neuralmagic/deepsparse/main/src/deepsparse/yolo/sample_images/basilica.jpgPython API'si#
Pipeline'lar, çalışma zamanı etrafında ön işleme ve çıktı son işlemesini bir araya getirerek DeepSparse'ı bir uygulamaya eklemek için sade bir arayüz sunar. DeepSparse-Ultralytics entegrasyonu, ham görselleri kabul edip sınırlayıcı kutuları çı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
# yerel dosya sistemindeki görsellerin listesi
images = ["basilica.jpg"]
# Pipeline oluştur
model_stub = "zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
task="yolo",
model_path=model_stub,
)
# görseller üzerinde çıkarım çalıştır, sınırlayıcı kutuları + sınıfları al
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'da aşağıdaki komutu çalıştırmak bu dosyayı yükler:
apt-get install libgl1-mesa-glxHTTP Sunucusu#
DeepSparse Server, popüler FastAPI web çatısı ve Uvicorn web sunucusu üzerinde çalışır. Tek bir CLI komutuyla DeepSparse kullanarak kolayca bir model hizmeti uç noktası kurabilirsin. Server, Ultralytics YOLOv5 ile nesne algılama dâhil DeepSparse'taki tüm Pipeline'ları destekler; böylece uç noktaya ham görseller gönderebilir ve sınırlayıcı kutuları alabilirsin.
Budanmış ve kuantize edilmiş YOLOv5s ile Server'ı başlat:
deepsparse.server \
--task yolo \
--model_path zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-nonePython'ın requests paketini kullanan örnek bir istek:
import requests, json
# çıkarım için görsellerin listesi (istemci tarafındaki yerel dosyalar)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]
# HTTP üzerinden /predict/from_files uç noktasına istek gönder
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)
# yanıt JSON olarak döndürülür
annotations = json.loads(resp.text) # açıklama sonuçlarını içeren sözlük
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]Annotate CLI#
Motorun açıklama eklenmiş bir fotoğrafı diske kaydetmesini sağlamak için annotate komutunu da kullanabilirsin. Canlı web kamerası görüntüne açıklama eklemek için --source 0 seçeneğini dene!
deepsparse.object_detection.annotate --model_filepath zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpgYukarıdaki komut çalıştırıldığında annotation-results klasörü oluşturulur ve açıklama eklenmiş görsel bu klasöre kaydedilir.

Performansı Karşılaştır#
DeepSparse'ın kıyaslama betiğini kullanarak YOLOv5s üzerinde DeepSparse'ın aktarım hızını ONNX Runtime'ın aktarım hızıyla karşılaştıracağız.
Kıyaslamalar, AWS c6i.8xlarge örneğinde (16 çekirdek) çalıştırıldı.
32'lik Batch Performans Karşılaştırması#
ONNX Runtime Taban Çizgisi#
32'lik batch boyutunda ONNX Runtime, standart yoğun YOLOv5s ile saniyede 42 görsele ulaşır:
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntimeOriginal 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 Model Performansı#
DeepSparse en iyi performansını optimize edilmiş seyrek modellerle sunsa da standart yoğun YOLOv5s ile de iyi performans gösterir.
32'lik batch boyutunda DeepSparse, standart yoğun YOLOv5s ile saniyede 70 görsele ulaşır—ORT'ye kıyasla 1,7 kat performans artışı!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Size: 32 Scenario: sync Throughput (items/sec): 69.5546
DeepSparse Seyrek Model Performansı#
Modele seyreklik uygulandığında DeepSparse'ın ONNX Runtime karşısındaki performans kazanımı daha da artar.
32'lik batch boyutunda DeepSparse, budanmış ve kuantize edilmiş YOLOv5s ile saniyede 241 görsele ulaşır—ORT'ye kıyasla 5,8 kat performans artışı!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Batch Size: 32 Scenario: sync Throughput (items/sec): 241.2452
1'lik Batch Performans Karşılaştırması#
DeepSparse, gecikmeye duyarlı 1'lik batch senaryosunda da ONNX Runtime'a kıyasla hız artışı sağlayabilir.
ONNX Runtime Taban Çizgisi#
1'lik batch boyutunda ONNX Runtime, standart yoğun YOLOv5s ile saniyede 48 görsele ulaşır.
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntimeOriginal Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Size: 1 Scenario: sync Throughput (items/sec): 48.0921
DeepSparse Seyrek Model Performansı#
Modele seyreklik uygulandığında DeepSparse'ın ONNX Runtime karşısındaki performans kazanımı daha da artar.
1'lik batch boyutunda DeepSparse, budanmış ve kuantize edilmiş YOLOv5s ile saniyede 135 görsele ulaşır—ONNX Runtime'a kıyasla 2,8 kat performans artışı!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 1 -nstreams 1Original 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 örneklerinde VNNI talimatları bulunduğundan, ağırlıklar 4'lük bloklar hâlinde budanırsa DeepSparse'ın aktarım hızı daha da artırılabilir.
1'lik batch boyutunda DeepSparse, 4 bloklu budanmış ve kuantize edilmiş YOLOv5s ile saniyede 180 öğeye ulaşır—ONNX Runtime'a kıyasla 3,7 kat performans artışı!
deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni Batch Size: 1 Scenario: sync Throughput (items/sec): 179.7375
İşte bu kadar! Artık YOLOv5 dağıtımını DeepSparse ile optimize etmeye hazırsın.
Ultralytics YOLOv5 ve DeepSparse'ı Kullanmaya Başla#
Bizimle iletişime geçmek için topluluğumuza katıl ve sorularını, yorumlarını paylaş. Ultralytics YOLOv5 deposuna ve YOLOv5 dağıtımına ilişkin Neural Magic belgelerinin tamamına göz at.
Ultralytics olarak YOLOv5 gibi harika açık kaynaklı araçlarımızın araştırma ve geliştirme çalışmalarını finanse etmemize yardımcı olmaları için diğer startup'larla ticari ortaklıklar kuruyoruz; böylece bu araçları herkes için ücretsiz tutabiliyoruz. Bu makale, söz konusu ortaklara ait satış ortaklığı bağlantıları içerebilir.









