İçeriğe geç

YOLO için OpenVINO Çıkarım Optimizasyonu

OpenVINO Ekosistemi

Giriş

Derin öğrenme modellerini, özellikle Ultralytics YOLO modelleri gibi nesne algılama için olanları dağıtırken, optimum performansı elde etmek çok önemlidir. Bu kılavuz, gecikme süresi ve verimliliğe odaklanarak çıkarımı optimize etmek için Intel'in OpenVINO araç setinden yararlanmaya derinlemesine inmektedir. İster tüketici sınıfı uygulamalar ister büyük ölçekli dağıtımlar üzerinde çalışıyor olun, bu optimizasyon stratejilerini anlamak ve uygulamak, modellerinizin çeşitli cihazlarda verimli bir şekilde çalışmasını sağlayacaktır.

Gecikme Süresi İçin Optimizasyon

Gecikme optimizasyonu, tek bir girdiye göre tek bir modelden anında yanıt gerektiren uygulamalar için hayati öneme sahiptir ve tüketici senaryolarında tipiktir. Amaç, girdi ve çıkarım sonucu arasındaki gecikmeyi en aza indirmektir. Ancak, düşük gecikme süresi elde etmek, özellikle eşzamanlı çıkarımlar çalıştırırken veya birden çok modeli yönetirken dikkatli değerlendirme gerektirir.

Gecikme Optimizasyonu için Temel Stratejiler:

  • Cihaz Başına Tek Çıkarım: Düşük gecikme süresi elde etmenin en basit yolu, cihaz başına aynı anda bir çıkarımla sınırlamaktır. Ek eşzamanlılık genellikle artan gecikmeye yol açar.
  • Alt Cihazlardan Yararlanma: Çok soketli CPU'lar veya çok parçalı GPU'lar gibi cihazlar, dahili alt cihazlarını kullanarak minimum gecikme artışıyla birden çok isteği yürütebilir.
  • OpenVINO Performans İpuçları: OpenVINO'nun kullanımı ov::hint::PerformanceMode::LATENCY için ov::hint::performance_mode özelliği, model derlemesi sırasında performans ayarlamayı kolaylaştırır ve cihaza özel olmayan ve geleceğe yönelik bir yaklaşım sunar.

İlk Çıkarım Gecikmesini Yönetme:

  • Model Önbelleğe Alma: Gecikmeyi etkileyen model yükleme ve derleme sürelerini azaltmak için, mümkün olduğunda model önbelleğe almayı kullanın. Önbelleğe almanın uygun olmadığı senaryolarda, CPU'lar genellikle en hızlı model yükleme sürelerini sunar.
  • Model Eşleme ve Okuma: Yükleme sürelerini azaltmak için OpenVINO, model okumayı eşleme ile değiştirdi. Ancak, model çıkarılabilir veya ağ sürücüsünde ise şunu kullanmayı düşünün: ov::enable_mmap(false) okumaya geri dönmek için.
  • OTOMATİK Cihaz Seçimi: Bu mod, CPU üzerinde çıkarıma başlar ve hazır olduğunda bir hızlandırıcıya geçerek ilk çıkarım gecikmesini sorunsuz bir şekilde azaltır.

Verim İçin Optimizasyon

Verim optimizasyonu, çok sayıda çıkarım isteğine aynı anda hizmet veren senaryolar için çok önemlidir ve bireysel istek performansından önemli ölçüde ödün vermeden kaynak kullanımını en üst düzeye çıkarır.

Verimlilik Optimizasyonuna Yaklaşımlar:

  1. OpenVINO Performans İpuçları: Performans ipuçlarını kullanarak cihazlar genelinde verimi artırmak için üst düzey, geleceğe yönelik bir yöntem.

    import openvino.properties.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. Açık Toplu İşleme ve Akışlar: Gelişmiş performans ayarlaması için açık toplu işleme ve akışların kullanımını içeren daha ayrıntılı bir yaklaşım.

Verimlilik Odaklı Uygulamalar Tasarlama:

Verimi en üst düzeye çıkarmak için uygulamalar şunları yapmalıdır:

  • Girişleri paralel olarak işleyerek cihazın tüm yeteneklerinden yararlanın.
  • Veri akışını, paralel yürütme için planlanmış eşzamanlı çıkarım isteklerine ayırın.
  • Verimliliği korumak ve cihazın yetersiz kalmasını önlemek için geri aramalarla Async API'sini kullanın.

Çoklu Cihazda Çalıştırma:

OpenVINO'nun çoklu cihaz modu, uygulama düzeyinde cihaz yönetimi gerektirmeden çıkarım isteklerini cihazlar arasında otomatik olarak dengeleyerek ölçeklendirme verimini basitleştirir.

Gerçek Dünya Performans Kazanımları

Ultralytics YOLO modelleriyle OpenVINO optimizasyonlarını uygulamak, önemli performans iyileştirmeleri sağlayabilir. Kıyaslamalarda gösterildiği gibi, kullanıcılar Intel CPU'larda 3 kata kadar daha hızlı çıkarım hızları deneyimleyebilir ve Intel'in entegre GPU'lar, özel GPU'lar ve VPU'lar dahil olmak üzere donanım yelpazesinde daha da büyük hızlanmalar mümkündür.

Örneğin, YOLOv8 modellerini Intel Xeon CPU'larda çalıştırırken, OpenVINO ile optimize edilmiş sürümler, doğruluktan ödün vermeden, görüntü başına çıkarım süresi açısından PyTorch muadillerinden sürekli olarak daha iyi performans gösterir.

Pratik Uygulama

Ultralytics YOLO modelinizi OpenVINO için dışa aktarmak ve optimize etmek için dışa aktarma işlevini kullanabilirsiniz:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")

# Export the model to OpenVINO format
model.export(format="openvino", half=True)  # Export with FP16 precision

Dışa aktardıktan sonra, optimize edilmiş modelle çıkarım çalıştırabilirsiniz:

# Load the OpenVINO model
ov_model = YOLO("yolov8n_openvino_model/")

# Run inference with performance hints for latency
results = ov_model("path/to/image.jpg", verbose=True)

Sonuç

Ultralytics YOLO modellerini OpenVINO ile gecikme ve verim için optimize etmek, uygulamanızın performansını önemli ölçüde artırabilir. Bu kılavuzda özetlenen stratejileri dikkatlice uygulayarak, geliştiriciler modellerinin verimli bir şekilde çalıştığından ve çeşitli dağıtım senaryolarının taleplerini karşıladığından emin olabilirler. Unutmayın, gecikme veya verim için optimizasyon yapma seçimi, uygulamanızın özel ihtiyaçlarına ve dağıtım ortamının özelliklerine bağlıdır.

Daha ayrıntılı teknik bilgi ve en son güncellemeler için OpenVINO dökümanlarına ve Ultralytics YOLO deposuna bakın. Bu kaynaklar, derin öğrenme modellerinizden en iyi şekilde yararlanmanıza yardımcı olacak derinlemesine kılavuzlar, eğitimler ve topluluk desteği sağlar.


Modellerinizin optimum performansa ulaşmasını sağlamak sadece yapılandırmaları ayarlamakla ilgili değildir; uygulamanızın ihtiyaçlarını anlamak ve bilinçli kararlar vermekle ilgilidir. İster gerçek zamanlı yanıtlar için optimizasyon yapıyor olun, ister büyük ölçekli işleme için verimi en üst düzeye çıkarıyor olun, Ultralytics YOLO modelleri ve OpenVINO kombinasyonu, geliştiricilerin yüksek performanslı yapay zeka çözümleri dağıtması için güçlü bir araç seti sunar.

SSS

OpenVINO kullanarak düşük gecikme için Ultralytics YOLO modellerini nasıl optimize ederim?

Ultralytics YOLO modellerini düşük gecikme için optimize etmek çeşitli temel stratejileri içerir:

  1. Cihaz Başına Tek Çıkarım: Gecikmeleri en aza indirmek için cihaz başına çıkarımları aynı anda bir tane ile sınırlayın.
  2. Alt Cihazlardan Yararlanma: Minimum gecikme artışıyla birden çok isteği işleyebilen çok soketli CPU'lar veya çok parçalı GPU'lar gibi cihazları kullanın.
  3. OpenVINO Performans İpuçları: OpenVINO'nun aracını kullanın ov::hint::PerformanceMode::LATENCY basitleştirilmiş, cihazdan bağımsız ayarlama için model derlemesi sırasında.

Gecikmeyi optimize etme konusunda daha pratik ipuçları için, kılavuzumuzun Gecikme Optimizasyonu bölümüne göz atın.

Ultralytics YOLO verimliliğini optimize etmek için neden OpenVINO kullanmalıyım?

OpenVINO, performanstan ödün vermeden cihaz kaynak kullanımını en üst düzeye çıkararak Ultralytics YOLO model verimini artırır. Temel avantajları şunlardır:

  • Performans İpuçları: Cihazlar arasında basit, üst düzey performans ayarlaması.
  • Açık Toplu İşleme ve Akışlar: Gelişmiş performans için ince ayar.
  • Çoklu Cihazda Çalıştırma: Uygulama düzeyindeki yönetimi kolaylaştıran otomatik çıkarım yük dengelemesi.

Örnek yapılandırma:

import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)

Ayrıntılı kılavuzumuzun Verimlilik Optimizasyonu bölümünde verimlilik optimizasyonu hakkında daha fazla bilgi edinin.

OpenVINO'da ilk çıkarım gecikmesini azaltmak için en iyi uygulama nedir?

İlk çıkarım gecikmesini azaltmak için şu uygulamaları göz önünde bulundurun:

  1. Model Önbelleğe Alma: Yükleme ve derleme sürelerini azaltmak için model önbelleğe almayı kullanın.
  2. Model Eşleme ve Okuma: Eşleme kullanın (ov::enable_mmap(true)) varsayılan olarak ancak okumaya geçin (ov::enable_mmap(false)) model çıkarılabilir veya ağ sürücüsündeyse.
  3. OTOMATİK Cihaz Seçimi: CPU çıkarımı ile başlamak ve sorunsuz bir şekilde bir hızlandırıcıya geçiş yapmak için OTOMATİK modunu kullanın.

İlk çıkarım gecikmesini yönetmeye yönelik ayrıntılı stratejiler için İlk Çıkarım Gecikmesini Yönetme bölümüne bakın.

Ultralytics YOLO ve OpenVINO ile gecikme ve verimi optimize etmeyi nasıl dengelerim?

Gecikme ve verimlilik optimizasyonunu dengelemek, uygulama ihtiyaçlarınızı anlamanızı gerektirir:

  • Gecikme Optimizasyonu: Anında yanıt gerektiren gerçek zamanlı uygulamalar için idealdir (örneğin, tüketici sınıfı uygulamalar).
  • Verimlilik Optimizasyonu: Kaynak kullanımını en üst düzeye çıkaran (örneğin, büyük ölçekli dağıtımlar) birçok eşzamanlı çıkarımın olduğu senaryolar için en iyisidir.

OpenVINO'nun üst düzey performans ipuçlarını ve çoklu cihaz modlarını kullanmak, doğru dengeyi kurmanıza yardımcı olabilir. Belirli gereksinimlerinize göre uygun OpenVINO Performans ipuçlarını seçin.

Ultralytics YOLO modellerini OpenVINO dışındaki diğer yapay zeka çerçeveleriyle kullanabilir miyim?

Evet, Ultralytics YOLO modelleri oldukça çok yönlüdür ve çeşitli yapay zeka çerçeveleriyle entegre edilebilir. Seçenekler şunları içerir:

Ultralytics Entegrasyonları sayfasında daha fazla entegrasyon keşfedin.



📅 1 yıl önce oluşturuldu ✏️ 2 ay önce güncellendi

Yorumlar