Inference Latency
Die Inferenzlatenz ist die Zeit, die ein Modell benötigt, um eine Eingabe in eine Vorhersage umzuwandeln. Was sie beeinflusst, wie du sie misst und wie sie sich zur Datenrate verhält.
Die Inferenzlatenz ist die Zeit, die ein trainiertes maschinelles Lernmodell benötigt, um eine Eingabe wie ein Kamerabild oder eine Textanweisung in eine Vorhersage umzuwandeln. Sie wird üblicherweise in Millisekunden (ms) angegeben und bestimmt, wie schnell ein System reagieren kann: Eine Kamera mit 30 Bildern pro Sekunde liefert alle 33,3 ms ein neues Bild. Ein Detektor, der länger benötigt, fällt daher hinter den Datenstrom zurück und kann keine Echtzeitinferenz mehr unterstützen. Die Latenz wird entweder nur für den Vorwärtsdurchlauf oder durchgängig von der rohen Eingabe bis zur nutzbaren Ausgabe angegeben. Produktionssysteme erfassen Perzentile wie den Median (p50) und das 99. Perzentil (p99), denn einige wenige langsame Antworten können genauso wichtig sein wie der Durchschnitt.
Was die Inferenzlatenz erhöht#
Eine einzelne Vorhersage durchläuft mehrere Phasen. Die Vorverarbeitung dekodiert, skaliert und normalisiert die Eingabe. Beim Vorwärtsdurchlauf wird das Netz ausgeführt. Sein Aufwand wächst mit den FLOPs, der Eingabeauflösung und der numerischen Genauigkeit. Die Geschwindigkeit hängt dagegen vom Prozessor ab: einer CPU, einer GPU oder einer neuronalen Verarbeitungseinheit (NPU). Die Nachverarbeitung wandelt Rohdaten in Ergebnisse um. Bei einem Detektor geschieht dies durch das Dekodieren von Begrenzungsrahmen und die Anwendung der Nichtmaximumunterdrückung (NMS). Eine Cloud-API verursacht zusätzliche Latenz durch den Netzwerk-Roundtrip und die Wartezeit der Anfrage in einer Warteschlange. Deshalb führt Edge-KI Modelle auf dem Gerät aus, das die Daten erfasst. Der erste Aufruf ist ebenfalls langsamer als die folgenden, weil Frameworks beim ersten Einsatz Speicher zuweisen, Gewichte in Caches laden und Kernel auswählen.
Hardware und Laufzeitumgebung können den Vorwärtsdurchlauf um eine Größenordnung oder mehr verändern: Ultralytics YOLO26 nano benötigt im Durchschnitt 38,9 ms pro COCO-Bild mit 640 Pixeln, wenn es mit ONNX auf einer CPU ausgeführt wird, und 1,7 ms mit TensorRT auf einer NVIDIA-T4-GPU. Ultralytics YOLO erfasst die Zeit pro Stufe für jede Vorhersage im Attribut speed des Ergebnisses. Der Benchmark-Modus wiederholt die Messung für jedes Export-Format:
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")Die Schleife gibt die Vorverarbeitungs-, Inferenz- und Nachverarbeitungszeiten aus. Ihre Summe ist die Latenz des Modells für dieses Bild auf dem aktuellen Gerät.
Latenz genau messen#
Latenzwerte lassen sich nur vergleichen, wenn sie auf dieselbe Weise gemessen wurden. Zuverlässige Messungen lassen einige Aufwärmläufe weg, messen viele Durchläufe und geben den Median sowie ein Perzentil im oberen Bereich statt eines einzelnen Durchlaufs an. Bei GPUs muss der Zeitmesser auf das Gerät warten, zum Beispiel mit torch.cuda.synchronize(), da Kernel asynchron gestartet werden und ein zu früh abgelesener Zeitwert erfasst wird, bevor die Arbeit abgeschlossen ist. Eingabegröße, Batchgröße, Genauigkeit und Gerät müssen mit der Bereitstellung übereinstimmen, denn die Latenz eines Modells auf einer Rechenzentrums-GPU sagt wenig über seine Latenz auf einem Smartphone aus. FLOPs schätzen den Rechenaufwand unabhängig von der Hardware. Modelle mit gleicher FLOP-Anzahl können jedoch auf demselben Gerät deutlich unterschiedliche Geschwindigkeiten erreichen.
Inferenzlatenz und Durchsatz im Vergleich#
Der Durchsatz gibt an, wie viele Eingaben ein System pro Zeiteinheit verarbeitet, etwa Bilder oder Tokens pro Sekunde. Er steht häufig im Gegensatz zur Latenz. Ein größerer Batch hält die Hardware stärker ausgelastet und erhöht so den Durchsatz. Jede Eingabe im Batch muss jedoch warten, bis der gesamte Batch fertig ist, wodurch sich auch die Antwortzeit pro Anfrage erhöht:
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")Auf einer Laptop-CPU erhöhte der Wechsel von Batchgröße 1 auf 8 den Durchsatz von 168 auf 220 Bilder pro Sekunde, während sich die Rückgabezeit für einen Batch von 6 ms auf 36 ms verlängerte. Interaktive Systeme wie Fahrassistenzsysteme und Sprachassistenten arbeiten daher mit Batchgröße 1. Bei Offline-Aufträgen, etwa der Indexierung eines Videoarchivs, werden dagegen möglichst große Batches verwendet. LLM-Server nutzen kontinuierliche Batchverarbeitung, bei der Anfragen zu einem laufenden Batch hinzugefügt oder daraus entfernt werden. So bleibt der Durchsatz hoch, ohne dass Nutzer auf den Abschluss eines ganzen Batches warten müssen.
Inferenzlatenz reduzieren#
Die größten Verbesserungen erzielt man in der Regel, indem man weniger Berechnungen ausführt: mit einer kleineren Modellvariante, einer niedrigeren Eingabeauflösung oder weniger Gewichten durch Modellpruning. Die Modellquantisierung auf FP16 oder INT8 macht jeden verbleibenden Vorgang auf Hardware mit schnellen Einheiten für niedrige Genauigkeit günstiger. Der Export in eine optimierte Inferenz-Engine wie TensorRT, OpenVINO oder ONNX Runtime fasst Schichten zusammen und wählt die schnellsten Kernel für das Gerät aus. Wird das Modell direkt auf dem Gerät ausgeführt, entfällt der Netzwerk-Roundtrip, der über eine Mobilfunkverbindung oft mehrere zehn Millisekunden kostet.
Wo Latenz eine Rolle spielt#
- Große Sprachmodelle (LLMs): Bei Chatdiensten werden die Zeit bis zum ersten Token, die Nutzende als Reaktionsfähigkeit wahrnehmen, und die Zeit pro ausgegebenem Token erfasst, die die Streaming-Geschwindigkeit bestimmt. Spekulatives Dekodieren verkürzt die zweite Zeitspanne, indem mehrere vorgeschlagene Tokens in einem Vorwärtsdurchlauf überprüft werden.
- Industrielle Inspektion: Eine Kamera über einem Förderband muss jedes Teil klassifizieren, bevor es die Ausschleusvorrichtung erreicht. Die Latenz bestimmt daher die maximale Geschwindigkeit der Produktionslinie.
- Autonome Fahrzeuge: Wahrnehmung, Planung und Steuerung teilen sich ein knappes Zeitbudget. Bei 100 km/h legt ein Auto während jeder Verzögerung von 100 ms 2,8 Meter zurück.










