Files
hermes-skills/mlops/llm-inference-benchmarking/references/aiperf-token-metrics-explained.md
T

4.4 KiB
Raw Blame History

AIPerf Token-Metriken: Einheit & Interpretation

AIPerf exportiert mehrere Metriken die alle "tokens/sec" im Namen tragen, aber unterschiedliche Einheiten haben. Das führt zu Fehlinterpretationen wenn man die falsche Metrik für die falsche Frage verwendet.

Metrik-Übersicht

Metrik (JSON-Key) Einheit Bedeutung
prefill_throughput_per_user tokens/sec/user Wie schnell der Prompt eines Users verarbeitet wird (Prompt → erstes Token)
output_token_throughput tokens/sec Gesamter Output-Durchsatz aller parallelen Sessions zusammen
output_token_throughput_per_user tokens/sec/user Output-Generierungsgeschwindigkeit, pro einzelnem User
e2e_output_token_throughput tokens/sec/user End-to-End Throughput: Gesamtzeit (inkl. TTFT) / Output-Tokens, pro User
total_token_throughput tokens/sec (Input + Output)-Tokens gesamt, alle Sessions
request_throughput requests/sec Anzahl abgeschlossener Requests pro Sekunde

Kritische Unterscheidung

„Per User" = Session-Rate

Diese Metriken beschreiben das Erlebnis eines einzelnen Endnutzers:

  • prefill_throughput_per_user: 505 → Jeder User bekommt seinen Prompt mit 505 tok/s verarbeitet
  • output_token_throughput_per_user: 13.4 → Jeder User sieht ~13.4 neue Tokens pro Sekunde (die "Schreibgeschwindigkeit" des Modells)
  • e2e_output_token_throughput: 11.9 → Inklusive Wartezeit bis zum ersten Token braucht der Request pro Output-Token länger

Wichtig: Bei prefill_throughput_per_user ist der Einheitshinweis irreführend. Es ist keine Durchschnittsbildung über alle Users, sondern tatsächlich die Rate pro Session. Bei 100 parallelen Sessions mit je 505 tok/s benötigt der Node also insgesamt 50.500 tok/s Prefill-Kapazität (was nicht direkt gemessen wird).

„Gesamt" = Node-Rate

Diese Metriken beschreiben die gesamte Leistung der Inferenz-Instanz:

  • output_token_throughput: 1083 → Alle 100 Sessions zusammen generieren 1083 Output-Tokens pro Sekunde
  • total_token_throughput: 5468 → (Input + Output) zusammen → inklusive Prefill-Arbeit

Praktische Berechnungen

Input Token/s (nicht direkt gemessen)

"Input" oder "Prefill" in Gesamtzahlen ist nicht separat exportiert. Annäherung:

input_tokens/sec ≈ total_token_throughput - output_token_throughput

Beispiel (gemma @ conc=100):

  • total: 5468 tok/s
  • output: 1083 tok/s
  • → input ≈ 4385 tok/s

Gesamtleistungs-Ranking

Für Kapazitätsplanung (wie viele Tokens kann der Node pro Sekunde verarbeiten?) verwende total_token_throughput:

Modell @ conc=100 Input t/s Output t/s Total t/s
moonshotai-kimi-k2.6 ~5115 1270 6385
gemma-4-31b-it ~4385 1083 5468
qwen3.6-27b-nvfp4 ~4191 992 5183
gpt-oss-120b ~3300 804 4104

Erlebnis-Ranking

Für Kundenerfahrung (was spürt ein einzelner User?) verwende die _per_user-Metriken:

Modell @ conc=100 Prefill/User Output/User
moonshotai-kimi-k2.6 276 17.9
qwen3.6-27b-nvfp4 226 15.7
gemma-4-31b-it 505 13.4
gpt-oss-120b 137 12.3

Fehlerquellen

  1. Prefill mit Output vergleichen Prefill ist tok/s/user, Output-Gesamt ist tok/s. Ein Modell mit hohem prefill_throughput_per_user und niedrigem output_token_throughput ist ein "Prompt-Monster" aber ein "Generation-Schnarcher".

  2. Gesamtleistung mit User-Erlebnis verwechseln Ein Node mit 10.000 tok/s Gesamtleistung bei 500 concurrent Sessions gibt jedem User nur 20 tok/s. Das ist unbrauchbar für Chat.

  3. Input/Prefill vernachlässigen Bei RAG-Anwendungen (lange Contexte) dominiert der Prefill die Gesamtlaufzeit. Ein Modell mit 505 tok/s Prefill braucht für 4K Context ~8 Sekunden bis zum ersten Token.

Empfohlene KPIs pro Use-Case

Use Case Primäre Metrik Sekundäre Metrik Warnschwelle
Chat-UI (Echtzeit) output_token_throughput_per_user ttft_p99 < 20 tok/s pro User
API-Burst (Batch) output_token_throughput (gesamt) request_throughput Steigt nicht mehr mit Conc
RAG / Lang-Context prefill_throughput_per_user ttft_p99 > 10s für 4K Input
Kapazitätsplanung total_token_throughput ttft_p99 Degradation > 2×