Inference Latency
Çıkarım gecikmesi, bir modelin tek bir girdiyi tahmine dönüştürmesi için geçen süredir. Gecikmeyi artıran etkenler, ölçüm yöntemleri ve verimle dengesi.
Çıkarım gecikmesi, eğitilmiş bir makine öğrenimi modelinin kamera karesi veya metin istemi gibi tek bir girdiyi tahmine dönüştürmesi için geçen süredir. Genellikle milisaniye (ms) cinsinden bildirilir ve bir sistemin ne kadar hızlı tepki verebileceğini belirler: saniyede 30 kare hızında çalışan bir kamera her 33,3 ms'de yeni bir kare üretir; bu nedenle daha uzun süren bir algılayıcı akışın gerisinde kalır ve artık gerçek zamanlı çıkarımı destekleyemez. Gecikme yalnızca ileri geçiş için veya ham girdiden kullanılabilir çıktıya kadar uçtan uca ölçülerek raporlanır. Üretim sistemleri, birkaç yavaş yanıt ortalama kadar önemli olabileceği için medyan (p50) ve 99. yüzdelik dilim (p99) gibi yüzdelik dilimleri izler.
Çıkarım Gecikmesini Neler Artırır#
Tek bir tahmin birkaç aşamadan geçer. Ön işleme girdiyi kod çözer, yeniden boyutlandırır ve normalleştirir. İleri geçiş ağı çalıştırır; maliyeti modelin FLOPs değerine, girdi çözünürlüğüne ve sayısal duyarlılığa bağlı olarak artarken hızı işlemciye, yani CPU, GPU veya sinirsel işlem birimine (NPU) bağlıdır. Son işleme, ham çıktıları sonuçlara dönüştürür; algılayıcılar için kutuların kodunu çözer ve maksimum olmayanları bastırma (NMS) uygular. Bulut API'si ağ gidiş dönüşünü ve isteğin kuyrukta beklediği süreyi ekler; uç yapay zekânın modelleri veriyi yakalayan cihazda çalıştırmasının nedeni budur. Çatılar belleği ayırdığı, ağırlıkları önbelleklere yüklediği ve ilk kullanımda çekirdekleri seçtiği için ilk çağrı da sonraki çağrılardan daha yavaştır.
Donanım ve çalışma zamanı, ileri geçişi bir büyüklük mertebesi veya daha fazla değiştirebilir: Ultralytics YOLO26 nano, CPU üzerinde ONNX ile 640 piksel COCO görüntü başına ortalama 38,9 ms, NVIDIA T4 GPU üzerinde TensorRT ile 1,7 ms sürer. Ultralytics YOLO, her tahminin aşama başına sürelerini sonucun speed özniteliğine kaydeder; kıyaslama modu da her dışa aktarma biçimi için ölçümü tekrarlar:
from ultralytics import YOLO
# Load the smallest YOLO26 detection model
model = YOLO("yolo26n.pt")
# Predict on one image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Per-image time in milliseconds for each stage of the pipeline
for stage, ms in result.speed.items():
print(f"{stage}: {ms:.1f} ms")Döngü ön işleme, çıkarım ve son işleme sürelerini yazdırır; bunların toplamı modelin geçerli cihazda o görüntü için harcadığı gecikmedir.
Gecikmeyi Doğru Ölçme#
Gecikme değerleri ancak aynı yöntemle ölçüldüklerinde karşılaştırılabilir. Güvenilir ölçümler birkaç ısınma çalıştırmasını dışarıda bırakır, çok sayıda çalıştırmayı zamanlar ve tek bir çalıştırma yerine medyanı ve üst yüzdelik dilimi raporlar. GPU'larda zamanlayıcı cihazın işleminin bitmesini beklemelidir; örneğin torch.cuda.synchronize() kullanılabilir. Çünkü çekirdekler eşzamansız başlatılır ve saat çok erken okunursa işlem tamamlanmadan ölçüm durur. Model gecikmesi bir veri merkezi GPU'sunda ölçüldüğünde telefondaki gecikmesi hakkında pek bilgi vermediği için girdi boyutu, yığın boyutu, duyarlılık ve cihaz dağıtımla eşleşmelidir. FLOPs donanımdan bağımsız maliyeti tahmin eder; ancak FLOPs değeri eşit olan modeller aynı cihazda belirgin biçimde farklı hızlarda çalışabilir.
Çıkarım Gecikmesi ve İş Hacmi#
İş hacmi, bir sistemin birim zamanda işlediği girdi sayısıdır; örneğin saniyedeki görüntü veya belirteç sayısıdır ve çoğu zaman gecikmeyle ters yönde değişir. Daha büyük bir yığın donanımı daha yoğun kullanarak iş hacmini artırır; ancak yığındaki her girdi tüm yığının tamamlanmasını beklediğinden her isteğin yanıtlanma süresi de uzar:
import time
import torch
import torchvision
# A ResNet-18 image classifier in inference mode on the CPU
model = torchvision.models.resnet18().eval()
for batch in [1, 2, 4, 8]:
x = torch.randn(batch, 3, 224, 224)
with torch.inference_mode():
model(x) # warmup run, not timed
times = []
for _ in range(20):
start = time.perf_counter()
model(x)
times.append(time.perf_counter() - start)
latency = sorted(times)[len(times) // 2] # median seconds per batch
print(f"batch {batch}: {latency * 1e3:5.1f} ms per batch, {batch / latency:4.0f} images/s")Dizüstü bilgisayar CPU'sunda yığın boyutunu 1'den 8'e çıkarmak iş hacmini saniyede 168 görüntüden 220 görüntüye yükseltirken, bir yığının yanıtlanma süresini 6 ms'den 36 ms'ye çıkardı. Bu nedenle sürücü destek ve sesli asistanlar gibi etkileşimli sistemler 1 yığın boyutuyla çalışır; video arşivini dizine ekleme gibi çevrimdışı işler ise büyük yığınlar kullanır. LLM sunucuları, her kullanıcının tam bir yığının tamamlanmasını beklemesine gerek bırakmadan iş hacmini yüksek tutmak için çalışan bir yığına istek ekleyip çıkaran sürekli gruplamayı kullanır.
Çıkarım Gecikmesini Azaltma#
En büyük kazançlar genellikle daha az hesaplama yapmaktan gelir: daha küçük bir model çeşidi, daha düşük girdi çözünürlüğü veya model budama yoluyla daha az ağırlık kullanmak. Model nicelemesi ile FP16 veya INT8'e geçmek, düşük duyarlılıklı işlemleri hızlıca yapabilen donanımlarda kalan her işlemin maliyetini düşürür. Katmanları birleştiren ve cihaz için en hızlı çekirdekleri seçen TensorRT, OpenVINO veya ONNX Runtime gibi optimize edilmiş bir çıkarım motoruna dışa aktarma da hız kazandırır. Modeli doğrudan cihazda çalıştırmak, mobil bağlantıda çoğu zaman onlarca milisaniye süren ağ gidiş dönüşünü ortadan kaldırır.
Gecikmenin Önem Taşıdığı Alanlar#
- Büyük dil modelleri (LLM'ler): Sohbet hizmetleri, kullanıcıların yanıt verebilirlik olarak algıladığı ilk token süresini ve akış hızını belirleyen çıktı tokenı başına süreyi izler. Taslak çözümleme, taslak olarak hazırlanan birkaç tokenı tek bir ileri geçişte doğrulayarak ikinci süreyi azaltır.
- Endüstriyel denetim: Konveyörün üzerindeki bir kamera, her parçayı reddetme kapısına ulaşmadan önce sınıflandırmalıdır; dolayısıyla gecikme, hattın en yüksek hızını belirler.
- Otonom araçlar: Algılama, planlama ve kontrolün toplam süre bütçesi kısıtlıdır. 100 km/sa hızla giden bir araç, her 100 ms'lik gecikmede 2,8 metre yol alır.










