YOLO için OpenVINO Çıkarım Optimizasyonu#
Giriş#
Derin öğrenme modellerini, özellikle de Ultralytics YOLO modelleri gibi nesne tespiti modellerini dağıtırken optimal performans elde etmek çok önemlidir. Bu kılavuz, çıkarımı optimize etmek için Intel'in OpenVINO araç setinden yararlanmayı derinlemesine ele alır ve gecikme ile verime odaklanır. İster tüketici sınıfı uygulamalar üzerinde çalışıyor olun ister büyük ölçekli dağıtımlar yapıyor olun, bu optimizasyon stratejilerini anlamak ve uygulamak modellerinizin çeşitli cihazlarda verimli bir şekilde çalışmasını sağlayacaktır.
Gecikme Süresi için Optimizasyon#
Gecikme süresi optimizasyonu, tüketici senaryolarında tipik olduğu üzere, tek bir girdiden tek bir model ile anında yanıt gerektiren uygulamalar için hayati önem taşır. Hedef, 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 Süresi Optimizasyonu için Temel Stratejiler:#
- Cihaz Başına Tek Çıkarım: Düşük gecikme süresine ulaşmanın en basit yolu, cihaz başına aynı anda tek bir çıkarımla sınırlamaktır. Ek eşzamanlılık genellikle gecikme süresinin artmasına yol açar.
- Alt Cihazlardan Yararlanma: Çok soketli CPU'lar veya çok bölmeli (multi-tile) GPU'lar gibi cihazlar, kendi dahili alt cihazlarını kullanarak minimum gecikme artışıyla birden fazla isteği yürütebilir.
- OpenVINO Performans İpuçları: Model derlemesi sırasında
ov::performance_modeözelliği için OpenVINO'nunov::LATENCYözelliğini kullanmak performans ayarını basitleştirir ve cihaza bağlı olmayan, geleceğe dayanıklı 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. Ö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 okuma işleminin yerini eşlemeye bırakmıştır. Ancak model çıkarılabilir bir sürücüde veya ağ sürücüsünde bulunuyorsa, okuma işlemine geri dönmek için
ov::enable_mmap(false)kullanmayı düşünü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çiş yaparak ilk çıkarım gecikmesini sorunsuz bir şekilde azaltır.
İş Hacmi için Optimizasyon#
Verim optimizasyonu, eşzamanlı olarak çok sayıda çıkarım isteğine hizmet eden senaryolar için çok önemlidir; bu, bireysel istek performansından büyük ölçüde ödün vermeden kaynak kullanımını maksimize eder.
İş Hacmi Optimizasyonu Yaklaşımları:#
-
OpenVINO Performans İpuçları: Performans ipuçlarını kullanarak cihazlar genelinde iş hacmini artırmak için üst düzey, 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) -
Açık Gruplandırma (Batching) ve Akışlar: Gelişmiş performans ayarı için açık gruplandırma ve akışların kullanımını içeren daha ayrıntılı bir yaklaşım.
İş Hacmi Odaklı Uygulamalar Tasarlama:#
İş hacmini en üst düzeye çıkarmak için uygulamaların şunları yapması gerekir:
- Girdileri paralel olarak işle ve cihazın yeteneklerinden tam olarak yararlan.
- Veri akışını, paralel yürütme için zamanlanmış eşzamanlı çıkarım isteklerine ayır.
- Verimliliği korumak ve cihazın boşta kalmasını önlemek için geri çağırmalarla (callbacks) birlikte Async API'yi kullan.
Çoklu Cihaz Yürütme:#
OpenVINO'nun çoklu cihaz modu, uygulama düzeyinde cihaz yönetimi gerektirmeden çıkarım isteklerini cihazlar arasında otomatik olarak dengeleyerek iş hacmini ölçeklendirmeyi basitleştirir.
Gerçek Dünya Performans Kazanımları#
OpenVINO optimizasyonlarını Ultralytics YOLO modelleriyle 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; entegre GPU'lar, adanmış GPU'lar ve VPU'lar dahil olmak üzere Intel'in donanım yelpazesinde daha da büyük hızlanmalar mümkündür.
Örneğin, YOLO26 modellerini Intel Xeon CPU'larda çalıştırırken, OpenVINO için optimize edilmiş sürümler doğruluktan ödün vermeden görüntü başına çıkarım süresi açısından PyTorch karşılıklarını sürekli olarak geride bırakır.
Pratik Uygulama#
Ultralytics YOLO modelinizi OpenVINO için dışarı aktarmak ve optimize etmek amacıyla dışa aktarma işlevini kullanabilirsiniz:
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 precisionDışa aktardıktan sonra, optimize edilmiş model ile çıkarımı şu şekilde ç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 süresi ve iş hacmi için optimize etmek, uygulamanın performansını önemli ölçüde artırabilir. Bu kılavuzda özetlenen stratejileri dikkatlice uygulayarak, geliştiriciler modellerinin verimli bir şekilde çalışmasını sağlayabilir ve çeşitli dağıtım senaryolarının taleplerini karşılayabilirler. Unutma, gecikme süresi veya iş hacmi için optimizasyon yapma seçimi, özel uygulama 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 belgelerine ve Ultralytics YOLO depolarına bakın. Bu kaynaklar, derin öğrenme modellerinizden en iyi şekilde yararlanmanıza yardımcı olacak derinlemesine kılavuzlar, eğiticiler ve topluluk desteği sağlar.
Modellerinizin optimum performans elde etmesini sağlamak yalnızca yapılandırmalarda ince ayar yapmakla ilgili değildir; uygulamanızın ihtiyaçlarını anlamak ve bilinçli kararlar almakla ilgilidir. İster gerçek zamanlı yanıtlar için optimize ediyor olun ister büyük ölçekli işleme için verimi maksimize edin, 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 Ultralytics YOLO modellerini düşük gecikme süresi için nasıl optimize ederim?#
Ultralytics YOLO modellerini düşük gecikme süresi için optimize etmek birkaç temel strateji içerir:
- Cihaz Başına Tek Çıkarım: Gecikmeleri en aza indirmek için çıkarımları cihaz başına aynı anda tek bir işlemle sınırla.
- Alt Cihazlardan Yararlanma: Çok soketli CPU'lar veya çok bölmeli GPU'lar gibi, birden fazla isteği minimum gecikme artışıyla işleyebilen cihazlardan yararlan.
- OpenVINO Performans İpuçları: Basitleştirilmiş, cihaza bağlı olmayan ayar için model derlemesi sırasında OpenVINO'nun
ov::LATENCYözelliğini kullanın.
Gecikmeyi optimize etmeye yönelik daha pratik ipuçları için kılavuzumuzun Gecikme 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 iş hacmini artırır. Temel avantajlar şunlardır:
- Performans İpuçları: Cihazlar genelinde basit, üst düzey performans ayarlaması.
- Açık Gruplandırma ve Akışlar: Gelişmiş performans için ince ayar.
- Çoklu Cihaz Yürütme: Uygulama düzeyinde 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 Verim Optimizasyonu bölümünde verim 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ı değerlendir:
- Model Önbelleğe Alma: Yükleme ve derleme sürelerini azaltmak için model önbelleğe almayı kullan.
- Model Eşleme ve Okuma: Varsayılan olarak eşlemeyi (
ov::enable_mmap(true)) kullanın, ancak model çıkarılabilir bir sürücüde veya ağ sürücüsündeyse okuma (ov::enable_mmap(false)) işlemine geçin. - AUTO Cihaz Seçimi: CPU çıkarımıyla başlamak ve sorunsuz bir şekilde hızlandırıcıya geçiş yapmak için AUTO modunu kullan.
İ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 süresi ve iş hacmi optimizasyonunu nasıl dengelerim?#
Gecikme süresi ve iş hacmi optimizasyonunu dengelemek, uygulama ihtiyaçlarını anlamayı gerektirir:
- Gecikme Süresi Optimizasyonu: Anında yanıt gerektiren gerçek zamanlı uygulamalar (örneğin, tüketici sınıfı uygulamalar) için idealdir.
- İş Hacmi Optimizasyonu: Kaynak kullanımını en üst düzeye çıkaran, birçok eşzamanlı çıkarımın olduğu senaryolar (örneğin, büyük ölçekli dağıtımlar) 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. Özel gereksinimlerinize göre uygun OpenVINO performans ipuçlarını seçin.
Ultralytics YOLO modellerini OpenVINO dışında başka AI çerçeveleriyle kullanabilir miyim?#
Evet, Ultralytics YOLO modelleri son derece çok yönlüdür ve çeşitli AI çerçeveleriyle entegre edilebilir. Seçenekler şunlardır:
- TensorRT: NVIDIA GPU optimizasyonu için TensorRT entegrasyon kılavuzunu takip edin.
- CoreML: Apple cihazları için CoreML dışa aktarma talimatlarımıza bakın.
- LiteRT.js: Web ve Node.js uygulamaları için LiteRT entegrasyon kılavuzuna ve LiteRT.js web çalışma zamanına bakın.
Ultralytics Entegrasyonları sayfasında daha fazla entegrasyonu keşfedin.