İç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 kullanırken optimum performans elde etmek çok önemlidir. Bu kılavuz, gecikme ve verim üzerine odaklanarak çıkarımı optimize etmek için Intel'un 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 CPU adresinde çıkarıma başlar ve 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.hint as hints
    
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
    
  2. 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.

SSS

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

Düşük gecikme süresi için Ultralytics YOLO modellerini optimize etmek birkaç temel strateji içerir:

  1. Cihaz Başına Tek Çıkarım: Gecikmeleri en aza indirmek için çıkarımları cihaz başına tek seferle sınırlayın.
  2. Alt Cihazlardan Yararlanma: Minimum gecikme artışıyla birden fazla isteği karşılayabilen çok soketli CPU'lar veya çok katmanlı GPU'lar gibi cihazları kullanın.
  3. OpenVINO Performans İpuçları: OpenVINO'u kullanın ov::hint::PerformanceMode::LATENCY Basitleştirilmiş, cihazdan bağımsız ayarlama için model derleme sırasında.

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

Ultralytics YOLO iş hacmini 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 faydalar şunlardır:

  • Performans İpuçları: Cihazlar arasında basit, üst düzey performans ayarı.
  • Açık Yığınlama ve Akışlar: Gelişmiş performans için ince ayar.
  • Çoklu Cihaz Yürütme: Otomatik çıkarım yükü dengeleme, uygulama düzeyinde yönetimi kolaylaştırır.

Ö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)

Detaylı kılavuzumuzun Verim Optimizasyonu bölümünde verim optimizasyonu hakkında daha fazla bilgi edinin.

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

İlk çıkarım gecikmesini azaltmak için bu 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 (ov::enable_mmap(false)) model çıkarılabilir bir sürücüde veya ağ sürücüsündeyse.
  3. OTOMATİK Cihaz Seçimi: CPU çıkarımı ile başlamak ve sorunsuz bir şekilde hızlandırıcıya geçmek için OTOMATİK modunu kullanın.

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

Gecikme ve verim optimizasyonunu Ultralytics YOLO ve OpenVINO ile nasıl dengeleyebilirim?

Gecikme ve verim optimizasyonunu dengelemek, uygulama ihtiyaçlarınızı anlamayı gerektirir:

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

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

Ultralytics YOLO modellerini OpenVINO dışında başka yapay zeka çerçeveleriyle kullanabilir miyim?

Evet, Ultralytics YOLO modelleri ç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.



Oluşturma 2024-03-17, Güncelleme 2024-07-05
Yazarlar: glenn-jocher (5)

Yorumlar