İçeriğe geç

Ultralytics YOLO Modelleri için OpenVINO Çıkarımını Optimize Etme: Kapsamlı Bir Kılavuz

OpenVINO Ekosistem

Giriş

Derin öğrenme modellerini, özellikle de Ultralytics YOLO modelleri gibi nesne algılamaya yönelik modelleri dağıtırken optimum performans elde etmek çok önemlidir. Bu kılavuz, gecikme ve verim üzerine odaklanarak çıkarımı optimize etmek için Intel'in OpenVINO araç setinden yararlanmayı incelemektedir. İ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 için Optimizasyon

Gecikme optimizasyonu, tüketici senaryolarında tipik olarak görülen, tek bir girdi verildiğinde tek bir modelden anında yanıt alınmasını gerektiren uygulamalar için hayati önem taşır. Amaç, girdi ile çıkarım sonucu arasındaki gecikmeyi en aza indirmektir. Ancak düşük gecikme süresine ulaşmak, özellikle eş zamanlı çıkarımlar yaparken veya birden fazla modeli yönetirken dikkatli bir 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 bir seferde bir çıkarımla sınırlandırmaktır. Ek eşzamanlılık genellikle gecikmenin artmasına neden olur.
  • Alt Cihazlardan Yararlanma: Çok soketli CPU'lar veya çok katmanlı GPU'lar gibi cihazlar, dahili alt aygıtlarını kullanarak birden fazla isteği minimum gecikme artışıyla yürütebilir.
  • OpenVINO Performans İpuçları: OpenVINO'u kullanarak ov::hint::PerformanceMode::LATENCY için ov::hint::performance_mode özelliği, performans ayarını basitleştirerek cihazdan bağımsız ve geleceğe dönük 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 olan yerlerde model önbelleğe almayı kullanın. Önbelleğe almanın uygun olmadığı senaryolar için 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ştirmiştir. Ancak, model çıkarılabilir bir sürücüde veya ağ sürücüsündeyse ov::enable_mmap(false) okumaya geri dönmek için.
  • OTOMATİK Cihaz Seçimi: Bu mod çıkarıma CPU'da başlar, hazır olduğunda hızlandırıcıya geçerek ilk çıkarım gecikmesini sorunsuz bir şekilde azaltır.

Verim için Optimizasyon

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

Verim Optimizasyonuna Yaklaşımlar:

  1. OpenVINO Performans İpuçları: Performans ipuçlarını kullanarak cihazlar arasında verimi artırmak için yüksek seviyeli, geleceğe dönük bir yöntem.
import openvino.properties as props
import openvino.properties.hint as hints

config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
  1. Açık Toplu İş ve Akışlar: Gelişmiş performans ayarı için açık gruplama ve akışların kullanımını içeren daha ayrıntılı bir yaklaşım.

Verim Odaklı Uygulamalar Tasarlama:

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

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

Çok Cihazlı Yürütme:

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

Sonuç

Ultralytics YOLO modellerini OpenVINO ile gecikme ve verim açısından optimize etmek, uygulamanızın performansını önemli ölçüde artırabilir. Geliştiriciler bu kılavuzda özetlenen stratejileri dikkatli bir şekilde uygulayarak modellerinin verimli bir şekilde çalışmasını ve çeşitli dağıtım senaryolarının taleplerini karşılamasını sağlayabilir. Gecikme veya verim için optimizasyon arasındaki seçimin özel uygulama ihtiyaçlarınıza ve dağıtım ortamının özelliklerine bağlı olduğunu unutmayın.

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


Modellerinizin optimum performansa ulaşmasını sağlamak sadece yapılandırmaları değiştirmekle ilgili değildir; uygulamanızın ihtiyaçlarını anlamak ve bilinçli kararlar almakla ilgilidir. İster gerçek zamanlı yanıtlar için optimizasyon yapıyor 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ümlerini dağıtmaları için güçlü bir araç seti sunar.



2024-03-17 tarihinde oluşturuldu, 2024-03-17 tarihinde güncellendi
Yazarlar: glenn-jocher (1)

Yorumlar