Ultralytics YOLO27:

YOLO için OpenVINO Çıkarım Optimizasyonu#

OpenVINO Ecosystem

Giriş#

Derin öğrenme modellerini, özellikle Ultralytics YOLO modelleri gibi nesne algılama modellerini dağıtırken optimum performansa ulaşmak kritik önem taşır. Bu kılavuzda, gecikme ve aktarım hızına odaklanarak çıkarımı optimize etmek için Intel'in OpenVINO araç setinden nasıl yararlanabileceğin ele alınıyor. İster tüketici sınıfı uygulamalar ister büyük ölçekli dağıtımlar üzerinde çalışıyor ol, bu optimizasyon stratejilerini anlamak ve uygulamak modellerinin çeşitli cihazlarda verimli çalışmasını sağlar.

Gecikme için optimizasyon#

Gecikme optimizasyonu, tüketici senaryolarında yaygın olan, tek bir girdiden tek bir modelle 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 özellikle eşzamanlı çıkarımlar çalıştırırken veya birden fazla modeli yönetirken düşük gecikmeye ulaşmak dikkatli değerlendirme gerektirir.

Gecikme Optimizasyonu İçin Temel Stratejiler#

  • Cihaz başına tek çıkarım: Düşük gecikmeye ulaşmanın en basit yolu, her cihazda aynı anda yalnızca bir çıkarım yapılmasını sağlamaktır. Ek eşzamanlılık çoğu zaman gecikmenin artmasına yol açar.
  • Alt cihazlardan yararlanma: Çok soketli CPU'lar veya çok döşemeli GPU'lar gibi cihazlar, dahili alt cihazlarını kullanarak gecikmeyi en az düzeyde artırarak birden fazla isteği yürütebilir.
  • OpenVINO performans ipuçları: Model derleme sırasında ov::LATENCY değerinin ov::performance_mode özelliği için kullanılması, performans ayarları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: Model yükleme ve derleme sürelerinin gecikmeyi etkilemesini azaltmak için mümkün olduğunda model önbelleğe almayı kullan. Önbelleğe almanın uygulanabilir olmadığı senaryolarda CPU'lar genellikle en hızlı model yükleme sürelerini sunar.
  • Model eşleme ve okuma karşılaştırması: OpenVINO, yükleme sürelerini azaltmak için model okumayı eşlemeyle değiştirdi. Ancak model çıkarılabilir bir sürücüde veya ağ sürücüsündeyse okumaya geri dönmek için ov::enable_mmap(false) kullanmayı düşün.
  • AUTO cihaz seçimi: Bu mod, çıkarımı CPU üzerinde başlatır ve hazır olduğunda bir hızlandırıcıya geçirerek ilk çıkarım gecikmesini sorunsuz biçimde azaltır.

Aktarım hızı için optimizasyon#

Aktarım hızı optimizasyonu, çok sayıda çıkarım isteğine aynı anda hizmet veren senaryolarda, tek tek isteklerin performansından önemli ölçüde ödün vermeden kaynak kullanımını en üst düzeye çıkarmak için kritik önem taşır.

Verimlilik Optimizasyonu Yaklaşımları#

  1. OpenVINO performans ipuçları: Performans ipuçlarını kullanarak cihazlar arasında aktarım hızını artırmaya yönelik üst düzey ve geleceğe dönük bir yöntem.

    import openvino as ov
    import openvino.properties.hint as hints
    
    core = ov.Core()
    model = core.read_model("yolo26n_openvino_model/yolo26n.xml")
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)
  2. Açık toplu işleme ve akışlar: Gelişmiş performans ayarlarını içeren, açık toplu işleme ve akış kullanımına dayalı daha ayrıntılı bir yaklaşım.

Verimlilik Odaklı Uygulamalar Tasarlama#

Aktarım hızını en üst düzeye çıkarmak için uygulamalar şunları yapmalıdır:

  • Cihazın özelliklerinden tam olarak yararlanarak girdileri paralel işlemek.
  • Veri akışını, paralel yürütme için zamanlanan eşzamanlı çıkarım isteklerine ayırmak.
  • Verimliliği korumak ve cihazın boşta kalmasını önlemek için geri çağırmalarla Async API'yi kullanmak.

Çoklu Cihazda Çalıştırma#

OpenVINO'nun çok cihazlı modu, uygulama düzeyinde cihaz yönetimi gerektirmeden çıkarım isteklerini cihazlar arasında otomatik olarak dengeleyerek aktarım hızının ölçeklendirilmesini kolaylaştırır.

Gerçek dünya performans kazanımları#

Ultralytics YOLO modelleriyle OpenVINO optimizasyonlarını uygulamak, önemli performans iyileştirmeleri sağlayabilir. benchmarks bölümünde gösterildiği gibi, kullanıcılar Intel işlemcilerde 3 kat daha hızlı çıkarım hızları elde edebilir ve entegre GPU'lar, harici GPU'lar ve NPU'lar dahil olmak üzere Intel donanım yelpazesinde çok daha büyük hızlanmalar mümkün olabilir.

Örneğin YOLO26 modelleri Intel Xeon CPU'larda çalıştırıldığında, 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 eşdeğerlerinden sürekli olarak daha iyi performans gösterir.

Pratik Uygulama#

Ultralytics YOLO modelini OpenVINO için dışa aktarmak ve optimize etmek üzere dışa aktarma işlevini kullanabilirsin:

from ultralytics import YOLO

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

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

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

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

# Run inference (Ultralytics auto-selects OpenVINO LATENCY mode for batch=1)
results = ov_model("https://ultralytics.com/images/bus.jpg", verbose=True)

Sonuç#

Ultralytics YOLO modellerini OpenVINO ile gecikme ve aktarım hızı için optimize etmek, uygulamanın performansını önemli ölçüde artırabilir. Bu kılavuzda açıklanan stratejileri dikkatle uygulayarak geliştiriciler, modellerinin verimli çalışmasını ve çeşitli dağıtım senaryolarının gereksinimlerini karşılamasını sağlayabilir. Gecikme veya aktarım hızı için optimizasyon arasında yapılacak seçimin, uygulamanın özel ihtiyaçlarına ve dağıtım ortamının özelliklerine bağlı olduğunu unutma.

Daha ayrıntılı teknik bilgiler ve en güncel güncellemeler için OpenVINO belgelerine ve Ultralytics YOLO deposuna başvur. Bu kaynaklar, derin öğrenme modellerinden en iyi şekilde yararlanmana yardımcı olacak kapsamlı kılavuzlar, öğreticiler ve topluluk desteği sunar.

Modellerinin optimum performansa ulaşmasını sağlamak yalnızca yapılandırmaları ayarlamakla ilgili değildir; uygulamanın ihtiyaçlarını anlamak ve bilinçli kararlar vermek de gerekir. İster gerçek zamanlı yanıtlar için optimizasyon yapıyor ister büyük ölçekli işleme için aktarım hızını en üst düzeye çıkarıyor ol, Ultralytics YOLO modelleri ile OpenVINO'nun birleşimi, geliştiricilerin yüksek performanslı AI çözümleri dağıtması için güçlü bir araç seti sunar.

SSS#

  • Ultralytics YOLO modellerini düşük gecikme için 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 aynı anda bir tane ile sınırla.
    2. Alt cihazlardan yararlanma: Gecikmeyi en az düzeyde artırarak birden fazla isteği işleyebilen çok soketli CPU'lar veya çok döşemeli GPU'lar gibi cihazlardan yararlan.
    3. OpenVINO performans ipuçları: Basitleştirilmiş, cihazdan bağımsız ayarlama için model derleme sırasında OpenVINO'nun ov::LATENCY değerini kullan.

    Gecikmeyi optimize etmeye yönelik daha pratik ipuçları için kılavuzumuzdaki Gecikme Optimizasyonu bölümüne göz at.

  • OpenVINO, performanstan ödün vermeden cihaz kaynaklarının kullanımını en üst düzeye çıkararak Ultralytics YOLO modeli aktarım hızını artırır. Temel avantajlar şunlardır:

    • Performans ipuçları: Cihazlar arasında basit, üst düzey performans ayarı.
    • Açık toplu işleme ve akışlar: Gelişmiş performans için hassas ayar.
    • Çok cihazlı yürütme: Uygulama düzeyindeki yönetimi kolaylaştıran otomatik çıkarım yükü dengeleme.

    Örnek yapılandırma:

    import openvino as ov
    import openvino.properties.hint as hints
    
    core = ov.Core()
    model = core.read_model("yolo26n_openvino_model/yolo26n.xml")
    config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
    compiled_model = core.compile_model(model, "GPU", config)

    Aktarım hızı optimizasyonu hakkında daha fazla bilgiyi ayrıntılı kılavuzumuzdaki Aktarım Hızı Optimizasyonu bölümünde bulabilirsin.

  • İlk çıkarım gecikmesini azaltmak için şu uygulamaları değerlendir:

    1. Model önbelleğe alma: Yükleme ve derleme sürelerini kısaltmak için model önbelleğe almayı kullan.
    2. Model eşleme ve okuma karşılaştırması: Varsayılan olarak eşlemeyi (ov::enable_mmap(true)) kullan; ancak model çıkarılabilir bir sürücüde veya ağ sürücüsündeyse okumaya (ov::enable_mmap(false)) geç.
    3. AUTO cihaz seçimi: CPU çıkarımıyla başlamak ve sorunsuz biçimde bir hızlandırıcıya geçmek için AUTO modundan yararlan.

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

  • Gecikme ve aktarım hızı optimizasyonlarını dengelemek, uygulamanın ihtiyaçlarını anlamayı gerektirir:

    • Gecikme optimizasyonu: Anında yanıt gerektiren gerçek zamanlı uygulamalar için idealdir (ör. tüketici sınıfı uygulamalar).
    • Aktarım hızı optimizasyonu: Çok sayıda eşzamanlı çıkarım içeren ve kaynak kullanımını en üst düzeye çıkaran senaryolar için en uygunudur (ör. büyük ölçekli dağıtımlar).

    OpenVINO'nun üst düzey performans ipuçlarını ve çok cihazlı modlarını kullanmak doğru dengeyi kurmana yardımcı olabilir. Özel gereksinimlerine göre uygun OpenVINO performans ipuçlarını seç.

  • Evet, Ultralytics YOLO modelleri son derece esnektir ve çeşitli AI çerçeveleriyle entegre edilebilir. Seçenekler şunları içerir:

    Ultralytics Entegrasyonları sayfasında daha fazla entegrasyonu keşfet.

Yorumlar