Lokale KI-Infrastruktur

Speicherbandbreite und Geschwindigkeitsgrenzen

Wie schnell kann der Decode dieses Modells auf dieser GPU höchstens laufen?

Sehen, warum Speicherbandbreite und nicht Rechenleistung das Decoding von LLMs begrenzt, GPUs für dasselbe Setup vergleichen und eine Messung an der Grenze einordnen.

Größeneinheit

1 · Modell

Parameter
8,19 Mrd.
Schichten
36
Heads
32 Query, 8 KV
Head-Dimension
128
Maximaler Kontext
40.960 Tokens
KV cache pro Token, 16 Bit
147,46 KB/token
Hidden Size
4.096
Vokabular
151.936

Werte am 30. Oktober 2026 aus der config.json auf Hugging Face gelesen.

Diese Werte stammen von Hugging Face und sind schreibgeschützt. Wähle Werte anpassen, um sie zu ändern.

2 · Präzision

Wie viele Bits jeden Parameter speichern.

›Veröffentlichte Quantisierungen

Gilt nur für quantisierte Formate.

Getrennt von den Gewichten einstellbar. FP8 halbiert den Cache.

3 · Workload

Tokens pro Sequenz, Prompt und generierter Text zusammen.

Tokens

Anfragen, die zur selben Zeit verarbeitet werden, der Batch.

4 · Hardware

RTX PRO 6000 Blackwell Server Edition

NVIDIA · Blackwell

Rechenzentrum

Speicher

96 GB

GDDR7 · als 96 GiB gezählt

Bandbreite

1.597 GB/s

Max. Leistung

300 to 600 W

Konfigurierbar.

Die Balken vergleichen jeden Wert mit der größten GPU im Katalog.

NVLink
Keine
MIG-Instanzen
4
NVLink-Gruppe
Keine, nur PCIe
GPUs pro Server
bis zu 8

So wird sie in Server eingebaut

Diese GPU unterteilen

MIG

Unterteilt in 4 Speicher-Slices und 4 Compute-Slices, bis zu 4 Instanzen auf einer GPU. Die Profile:

  • 1g.24gb
  • 2g.48gb
  • 4g.96gb

Wo eine Instanz beginnen darf:Abgeleitet

vGPU for Compute

10 Typen mit 8 bis 96 GB Framebuffer, bis zu 12 vGPUs auf einer GPU. Es braucht eine Lizenz für NVIDIA AI Enterprise und einen Hypervisor.

Teilen ohne Unterteilen

Time-slicing funktioniert auf jeder GPU, ohne Isolation von Speicher oder Fehlern zwischen den Replicas. MPS teilt eine ganze GPU, keine MIG-Instanz.

Zahlenformate

FP4FP8FP16BF16TF32FP32
›Spezifikationen und Quellen
Speicher
96 GB[1]
Typ
GDDR7[1]
Bandbreite
1.597 GB/s[1]
Max. Leistung
300 to 600 W[2]Konfigurierbar.
NVLink
0[3]Nicht unterstützt.
MIG-Instanzen
4[4]
FP4
4.000 TFLOPS[1]NVIDIA nennt nicht, ob dense oder sparse.
FP8
2.000 TFLOPS[1]NVIDIA nennt nicht, ob dense oder sparse.
FP16 / BF16
1.000 TFLOPS[1]NVIDIA nennt nicht, ob dense oder sparse.
TF32
234 TFLOPS[1]NVIDIA nennt nicht, ob dense oder sparse.

Zahlenformate: FP4, FP8, FP16, BF16, TF32, FP32

Tensor-Werte sind Spitzenwerte aus Datenblättern und keine Leistung in der Anwendung.

Quellen

Quellen werden geladen

GPUs insgesamt. Das Modell verteilt sich per Tensor parallelism, Pipeline-Stufen und Replicas auf sie, wie das Layout unten festlegt.

1 Server mit je 8 GPUs, der letzte mit 1

So wird die GPU genutzt

Unterteile jede GPU in Slices oder teile sie unter Replicas, statt mehr GPUs zu nutzen. Slices und Teil-GPUs führen Replicas des Modells aus und lassen sich nicht zu einer Tensor-parallel-Gruppe verbinden.

Ein Gerät unter Replicas teilen

Mehrere Replicas auf einem Gerät, jede mit einem eigenen Teil des Speichers.

Compute-Instanzen gibt es nur innerhalb einer MIG-Instanz.
›Deployment-Layout

Wie sich die GPUs das Modell teilen. Speicher pro GPU, Platz für den KV cache und GPU-Anzahl ergeben sich daraus, so wie vLLM sie aufteilt.

Pipeline-Stufen

Teilt die Schichten in Abschnitte auf verschiedenen GPUs auf. Zwischen den Stufen fließen wenig Daten, daher passt es zu GPUs ohne schnelle Verbindung und zu Servern, die nur über ein Netzwerk verbunden sind.

Replicas

Unabhängige Kopien des Modells, jede mit eigenem KV cache. Die Sequenzen werden auf die Kopien verteilt. Ein Mixture-of-Experts-Modell verteilt seine Experten über alle Replicas.

Tensor-parallel-Größe: 1, die GPUs geteilt durch Pipeline-Stufen und Replicas.

GPUs pro Server

Tensor parallelism bleibt innerhalb eines Servers. Darüber hinaus werden die GPUs zu Pipeline-Stufen.

Decode-context-parallel-Größe

Teilt den KV cache jeder Sequenz tokenweise auf die GPUs des Tensor-Parallel-Verbunds auf. Es kommen keine GPUs hinzu, und das Decoding wird langsamer.

Nur für Mixture-of-Experts-Modelle.

Messung

Optional: die Inter-Token-Latency, die du für dieses Setup gemessen hast, in Millisekunden.

ms
Runtime-Annahmen›3,22 GB Overhead pro GPU, 90 % nutzbar, 10 % Reserve

Speicher für CUDA-Kontext, Aktivierungen und Graphs, in der gewählten Einheit. Eine Heuristik.

GB

Anteil des GPU-Speichers, den die Serving-Engine nutzen darf. Der Standard von vLLM ist 92 Prozent.

%

Anteil des nutzbaren Speichers, der frei bleiben soll, damit es bequem passt.

%

Dieses Modell hat keine Sliding-Window-Schichten.

Theoretische Grenze, keine erwartete Geschwindigkeit

Kürzester Decode-Schritt

13,28 ms

21,21 GB pro GPU bei 1,6 TB/s gelesen.

Geschwindigkeitsgrenze einer Sequenz

75,28 tok/s

Tokens pro Sekunde, die sie nicht überschreiten kann, ohne Speculative Decoding.

Alle 4 Sequenzen

301,13 tok/s

Tokens pro Sekunde zusammen.

Lesezeit der Gewichte

10,26 ms

Die Gewichte einer GPU, einmal mit voller Bandbreite gelesen.

Break-even-Batch

313

Ab hier ist nicht mehr der Speicher, sondern die Rechenleistung der Engpass. Die Latency steigt schon früher.

Was eine GPU in einem Schritt liest

  • Gelesene Gewichte16,38 GB77,22 %
  • Gelesener KV cache4,83 GB22,78 %

Schrittzeit bei wachsendem Batch

Jede zusätzliche Sequenz erhöht die Bytes, die ein Schritt liest, um ihren eigenen Cache, während die Gewichte nur einmal für alle gelesen werden. Dieselben Grenzen bei einem Kontext von 8.192 Tokens.

  • 1 Sequenz

    11,01 ms

  • 2 Sequenzen

    11,77 ms

  • 4 Sequenzen

    13,28 ms

  • 8 Sequenzen

    16,31 ms

  • 16 Sequenzen

    22,36 ms

  • 32 Sequenzen

    34,46 ms

  • 64 Sequenzen

    58,67 ms

  • 128 Sequenzen

    107,08 ms

  • 256 Sequenzen

    203,89 ms

Dasselbe Setup auf anderen GPUs

Dieselben Bytes, geteilt durch die Bandbreite jeder GPU. Eine GPU, auf die das Setup nicht passt, ist markiert, und ihr Wert ist das, was sie liefern würde, wenn es passte.

  • GB200 NVL72

    377 tok/s

  • GB300 NVL72

    377 tok/s

  • B200 HGX

    363 tok/s

  • B300 HGX

    363 tok/s

  • GH200 144 GB HBM3e

    231 tok/s

  • H200 SXM

    226 tok/s

  • H200 NVL

    226 tok/s

  • GH200 96 GB HBM3

    189 tok/s

  • H100 NVL

    186 tok/s

  • H100 SXM

    158 tok/s

  • A100 80GB SXM4

    96 tok/s

  • H100 PCIe

    94 tok/s

  • RTX PRO 6000 Blackwell Server EditionAusgewählt

    75 tok/s

  • Hinweis: Der Hersteller nennt den Spitzenwert dieser GPU, ohne zu sagen, ob er Sparsity einschließt. Verwendet wird die Hälfte, wie bei den GPUs derselben Generation, die es angeben.

Dieses Setup deployen

Diese Befehle sind für das oben dimensionierte Setup und deine Auswahl hier geschrieben und ändern sich mit beidem. Nichts wird für dich verändert: Eine Auswahl, die nicht mehr funktioniert, bleibt erhalten und wird markiert, mit Wegen, sie zu beheben.

Der Server

Ausführen mit

Runtime

Der Server, der das Modell lädt.

GPUs

Die Indizes der GPUs im Computer, wie nvidia-smi sie auflistet, durch Kommas getrennt. Das Setup nutzt 1 GPU.

GPUs identifizieren per

Ein Index hängt von der Reihenfolge ab, in der der Treiber die GPUs findet. Eine UUID ist an die Karte gebunden.

Endpoint

Der Port, auf dem der Endpoint antwortet. 8000 (Standard)

Lauscht auf

Standardmäßig ist der Endpoint nur auf diesem Computer erreichbar.

Der Endpoint antwortet nur auf Anfragen, die einen Key mitschicken. Der Key wird auf deinem Computer erzeugt und nie in einen Befehl oder Link geschrieben.

Weitere Optionen

Wo die heruntergeladenen Gewichte liegen. Ein bereits vorhandenes Verzeichnis spart den Download.

Der Standard ist das Release, für das diese Befehle geschrieben wurden. latest folgt dem neuesten.

Was laufen wird

DokumentiertKonfiguration YSTVGT

vLLM · Docker · 1 GPU, RTX PRO 6000 Blackwell

Einen Blick wert

  • Du hast einen KV cache in fp16 für bf16-Gewichte dimensioniert. Ein 16-Bit-Cache braucht in beiden Typen gleich viel Platz, und vLLM speichert ihn im eigenen Typ des Modells, sofern nichts anderes verlangt wird, daher erzwingen die Befehle fp16 nicht.

16 Schritte in 5 Phasen. Öffne einen nach dem anderen oder alle.

1Hardware prüfen

Sieh dir an, was der Computer oder Cluster bietet, bevor du etwas änderst.
  1. Schritt 1

    Treiber prüfen

    Stelle sicher, dass der NVIDIA-Treiber installiert und für die Software unten neu genug ist.

    nvidia-smi

    Das solltest du sehen

    • Eine Tabelle mit der Treiberversion und einer CUDA-Version von mindestens 13.0, die das Image braucht.
    Hilfe und Quellen

    Wenn es nicht funktioniert

    • Ist die CUDA-Version niedriger, als die Software braucht, aktualisiere den Treiber und prüfe erneut.

    Woher die Werte kommen

    • Die gewählte GPU: RTX PRO 6000 Blackwell.
  2. Schritt 2

    GPUs prüfen

    Stelle sicher, dass der Computer die GPU mit Index 0 auflistet.

    nvidia-smi -L

    Das solltest du sehen

    • Eine Zeile pro GPU, jede mit RTX PRO 6000 Blackwell, wie der Computer es schreibt.
    Hilfe und Quellen

    Wenn es nicht funktioniert

    • Fehlt eine gewählte GPU, steckt sie nicht in diesem Computer, oder der Treiber sieht sie nicht.
    • Passen die Namen nicht zu dem, was du erwartest, sind die Indizes nicht das, was du denkst. Identifiziere die GPUs per UUID, die nicht von der Reihenfolge abhängt.

    Woher die Werte kommen

    • Der Rechner nutzt 1 GPU.
    • Die gewählte GPU: RTX PRO 6000 Blackwell.
  3. Schritt 3

    Prüfen, dass der Speicher frei ist

    Der Rechner erwartet 22,76 GiB auf jeder GPU, von den 86,40 GiB, die die Engine nutzen darf. Prüfe, dass der Speicher von der GPU mit Index 0 frei ist.

    nvidia-smi --query-gpu=index,name,memory.total,memory.used,memory.free --format=csv -i 0

    Das solltest du sehen

    • Fast der gesamte Speicher der GPU ist frei, mindestens 22,76 GiB auf jeder.

    Zu beachten

    • Andere Prozesse nutzen diese GPUs womöglich schon. Ist ihr Speicher nicht frei, stoppe sie oder wähle andere GPUs, bevor du startest.
    Hilfe und Quellen

    Woher die Werte kommen

    • Der Rechner: 22,76 GiB benötigt von 86,40 GiB nutzbar auf jeder GPU.

2Vorbereiten

Hole dir Zugang zum Modell, installiere, was der Server braucht, und beschaffe ihn. Auch eine unterteilte GPU entsteht hier.

Tools installieren

  1. Schritt 4

    Docker prüfen

    Stelle sicher, dass Docker Engine installiert ist.

    docker --version

    Das solltest du sehen

    • Eine Docker-Version.
    Hilfe und Quellen
  2. Schritt 5

    NVIDIA Container Toolkit installieren

    Braucht Administratorrechte

    Es lässt Container die GPUs nutzen. Diese Befehle gelten für Ubuntu und Debian, die verlinkte Seite unten behandelt die anderen Distributionen.

    Kommt nach Schritt 1

    sudo apt-get update && sudo apt-get install -y --no-install-recommends ca-certificates curl gnupg2
    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    sudo apt-get update
    export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.20.1-1
    sudo apt-get install -y \
      nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

    Das solltest du sehen

    • Die Pakete werden ohne Fehler installiert.
    Hilfe und Quellen
  3. Schritt 6

    Docker mit den GPUs verbinden

    Braucht Administratorrechte

    Registriere die NVIDIA-Runtime bei Docker und starte es neu.

    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart docker

    Das solltest du sehen

    • Keine Fehler, und Docker kommt wieder hoch.

    Zu beachten

    • Ein Neustart von Docker stoppt die laufenden Container.
    Hilfe und Quellen
  4. Schritt 7

    Prüfen, dass ein Container die GPUs sieht

    Führe nvidia-smi in einem Container aus, der die GPU mit Index 0 bekommt. Es sollte nichts erscheinen außer dieser GPU.

    docker run --rm --runtime=nvidia --gpus '"device=0"' \
      ubuntu nvidia-smi

    Das solltest du sehen

    • Eine Tabelle mit einer GPU, der gewählten.
    Hilfe und Quellen

    Wenn es nicht funktioniert

    • Kann Docker nicht mit den GPUs starten, ist das Toolkit nicht konfiguriert, oder die Indizes gibt es auf diesem Computer nicht.
    • Passen die Namen nicht zu dem, was du erwartest, sind die Indizes nicht das, was du denkst. Identifiziere die GPUs per UUID, die nicht von der Reihenfolge abhängt.

    Woher die Werte kommen

    • --gpus '"device=0"'

      Standard Die ersten GPUs, ab 0 gezählt.

Server beziehen

  1. Schritt 8

    Image herunterladen

    Lade vllm/vllm-openai:v0.32.0 vor dem ersten Start herunter, damit der Start nur noch das Modell laden muss.

    docker pull vllm/vllm-openai:v0.32.0

    Das solltest du sehen

    • Der Download wird abgeschlossen, und die letzte Zeile nennt das Image.

    Zu beachten

    • Das Image ist mehrere Gigabyte groß.
    Hilfe und Quellen

3Server starten

Starte ihn mit dem dimensionierten Setup.
  1. Schritt 9

    Server starten

    Starte vllm-qwen3-8b mit dem dimensionierten Setup: dem Modell Qwen/Qwen3-8B, der Aufteilung auf die GPUs, dem Kontext und dem zugeteilten Speicher. Der erste Start lädt das Modell herunter und dauert ein paar Minuten.

    Kommt nach Schritt 3

    # config YSTVGT
    docker run -d --name vllm-qwen3-8b \
      --runtime nvidia --gpus '"device=0"' \
      --ipc=host \
      -v "$HOME/.cache/huggingface":/root/.cache/huggingface \
      -p 127.0.0.1:8000:8000 \
      vllm/vllm-openai:v0.32.0 \
      --model Qwen/Qwen3-8B \
      --max-model-len 8192 --max-num-seqs 4 \
      --gpu-memory-utilization 0.90

    Das solltest du sehen

    • Eine Container-ID.

    Zu beachten

    • Der erste Start lädt das Modell herunter und bereitet die Kernels vor, das dauert Minuten. Vorher ist der Server nicht bereit.
    Hilfe und Quellen

    Wenn es nicht funktioniert

    • Wenn es mit einer Out-of-memory-Meldung stoppt, braucht das Setup mehr, als die GPU fasst. Verringere Kontext oder Sequenzen, gib der Engine einen größeren Anteil der GPU oder nimm mehr GPUs. Der Rechner zeigt, um wie viel.
    • Sagt vLLM, der Kontext sei länger, als der KV cache fassen kann, verringere den Kontext oder die Zahl der Sequenzen.
    • Sagt vLLM, die Attention Heads ließen sich nicht durch die Tensor-parallel-Größe teilen, nimm eine Größe, die sie teilt.
    • Ist der Port belegt, wähle oben in den Optionen einen anderen.
    • Kann Docker nicht mit den GPUs starten, ist das Toolkit nicht konfiguriert, oder die Indizes gibt es auf diesem Computer nicht.

    Woher die Werte kommen

    • -d

      Standard Wie du es ausführen willst.

    • --name vllm-qwen3-8b

      Vom Rechner Das Repository des gewählten Modells.

    • --runtime nvidia

      Standard Wie du es ausführen willst.

    • --gpus '"device=0"'

      Standard Die ersten GPUs, ab 0 gezählt.

    • --ipc=host

      Standard Wie du es ausführen willst.

    • -v "$HOME/.cache/huggingface":/root/.cache/huggingface

      Standard Wo die heruntergeladenen Gewichte liegen.

    • -p 127.0.0.1:8000:8000

      Standard Der Port, auf dem der Endpoint antwortet.

    • --model Qwen/Qwen3-8B

      Vom Rechner Das Repository des gewählten Modells.

    • --max-model-len 8192

      Vom Rechner Die von dir gesetzte Kontextlänge: 8.192 Tokens.

    • --max-num-seqs 4

      Berechnet 4 Sequenzen, verteilt auf 1 Replica.

    • --gpu-memory-utilization 0.90

      Berechnet Der von dir gesetzte nutzbare Anteil, 90 Prozent, aufgeteilt auf 1 Replica auf dem Gerät, abgerundet, damit die Anteile nie mehr als das Gerät ergeben.

    • Das Repository des gewählten Modells.
    • Die von dir gesetzte Kontextlänge: 8.192 Tokens.
    • Der von dir gesetzte nutzbare Anteil, 90 Prozent, aufgeteilt auf 1 Replica auf dem Gerät, abgerundet, damit die Anteile nie mehr als das Gerät ergeben.

4Prüfen, dass es funktioniert

Warte, bis er antwortet, frage ihn etwas und vergleiche den Speicher mit dem Rechner.

Endpoint prüfen

  1. Schritt 10

    Warten, bis er bereit ist

    Der Server antwortet auf /health, sobald das Modell geladen ist.

    timeout 900 bash -c 'until curl -fs http://127.0.0.1:8000/health >/dev/null; do sleep 5; done' && echo ready

    Das solltest du sehen

    • Das Wort ready, nach einer Minute oder mehr, während das Modell lädt.
    Hilfe und Quellen

    Wenn es nicht funktioniert

    • Meldet sich der Server nicht als bereit, lies die letzten Logzeilen: Das Modell lädt noch, oder der Server ist mit einem Fehler gestoppt.
    • Wenn es mit einer Out-of-memory-Meldung stoppt, braucht das Setup mehr, als die GPU fasst. Verringere Kontext oder Sequenzen, gib der Engine einen größeren Anteil der GPU oder nimm mehr GPUs. Der Rechner zeigt, um wie viel.
  2. Schritt 11

    Prüfen, dass das Modell bereitgestellt wird

    Frage den Server, welche Modelle er bereitstellt.

    curl -sS http://127.0.0.1:8000/v1/models

    Das solltest du sehen

    • Eine Liste, in der Qwen/Qwen3-8B steht.
    Hilfe und Quellen

    Wenn es nicht funktioniert

    • Lautet die Antwort 401, ist der Key in dieser Shell nicht der, mit dem der Server gestartet wurde.
  3. Schritt 12

    Eine Frage stellen

    Eine Anfrage über den Endpoint, den deine Anwendungen nutzen werden.

    curl -sS http://127.0.0.1:8000/v1/chat/completions \
      -H 'Content-Type: application/json' \
      -d '{"model": "Qwen/Qwen3-8B", "messages": [{"role": "user", "content": "Say hello in five words."}], "max_tokens": 32}'

    Das solltest du sehen

    • Eine JSON-Antwort mit einer Nachricht des Modells.
    Hilfe und Quellen

    Wenn es nicht funktioniert

    • Lautet die Antwort 401, ist der Key in dieser Shell nicht der, mit dem der Server gestartet wurde.
    • Meldet sich der Server nicht als bereit, lies die letzten Logzeilen: Das Modell lädt noch, oder der Server ist mit einem Fehler gestoppt.

System ansehen

  1. Schritt 13

    GPUs ansehen

    Sieh dir den belegten Speicher und die Auslastung von der GPU mit Index 0 an, während der Server läuft.

    nvidia-smi --query-gpu=index,name,memory.used,memory.total,utilization.gpu --format=csv -i 0

    Das solltest du sehen

    • Belegter Speicher nahe an dem, was die Engine bekommen hat.
    Hilfe und Quellen
  2. Schritt 14

    Server ansehen

    Prüfe, ob vllm-qwen3-8b läuft und was es zuletzt gemeldet hat.

    Kommt nach Schritt 12

    docker ps --filter name=vllm-qwen3-8b --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
    docker logs --tail 20 vllm-qwen3-8b

    Das solltest du sehen

    • Der Server läuft, und seine letzten Logzeilen zeigen keine Fehler.
    Hilfe und Quellen

Mit dem Rechner vergleichen

  1. Schritt 15

    Mit dem Rechner vergleichen

    Der Rechner erwartete 22,76 GiB auf jeder GPU, davon 90 Prozent der GPU für die Engine. Das eigene Log des Servers sagt, was er für die Gewichte genommen hat und was für den KV cache bleibt.

    Kommt nach Schritt 12

    docker logs vllm-qwen3-8b 2>&1 | grep -E 'Model loading took|Available KV cache memory|GPU KV cache size'

    Das solltest du sehen

    • Zeilen mit dem Speicher, den die Gewichte belegt haben, dem Speicher, der für den KV cache bleibt, und wie viele Tokens der KV cache aufnehmen kann.
    Hilfe und Quellen

    Woher die Werte kommen

    • Der Rechner: 22,76 GiB benötigt von 86,40 GiB nutzbar auf jeder GPU.

5Aufräumen

Stoppe den Server und entferne, was diese Schritte erzeugt haben.
  1. Schritt 16

    Stoppen

    Kann Dinge stoppen oder entfernen

    Stoppe vllm-qwen3-8b und gib die GPUs frei.

    Kommt nach Schritt 9

    docker stop vllm-qwen3-8b && docker rm vllm-qwen3-8b

    Das solltest du sehen

    • Keine Ausgabe, und die GPUs sind frei.

    Zu beachten

    • Der Endpoint antwortet nicht mehr.
    Hilfe und Quellen

Berechnung

  • Deine Eingabe
  • Offizielle Spezifikation
  • Berechnetes Ergebnis
  • Schätzung
  • Heuristik
  • Theoretische Grenze
›Gewichte
  1. Rohgröße der Gewichte

    Berechnetes Ergebnis

    Rohgröße der Gewichte = Parameter × nominale Bits pro Parameter ÷ 8

    = Deine Eingabe: 8,19 Mrd. Parameter × Offizielle Spezifikation: 16 bit/param ÷ 8

    = 16,38 GB

  2. Gewichte im Speicher

    Berechnetes Ergebnis

    Gewichte im Speicher = Parameter × effektive Bits pro Parameter ÷ 8

    = Deine Eingabe: 8,19 Mrd. Parameter × Offizielle Spezifikation: 16 bit/param ÷ 8

    = 16,38 GB

›KV cache
  1. KV cache pro Token

    Berechnetes Ergebnis

    KV cache pro Token = 2 × Schichten mit KV cache × KV Heads × Head-Dimension × Bits pro Wert im KV cache ÷ 8

    = 2 × Deine Eingabe: 36 × Deine Eingabe: 8 × Deine Eingabe: 128 × Deine Eingabe: 16 bit ÷ 8

    = 147,46 KB/token

  2. KV cache pro Sequenz

    Berechnetes Ergebnis

    KV cache pro Sequenz = KV cache pro Token × Kontextlänge

    = Berechnetes Ergebnis: 147,46 KB/token × Deine Eingabe: 8.192 Tokens

    = 1,21 GB

  3. KV cache

    Berechnetes Ergebnis

    KV cache = KV cache pro Sequenz × gleichzeitige Sequenzen

    = Berechnetes Ergebnis: 1,21 GB × Deine Eingabe: 4

    = 4,83 GB

›Speicher pro GPU und gesamt
  1. Benötigter Speicher pro GPU

    Schätzung

    Benötigter Speicher pro GPU = Gewichte im Speicher + KV cache + Runtime-Overhead

    = Berechnetes Ergebnis: 16,38 GB + Berechnetes Ergebnis: 4,83 GB + Heuristik: 3,22 GB

    = 24,43 GB

  2. Modell mit Runtime-Overhead

    Schätzung

    Modell mit Runtime-Overhead = Gewichte im Speicher + Runtime-Overhead

    = Berechnetes Ergebnis: 16,38 GB + Heuristik: 3,22 GB

    = 19,6 GB

›Ein Decode-Schritt und seine Grenzen
  1. Pro GPU gelesene Gewichte in einem Schritt

    Berechnetes Ergebnis

    Pro GPU gelesene Gewichte in einem Schritt = Gewichte im Speicher

    = Berechnetes Ergebnis: 16,38 GB

    = 16,38 GB

  2. Pro GPU gelesene Bytes in einem Schritt

    Berechnetes Ergebnis

    Pro GPU gelesene Bytes in einem Schritt = Pro GPU gelesene Gewichte in einem Schritt + KV cache

    = Berechnetes Ergebnis: 16,38 GB + Berechnetes Ergebnis: 4,83 GB

    = 21,21 GB

  3. Zeit, die Gewichte einmal zu lesen

    Theoretische Grenze

    Zeit, die Gewichte einmal zu lesen = Gewichte im Speicher ÷ GPU-Speicherbandbreite

    = Berechnetes Ergebnis: 16,38 GB ÷ Offizielle Spezifikation: 1,6 TB/s

    = 10,26 ms

  4. Kürzeste Zeit eines Schritts

    Theoretische Grenze

    Kürzeste Zeit eines Schritts = Pro GPU gelesene Bytes in einem Schritt ÷ GPU-Speicherbandbreite

    = Berechnetes Ergebnis: 21,21 GB ÷ Offizielle Spezifikation: 1,6 TB/s

    = 13,28 ms

  5. Geschwindigkeitsgrenze einer Sequenz

    Theoretische Grenze

    Geschwindigkeitsgrenze einer Sequenz = 1 ÷ Kürzeste Zeit eines Schritts

    = 1 ÷ Theoretische Grenze: 13,28 ms

    = 75,28 tok/s

  6. Geschwindigkeitsgrenze aller Sequenzen

    Theoretische Grenze

    Geschwindigkeitsgrenze aller Sequenzen = gleichzeitige Sequenzen ÷ Kürzeste Zeit eines Schritts

    = Deine Eingabe: 4 ÷ Theoretische Grenze: 13,28 ms

    = 301,13 tok/s

›Break-even-Punkte
  1. Batch, ab dem die Rechenleistung zum Engpass wird

    Theoretische Grenze

    Batch, ab dem die Rechenleistung zum Engpass wird = (Spitzenrechenleistung, dense × 1.000.000.000.000 ÷ GPU-Speicherbandbreite) × effektive Bits pro Parameter ÷ 8 ÷ 2

    = (Schätzung: 500 TFLOPS × 1.000.000.000.000 ÷ Offizielle Spezifikation: 1,6 TB/s) × Offizielle Spezifikation: 16 bit/param ÷ 8 ÷ 2

    = 313,09

Annahmen

  • Annahme: Der KV cache liegt in Blöcken (in vLLM 16 Tokens), daher ist die echte Kapazität etwas kleiner als die angezeigte Zahl.
  • Heuristik: Der Runtime-Overhead beträgt 3,22 GB pro GPU für CUDA-Kontext, Aktivierungen und Graphs. Er ist eine Heuristik: vLLM hat bei einem 8B-Modell 2,57 GiB gemessen, und der Wert variiert mit Engine und Einstellungen. Ändern
  • Annahme: Nur 90 % des GPU-Speichers geht an das Modell. Serving-Engines reservieren den Rest: Der Standard von vLLM ist 92 Prozent (Dokumentation von Version 0.32). Ändern
  • Annahme: Ein Setup passt komfortabel, wenn mindestens 10 % des nutzbaren Speichers frei bleiben. Ändern
  • Annahme: NVIDIA gibt GPU-Speicher in GB an, und die Hardware hat so viele GiB: Eine H100 80 GB hat 80 GiB, und nvidia-smi zeigt 79,6. Die wenigen Prozent, die ECC und Treiber zurückhalten, deckt der nutzbare Anteil ab.
  • Annahme: Die Präzision des KV cache wird getrennt von der Präzision der Gewichte gesetzt. Die Quantisierung der Gewichte verkleinert weder den KV cache noch den Overhead. Ändern
  • Annahme: Es wird angenommen, dass jede Sequenz gleichzeitig den vollen Kontext nutzt, der schlechteste Fall. Echter Traffic ist meist kürzer. Ändern
  • Annahme: Es wird angenommen, dass sich mehrere GPUs das Modell per Tensor parallelism teilen, wie vLLM es tut: Gewichte und KV Heads werden aufgeteilt, und jede GPU zahlt den Runtime-Overhead.
  • Theoretische Grenze: Das sind Grenzen, keine Prognosen. Echte Engines bringen Kernel-, Scheduling- und Netzwerkzeit mit: Veröffentlichte vLLM-Messungen liefen 30 bis 270 Prozent langsamer als dieselbe Formel, die Läufe des Workshops auf einer einzelnen GPU 10 bis 15 Prozent.
  • Annahme: Kein Speculative Decoding. Es kann mehrere Tokens in einem Schritt erzeugen und eine Grenze pro Sequenz übertreffen.
  • Annahme: Jedes Gewicht außerhalb der Experten gilt als in jedem Schritt gelesen. Embedding-Lookups lesen nur wenige Zeilen der Eingabetabelle, daher liegt das echte Minimum bei kleinen Modellen einige Prozent niedriger.
  • Theoretische Grenze: Der Batch, bei dem die Rechenzeit eines Schritts seiner Speicherzeit entspricht, aus dem Dense-Spitzenwert des Formats, in dem die Gewichte rechnen. Die Latency beginnt schon davor zu steigen. Bei einem Mixture of Experts braucht jeder Experte so viele eigene Tokens.

Weiter mit

Dein Modell und deine Einstellungen werden übernommen.

13,28 ms75,28 tok/sGeschwindigkeitsgrenze einer Sequenz

Warum das wichtig ist

Jeder Decoding-Schritt liest die benötigten Gewichte und den Cache jeder laufenden Sequenz einmal, daher kann ein Schritt nicht kürzer sein als diese Bytes geteilt durch die Speicherbandbreite. Die Bandbreite bestimmt damit, wie schnell ein Modell antwortet, lange bevor die Rechenleistung der GPU es tut. Die Grenzen hier sind Physik. Echte Engines sind langsamer, und eine Messung zeigt dir, um wie viel.

So liest du das Ergebnis

Der kürzeste Schritt ergibt sich aus den Bytes, die eine GPU in einem Schritt liest, geteilt durch ihre Bandbreite, und die Geschwindigkeitsgrenzen ergeben sich daraus. Es sind Grenzen, nie Prognosen: Veröffentlichte vLLM-Messungen liefen 30 bis 270 Prozent langsamer. Gib deine eigene gemessene Zeit pro Token ein, um zu sehen, wie nah du dran bist. Der Break-even-Batch ist die Stelle, ab der die Rechenleistung zählt. Bei einem Mixture of Experts wachsen die Bytes mit dem Batch, weil auf mehr Experten zugegriffen wird.

Lokale KI und Souveränität

Ein Modell auf Hardware zu betreiben, die du kontrollierst, ist ein Baustein für eine Souveränitätsentscheidung. Es macht ein Deployment nicht von selbst souverän, DSGVO-konform oder konform mit dem EU AI Act.

Diese Tools stammen aus dem Workshop KI ohne Cloud.

← Alle Tools