Ultralytics YOLO27: Bekleme listesine katıl.
Get Started
Üretimde Ultralytics YOLO·Çalışma Zamanı Seç·Ders 1/9
Dersorta düzey

Dağıtım Hedefi Seç

Cihazı, gecikme bütçesini ve filoyu tek bir çalışma zamanı ve dışa aktarma biçimi seçmek için değerlendir; ardından bunu cihazda doğrula.

Gün batımında şehir otoyolunun üzerinde bulunan trafik kamerası görüntüsü; Ultralytics YOLO otomobilleri, bir minibüsü ve kamyonları izliyor, her biri sınıf ve kimlik etiketi taşıyor

Aynı YOLO26n, YOLO26 kıyaslamalarında ONNX Runtime ile CPU'da görüntü başına 38,9 ms, TensorRT ile T4 GPU'da 1,7 ms sürüyor. Yanlış çalışma zamanını seçersen ya ihtiyacından çok daha fazla donanım için ödeme yaparsın ya da yetişemeyen kameraları kullanıma alırsın. Bu ders, seçimi cihazın kendisinde ölçülen sayılarla savunabileceğin, on dakikada verilecek bir karara dönüştürüyor.

Sonuç

Bir cihaz için çalışma zamanını ve format= değerini seç, FPS hedefini milisaniye bütçesine dönüştür ve tekrarlanan kıyaslamalarla seçimini doğrula.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. NVIDIA GPU veya Jetson → TensorRT (engine), hedef cihazda oluşturulur. Intel CPU, iGPU veya NPU → OpenVINO (openvino).

  2. Apple → CoreML (coreml). Android → LiteRT (litert). Snapdragon NPU → QNN (qnn). Raspberry Pi → NCNN (ncnn).

  3. Diğer tüm durumlar → ONNX Runtime (onnx). Sunucu istemiyorsan yönetilen bir Ultralytics Platform uç noktası kullan.

  4. Bütçe = 1000 ÷ FPS; çözme ve son işlem sürelerini çıkar. Adayları cihazda ölç ve ortalamaya değil p95 değerine göre karar ver.

Uygulamalı

Cihazdan Başla#

Çalışma zamanı alışkanlığa değil, çıkarımın nerede çalıştığına göre belirlenir. Ağacı en baştan izle ve ilk eşleşmede dur:

Her çalışma zamanı, Dışa aktarma modu içinde bir format= değerine karşılık gelir:

HedefÇalışma zamanıformat=Dikkat et
NVIDIA GPU, JetsonTensorRTengineMotor yalnızca onu oluşturan GPU ailesinde ve TensorRT sürümünde çalışır
Intel CPU, iGPU, NPUOpenVINOopenvinoIntel için ayarlanmıştır; başka bir yerde kullanmadan önce ölçüm yap
Herhangi bir CPU veya GPUONNX RuntimeonnxYürütme sağlayıcısını açıkça seç
iPhone, iPad, MacCoreMLcoremlDışa aktarma Windows'ta değil, macOS veya Linux'ta çalışır
Android, gömülü sistemLiteRTlitertINT8, kalibrasyon için data gerektirir
Snapdragon NPUQualcomm QNNqnnYalnızca kuantize edilmiş dışa aktarım; Hexagon hedefini name olarak belirt
Raspberry Pi, ARM CPUNCNNncnnRaspberry Pi kılavuzundaki en hızlı biçim
TarayıcıONNX Runtime Webonnxn veya s modellerini kullan

Yeni Apple platformlarında Apple'ın daha yeni Core AI biçimine de dışa aktarabilirsin (format=coreai, macOS 26+ Apple silicon veya x86-64 Linux'ta dışa aktarılır). Dışa aktarma konusunda yeni misin? Dağıtım için Dışa Aktarma dersi temel bilgileri ele alıyor.

Çıkarım sunucularını hiç çalıştırmak istemiyorsan Ultralytics Platform, modeli 42 bölgeden birinde özel bir uç nokta olarak dağıtır ve profilindeki Deployments sekmesi her birinin nerede çalıştığını gösterir:

Etkin dağıtımlar, HTTP istekleri, hata oranı ve P95 gecikme süresi için dünya dağıtım bölgeleri haritası ve genel bakış kartları bulunan Ultralytics Platform profilindeki Deployments sekmesi

Bu yol Bir Uç Noktayı Dağıtma ve Çağırma bölümünde ele alınıyor. Bu kursun geri kalanı modeli kendin çalıştırdığın durumlara yönelik.

FPS Hedefini Milisaniye Bütçesine Dönüştür#

"Gerçek zamanlı" bir gereksinim değil; bir sayı gereksinimdir. Herhangi bir şeyi kıyaslamadan önce hesapla:

GeçişÖrnek: kamera başına 20 FPS
Kare bütçesi = 1000 ÷ FPS50 ms
Çözme işlemi çıkar (RTSP, 1080p)yaklaşık 10 ms
İzleme, sayma ve hedef işlemlerini çıkaryaklaşık 5 ms
Ani yükler için %20 pay çıkar10 ms
Modele kalanyaklaşık 25–30 ms

Ardından şu karar kurallarını uygula:

  • YOLO26n cihazın CPU'sunda model bütçeni aşıyorsa, başka bir şey yapmadan önce hızlandırıcıya (GPU, iGPU, NPU) geç veya imgsz boyutunu küçült; YOLO26 kıyaslamaları, YOLO26n için CPU ONNX'te 38.9 ms, TensorRT ile T4 üzerinde 1.7 ms değerlerini listeliyor.
  • Bir cihazın birden fazla kameraya hizmet vermesi gerekiyorsa, model bütçesini kamera sayısına böl.
  • Cihaz filosunda bir avuçtan fazla cihaz türü varsa, cihaza özel derleme gerektirmeyen çalışma zamanlarını tercih et veya her cihaz sınıfı için ayrı bir derleme planla.
  • Çağıran kod Swift, Kotlin veya C++ ile yazılmışsa, karar vermeden önce çalışma zamanının bu dil için SDK'sını kontrol et.

Adayları Cihazda Kıyasla#

Teknik özellik belgeleri ve başkalarının kıyaslamaları başlangıç noktasıdır. Karar, dağıtım yapacağın donanımda ve ortalama değere göre değil yavaş karelere bakılarak verilir: ortanca değerde hızlı olup her yirmi kareden birinde takılan çalışma zamanı yine de kare düşürür. Bu betik her adayı dışa aktarır, gerçek bir kare üzerinde 100 çıkarımın süresini ölçer ve her birini 95. yüzdelik dilime (p95) göre değerlendirir:

from ultralytics import YOLO
from ultralytics.utils.downloads import safe_download

BUDGET_MS = 30  # the model's share of a 20 FPS frame budget
CANDIDATES = ("onnx", "openvino")  # runtimes the decision tree allows on this machine

if __name__ == "__main__":  # exports and inference can start worker processes on macOS and Windows
    frame = str(safe_download("https://ultralytics.com/images/bus.jpg"))  # use a real frame from your camera
    for fmt in CANDIDATES:
        model = YOLO(YOLO("yolo26n.pt").export(format=fmt))
        for _ in range(5):  # warm up: the first calls include one-time setup
            model(frame, verbose=False)
        runs = sorted(model(frame, verbose=False)[0].speed["inference"] for _ in range(100))
        p50, p95 = runs[49], runs[94]
        verdict = "meets" if p95 <= BUDGET_MS else "misses"
        print(f"{fmt:9s} p50 {p50:5.1f} ms  p95 {p95:5.1f} ms  {verdict} the {BUDGET_MS} ms budget")

Bu kursu test etmek için kullanılan Apple silicon dizüstü bilgisayarda, CPU'yu başka işler de kullanırken:

onnx      p50  30.0 ms  p95  46.4 ms  misses the 30 ms budget
openvino  p50  22.8 ms  p95 113.5 ms  misses the 30 ms budget

Satır satır incele:

  • speed["inference"], çözme veya çizim işlemleri olmadan, modelin o kare için harcadığı süredir; bu nedenle çalışma zamanlarını adil biçimde karşılaştırır.
  • OpenVINO ortanca değerde kazanıyor, p95'te ise iki kattan fazla farkla kaybediyor. Ortalamalara göre karar verseydin yoğun anlarda takılan çalışma zamanını dağıtıma çıkarırdın; p95'e göre karar verildiğinde bu makinede daha kararlı seçenek ONNX Runtime.
  • İkisi de bütçeyi aşıyor; bu nedenle burada sıradaki adım başka bir CPU çalışma zamanı denemek değil, daha küçük bir imgsz kullanmak, hızlandırıcıya geçmek veya cihaz başına kamera sayısını azaltmak.

Biçimler arasında hızlı bir doğruluk ve hız taraması için Benchmark modu her biçimi dışa aktarır, doğrular ve sürelerini ölçer:

yolo benchmark model=yolo26n.pt data=coco8.yaml imgsz=640 format=onnx

Makinenin desteklediği tüm biçimleri taramak için format= değerini kaldır. COCO8'de yalnızca dört doğrulama görseli bulunur; bu nedenle mAP sütununu hızlı bir işlevsellik testi olarak değerlendir ve doğruluk kararlarında kendi veri kümesi YAML dosyanı kullan.

Yaygın Hatalar#

Yanlış makinede kıyaslama yapmak

Belirti: Model iş istasyonunda 60 FPS'ye ulaştı, ancak cihazda kare atlıyor. Çözüm: Dağıtım donanımında veya bulabildiğin en yakın makinede kıyaslama yap ve üretimde karşılaşacağı yük altında (diğer süreçler, diğer kameralar) çalıştır.

TensorRT motorları cihaza özeldir

Belirti: Veri merkezi GPU'sunda oluşturulan bir .engine, Jetson Orin'de yüklenemiyor. Çözüm: Kurulum sırasında hedef cihazda oluştur (Platform dışa aktarma belgelerine göre YOLO26n FP16 derlemesi Jetson Orin'de yaklaşık 5 dakika sürer) veya her cihaz sınıfı ve TensorRT sürümü için ayrı bir derleme tutup herhangi bir cihazın yeniden derleme yapabilmesi için .pt ya da .onnx dosyasını gönder.

Sunacağın boyutta kıyaslama yap

yolo benchmark, verdiğin imgsz değerinde ölçüm yapar. Üretim imgsz=1280 değerinde çalışıyorsa 1280'de kıyaslama yap: hesaplama piksel sayısıyla arttığından 640 sonuçları, 1280 dağıtımındaki performansı yaklaşık 4 kat olduğundan düşük gösterir.

Uç Cihazlar Dört Soru Daha Getirir#

Raspberry Pi, NVIDIA Jetson ve Jetson'da DeepStream kılavuzlarında yaygın hedefler ayrıntılı olarak ele alınıyor. Bir uç cihazı seçmeden önce şu soruları yanıtla:

  • Soğuk başlangıç: TensorRT motoru nerede derleniyor ve kim bekliyor?
  • Güç ve ısı: Cihaz kasası modeli gün boyunca tam FPS'de çalıştırabilir mi?
  • Bellek: Modelin yanında kare arabellekleri ve izleyici durumu için yer var mı? INT8, modelin kullandığı belleği yarıya indirir.
  • Güncellemeler: Yeni bir best.pt 1.000 cihaza nasıl ulaşacak? Bir Docker görüntüsü cihazların tutarlı olmasını sağlar.
Dene

Gerçek veya planlanan bir proje için beş satırlık bir dağıtım özeti yaz: hedef cihaz, kamera başına FPS, cihaz başına kamera sayısı, çağıran dil ve filo büyüklüğü. Özeti milisaniye cinsinden bir model bütçesine dönüştür, karar ağacından adayları seç ve pick_runtime.py komutunu (modelin ve adaylarla birlikte) hedef cihazda veya elindeki en yakın makinede çalıştır.

Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • Özetinde cihazı, çalışma zamanını ve tam format= değerini belirttin.

  • FPS hedefinden modelin milisaniye bütçesini hesapladın ve çıkardığın değerleri gösterdin.

  • Her aday için cihazda ölçülmüş p50 ve p95 çıkarım sürelerine ve bütçeye göre bir sonuca sahipsin.

Çözümü göster

Perakende analitiği dağıtımı için örnek bir özet:

SoruYanıt
CihazIntel Core Ultra CPU'lara sahip, ayrı GPU'su olmayan 40 mağaza içi mini PC
FPS ve kameralarKamera başına 10 FPS, kutu başına 2 kamera
ÇağıranLinux üzerinde Python hizmeti
FiloDocker görüntüsüyle güncellenen 40 kutu

Bütçe: 1000 ÷ 10 = kare başına 100 ms; çözme ve izleme için yaklaşık 15 ms ile %20 payı çıkarınca yaklaşık 65 ms kalıyor ve bu değer iki kamera arasında paylaşılıyor; yani çıkarım başına yaklaşık 30 ms. Karar ağacı OpenVINO'yu (Intel CPU) ve yedek seçenek olarak ONNX Runtime'ı gösteriyor. Buna göre bir mağaza kutusunda:

python pick_runtime.py  # CANDIDATES = ("onnx", "openvino"), BUDGET_MS = 30

OpenVINO belgelerindeki Core Ultra 7 155H CPU kıyaslamasında YOLO26n için OpenVINO FP32 ile 13.4 ms sonucu veriliyor; dolayısıyla yolo26n rahatça sığmalı. Her iki kamera hattı da çalışırken gerçek kutudaki p95 değeri 30 ms'nin altındaysa OpenVINO'yu dağıtıma çıkar. Bütçeyi aşarsa donanım satın almadan önce kutunun entegre GPU'sunu device="intel:gpu" ile dene.

Sırada ne var

Hedefi seçtikten sonraki derste ONNX'e dışa aktaracak ve dışa aktarılan modelin PyTorch ile aynı sonuçları verdiğini doğrulayacaksın.

İlerlemeni kaydetmek için giriş yap