Yolo Vision Shenzhen
Shenzhen
Şimdi katılın

CPU'larda GPU Sınıfı Performans için Neural Magic’in DeepSparse'u ile Ultralytics YOLOv5'i Dağıtın

Ultralytics Ekibi

5 dakikalık okuma

5 Ocak 2023

Neural Magic'in DeepSparse'u ile Ultralytics YOLOv5 model eğitimi ve dağıtımını, CPU'larda GPU sınıfı performans için güçlendirin. Daha hızlı, ölçeklenebilir YOLOv5 dağıtımları elde edin.

YOLOv5 modellerinizin eğitimini ve dağıtımını hızlandırmak mı istiyorsunuz? Sizi teminat altına aldık! En yeni ortağımız Neural Magic'i sunuyoruz. Neural Magic, en yüksek model performansını ve iş akışı basitliğini vurgulayan yazılım araçları sağladığı için, YOLOv5 dağıtım sürecini daha da iyileştirmek için bir çözüm sunmak üzere bir araya gelmemiz çok doğal.

DeepSparse, Neural Magic'in CPU çıkarım çalışma zamanıdır ve ticari donanımda olağanüstü performans sunmak için sinir ağları içindeki seyreklik ve düşük hassasiyetli aritmetikten yararlanır. Örneğin, ONNX Runtime temeliyle karşılaştırıldığında, DeepSparse aynı makinede çalışan YOLOv5s için 5,8 kat hızlanma sunar!

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

Derin öğrenme iş yükleriniz, ilk kez 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ç noktalarda tutarlı bir şekilde çalıştırın
  2. Sonsuz Ölçeklenebilirlik: Standart Kubernetes ile yatay olarak, 100'lerce çekirdeğe dikey olarak veya sunucusuz ile tamamen soyutlanmış şekilde ölçeklendirin
  3. Kolay Entegrasyon: Modelinizi bir uygulamaya entegre etmek ve üretimde izlemek için temiz API'ler kullanın

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

DeepSparse, performans hızlandırması elde etmek için model seyreltikliğinden yararlanır.

Budama ve niceleme yoluyla seyreltme, yüksek doğruluğu korurken bir ağı yürütmek için gereken boyut ve hesaplama miktarında önemli ölçüde azalma sağlar. DeepSparse, sıfır ile çarpma-toplamaları atlayarak ve ileri geçişteki hesaplama miktarını azaltarak seyreltme konusunda duyarlıdı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 ayırır.

DeepSparse ve Ultralytics YOLOv5 Ağı

Sıkıştırılmış hesaplamaya sahip seyrek ağlar, önbellekte derinlemesine yürütülerek DeepSparse'ın CPU'larda GPU sınıfı performans sunmasını sağlar!

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

Neural Magic'in açık kaynaklı model deposu SparseZoo, her YOLOv5 modelinin önceden seyreltilmiş kontrol noktalarını içerir. Ultralytics ile entegre edilmiş olan SparseML'yi kullanarak, tek bir CLI komutuyla seyrek bir kontrol noktasını verileriniz üzerinde ince ayar yapabilirsiniz.

DeepSparse ile YOLOv5'i Dağıtın

DeepSparse'ı Kurun

DeepSparse'ı kurmak 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 formatındaki bir modeli aşağıdaki şekillerde kabul eder:

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

Standart yoğun YOLOv5s'yi, aşağıdaki SparseZoo saplamalarıyla tanımlanan budanmış-nicemlenmiş 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-none

Bir Model Dağıtın

DeepSparse, modelinizi bir uygulamaya entegre etmek için uygun API'ler sunar.

Aşağıdaki dağıtım örneklerini denemek için, örnek için bir örnek 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'si

Ardışık düzenler, çalışma zamanı etrafında ön işleme ve çıktı son işlemeyi 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ı çıktı olarak veren kullanıma hazır bir Ardışık Düzen içerir.

Bir Ardışık Düzen oluşturun ve çıkarım çalıştırın:

from deepsparse import Pipeline

# yerel dosya sistemindeki resimlerin 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,
)

# resimler üzerinde çıkarım yap, 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ız, open-cv'nin libGL.so.1'i bulamadığına dair bir hata alabilirsiniz. Ubuntu'da aşağıdakini çalıştırmak onu yükler:

apt-get install libgl1-mesa-glx

HTTP 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 hizmeti uç noktası kurabilirsiniz. Sunucu, YOLOv5 ile nesne algılama dahil olmak üzere DeepSparse'dan 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.

Kırpılmış-nicelenmiş YOLOv5s ile Sunucuyu başlatın:

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

Python'ın requests paketini kullanan bir örnek istek:

import requests, json

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

# /predict/from_files uç noktasına HTTP üzerinden 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ın sözlüğü
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

CLI'yı Açıklama

Motorun disk üzerinde açıklamalı bir fotoğraf kaydetmesi için annotate komutunu da kullanabilirsiniz. Canlı web kamerası akışınızı açıklamak için --source 0'ı 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.

YOLOv5 ile Açıklanmış Bazilika

Benchmark Performansı

DeepSparse'in benchmark betiğini kullanarak, DeepSparse'in verimliliğini YOLOv5s üzerindeki ONNX Runtime'ın verimliliği ile karşılaştıracağız.

Benchmarklar bir AWS c6i.8xlarge örneği (16 çekirdek) üzerinde çalıştırıldı.

32'li Gruplar Halinde Performans Karşılaştırması

ONNX Runtime Temel Çizgisi

32'li gruplar halinde, ONNX Runtime standart yoğun YOLOv5s ile 42 görüntü/sn hıza ulaşıyor:

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
> Batch Boyutu: 32
> Senaryo: sync
> Verimlilik (öğe/sn): 41.9025

DeepSparse Yoğun Performansı

DeepSparse, optimize edilmiş seyrek modellerle en iyi performansı sunarken, standart yoğun YOLOv5s ile de iyi performans gösterir.

32'lik yığın boyutunda, DeepSparse standart yoğun YOLOv5s ile 70 resim/sn hıza ulaşıyor—ORT'ye göre 1,7 kat performans artışı!

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
> Yığın 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üçlenir.

32'lik yığın boyutunda, DeepSparse budanmış-nicemlenmiş YOLOv5s ile 241 resim/sn hıza ulaşıyor—ORT'ye göre 5,8 kat performans artışı!

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
> Yığın Boyutu: 32
> Senaryo: sync
> Verim (öğe/sn): 241.2452

Yığın 1 Performans Karşılaştırması

DeepSparse, gecikmeye duyarlı, 1'lik yığın senaryosu için de ONNX Runtime'a göre hızlanma sağlayabilir.

ONNX Runtime Temel Çizgisi

1. grupta, ONNX Runtime standart, yoğun YOLOv5s ile 48 resim/sn hıza ulaşıyor.

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
> Grup Boyutu: 1
> Senaryo: sync
> Verimlilik (öğe/sn): 48.0921

DeepSparse Seyrek Performansı

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

1. grupta, DeepSparse budanmış-nicemlenmiş YOLOv5s ile 135 resim/sn hıza ulaşıyor—ONNX Runtime'a göre 2,8 kat daha fazla performans!

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
> Grup Boyutu: 1
> Senaryo: sync
> Verimlilik (öğ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.

1. grupta, DeepSparse 4 bloklu budanmış-nicemlenmiş YOLOv5s ile 180 öğe/sn hıza ulaşıyor—ONNX Runtime'a göre 3,7 kat daha fazla performans!

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
> Grup Boyutu: 1
> Senaryo: sync
> Verimlilik (öğe/sn): 179.7375

İşte bu kadar! DeepSparse ile YOLOv5 dağıtımınızı optimize etmeye hazırsınız.

YOLOv5 ve DeepSparse ile Çalışmaya Başlayın

Bizimle iletişime geçmek için topluluğumuza katılın ve sorularınızı ve yorumlarınızı bize iletin. Ultralytics YOLOv5 deposuna ve YOLOv5'i dağıtmaya yönelik tüm Neural Magic belgelerine göz atın.

Ultralytics olarak, YOLOv5 gibi harika açık kaynaklı araçlarımızın araştırma ve geliştirme çalışmalarını finanse etmemize ve bunları herkes için ücretsiz tutmamıza yardımcı olmaları için diğer startup'larla ticari ortaklıklar kuruyoruz. Bu makale, bu ortaklara ait bağlı kuruluş bağlantıları içerebilir.

Gelin, yapay zekanın geleceğini
birlikte inşa edelim!

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

Ücretsiz başlayın
Bağlantı panoya kopyalandı