Yeşil çek
Panoya kopyalanan bağlantı

Deploy Ultralytics YOLOv5 With Neural Magic’s DeepSparse for GPU-Class Performance on CPUs

Empower Ultralytics YOLOv5 model training & deployment with Neural Magic's DeepSparse for GPU-class performance on CPUs. Achieve faster, scalable YOLOv5 deployments.

Şirketinizin eğitimini ve dağıtımını hızlandırmak ister misiniz? YOLOv5 modelleri? Sizi teminat altına aldık! Karşınızda en yeni ortağımız, Neural Magic. Neural Magic en yüksek model performansını ve iş akışı basitliğini vurgulayan yazılım araçları sağladığından, YOLOv5 dağıtım sürecini daha da iyi hale getirecek bir çözüm sunmak için bir araya gelmemiz çok doğal.

DeepSparse, emtia donanımında olağanüstü performans sunmak için sinir ağlarındaki seyreklik ve düşük hassasiyetli aritmetikten yararlanan Neural Magic'un CPU çı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ışı sunmaktadır!

YOLOv5 DeepSparse ile Verim Karşılaştırması

İ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:

  1. Esnek Dağıtımlar: Herhangi bir donanım sağlayıcısıyla bulut, veri merkezi ve uçta tutarlı bir şekilde çalıştırın
  2. Sonsuz Ölçeklenebilirlik: Standart Kubernetes ile, dikey olarak 100'lerce çekirdeğe ölçeklendirin veya sunucusuz ile tamamen soyutlayın
  3. Kolay Entegrasyon: Modelinizi bir uygulamaya entegre etmek ve üretimde izlemek için temiz API'ler kullanın

Commodity CPU'larda GPU Sınıfı Performans Elde Edin

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 azalma sağlar. DeepSparse seyrekliğin farkındadır, sıfırla çarpma eklemelerini atlar ve bir ileri geçişte hesaplama miktarını küçültür. Seyrek hesaplama 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.

DeepSparse ve Ultralytics YOLOv5  Ağı

Önbellekte derinlemesine yürütülen sıkıştırılmış hesaplamaya sahip seyrek ağlar, DeepSparse'ın CPU'larda GPU sınıfı performans sunmasına olanak tanır!

Özel Veriler Üzerinde Eğitilmiş YOLOv5 'un Seyrek Bir Sürümünü Oluşturun

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 Dokümantasyonuna göz atın.

DeepSparse ile YOLOv5 adresini dağıtın

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:

  • ONNX modeline giden yerel bir yol
  • SparseZoo'daki bir modeli tanımlayan bir SparseZoo saplaması

Standart yoğun YOLOv5'leri aşağıdaki SparseZoo taslaklarıyla tanımlanan budanmış-kuvantize YOLOv5'lerle 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-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 için örnek bir görüntü çekin ve aşağıdaki komutla basilica.jpg olarak kaydedin:

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

Python API

Boru hatları ön işleme ve çıktı son işlemeyi çalışma zamanının etrafına sararak DeepSparse'ı 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ı çıkaran kullanıma hazır bir Boru Hattı içerir.

Bir Boru Hattı oluşturun ve çıkarımı çalıştırın:

from deepsparse import Pipeline

# yerel dosya sistemindeki resimlerin listesi
images = ["basilica.jpg"]

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

# görüntüler üzerinde çıkarım çalıştırın, sınırlayıcı kutuları + sınıfları alın
pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001)
print(pipeline_outputs)

Eğer bulutta çalışıyorsanız, open-cv'nin libGL.so.1'i bulamadığına dair bir hata alabilirsiniz. Ubuntu'da aşağıdakileri çalıştırmak onu yükler:

apt-get install libgl1-mesa-glx

HTTP Sunucusu

DeepSparse Server, popüler FastAPI web çerçevesi ve Uvicorn web sunucusunun ü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'un requests paketini kullanan örnek bir istek:

istekleri içe aktar, json

# çıkarım için resimlerin listesi (istemci tarafında yerel dosyalar)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# HTTP üzerinden /predict/from_files uç noktasına istek gönderme
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ı sözlüğü
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ü oluşturacak ve açıklamalı görüntüyü içine kaydedecektir.

Açıklamalı Basilica ile YOLOv5

Karşılaştırmalı Performans

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 c6i.8xlarge örneği (16 çekirdek) üzerinde çalıştırılmıştır.

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

> Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Toplu İş Boyutu: 32
> Senaryo: sync
> Verim (öğe/sn): 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şır; bu daORT'ye göre 1,7 kat performans artışı demektir!

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

> Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Toplu İş Boyutu: 32
> Senaryo: sync
> Verim (öğe/sn): 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'ye ulaşır; bu daORT'ye göre 5,8 kat performans artışı demektir!

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

> Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Toplu İş Boyutu: 32
> Senaryo: sync
> Verim (öğe/sn): 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

> Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
> Toplu İş Boyutu: 1
> Senaryo: sync
> Verim (öğe/sn): 48.0921

DeepSparse Seyrek Performans

Modele seyreklik uygulandığında, DeepSparse'ın ONNX Runtime'a göre performans kazanımları daha da güçlüdür.

Grup 1'de DeepSparse, budanmış-kuvantize edilmiş YOLOv5'lerle 135 görüntü/sn'ye ulaşır; bu da ONNX Runtime'a göre 2,8 kat performans artışı demektir!

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

> Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none
> Toplu İş Boyutu: 1
> Senaryo: sync
> Verim (öğe/sn): 134.9468

c6i.8xlarge örnekleri VNNI talimatlarına sahip olduğundan, ağırlıklar 4'lü bloklar halinde budanırsa DeepSparse'ın verimi daha da artırılabilir.

Grup 1'de DeepSparse, 4 bloklu budanmış-kuvantize edilmiş YOLOv5'lerle 180 öğe/sn'ye ulaşır; bu da ONNX Çalışma Zamanınagöre 3,7 kat performans artışı demektir!

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

> Orijinal Model Yolu: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni
> Toplu İş Boyutu: 1
> Senaryo: sync
> Verim (öğe/sn): 179.7375

Ve işte! DeepSparse ile YOLOv5 dağıtımınızı optimize etmeye hazırsınız.

YOLOv5 ve DeepSparse ile Başlayın

Bizimle iletişime geçmek için topluluğumuza katılın ve sorularınızı ve yorumlarınızı bize bırakın. YOLOv5 dağıtımı için Ultralytics YOLOv5 deposuna ve tam Neural Magic belgelerine göz atın.

Ultralytics adresinde, YOLOv5 gibi harika açık kaynak araçlarımızın araştırma ve geliştirmesini finanse etmemize yardımcı olmak ve bunları herkes için ücretsiz tutmak için diğer girişimlerle ticari olarak ortaklık yapıyoruz. Bu makale, bu ortaklara bağlı bağlantılar içerebilir.

Facebook logosuTwitter logosuLinkedIn logosuKopya-bağlantı sembolü

Bu kategoride daha fazlasını okuyun

Yapay zekanın gelecekteki
adresini birlikte inşa edelim!

Makine öğreniminin geleceği ile yolculuğunuza başlayın