Die Auslegungsformel
Modellgewichte benötigen eine feste Anzahl von Bytes pro Parameter, die durch die Genauigkeit festgelegt ist:GGUF Q4_K_M ist eine gemischte Genauigkeit und ergibt im Durchschnitt etwa 0.5–0.56 Bytes pro Parameter statt einem festen 0.5, da K-Quants verschiedenen Tensoren unterschiedliche Bitbreiten zuweisen – siehe Quantisierung, um diese Namen zu lesen.
Multiplizieren Sie die Parameteranzahl mit den Bytes pro Parameter, um die reine Gewichtsgröße zu erhalten, und addieren Sie dann etwa 20% für den KV-Cache, Aktivierungen und Framework-Overhead bei einer moderaten Kontextlänge:
29 GB bei bf16, ~15 GB bei 8-Bit und ~9.5 GB bei 4-Bit – siehe den Hugging Face-Leitfaden zur Optimierung von LLMs. Längere Kontexte fügen zusätzlich zu dieser 1.2×-Basis mehr KV-Cache hinzu; siehe KV-Cache und Kontext, warum sich das so skaliert.
Diese Formel ist eine Planungsschätzung für die Gewichtsgröße, nicht der genaue Ist-Wert. Die reale Zahl ist die tatsächliche
GGUF-Dateigröße für die exakte Quantisierung, die Sie ausführen möchten, plus der KV-Cache für Ihre Zielkontextlänge. Siehe den GPU-Modell-Passungsleitfaden für durchgerechnete Beispiele und einen interaktiven Schätzer.Was tatsächlich um Speicher konkurriert
Drei Dinge teilen sich denselben Pool an VRAM (oder Unified Memory):- Modellgewichte – fest, sobald das Modell geladen ist, unabhängig von der Prompt-Länge.
- KV-Cache – wächst mit der Kontextlänge und der Batch-Größe; siehe KV-Cache und Kontext.
- Aktivierungen und Framework-Overhead – kleinerer Arbeitsspeicher, der während jedes Forward-Passes benötigt wird, ungefähr das, was der
1.2×-Faktor in der obigen Formel berücksichtigt.
Auslagerung: Wenn ein Modell nicht vollständig passt
Wenn die Gewichte eines Modells nicht vollständig in den VRAM Ihrer GPU passen, ermöglichen Backends wiellama.cpp, das Modell zwischen GPU und CPU aufzuteilen, anstatt komplett zu scheitern. Dies wird mit der --n-gpu-layers-Flag (Kurzform -ngl) gesteuert: Sie legt fest, wie viele der Schichten des Modells auf die GPU geladen werden, während der Rest im System-RAM verbleibt.
- Vollständige Auslagerung (
-nglhoch genug gesetzt, um jede Schicht abzudecken): Das gesamte Modell läuft auf der GPU mit voller GPU-Geschwindigkeit. - Partielle Auslagerung: Einige Schichten laufen auf der GPU, der Rest auf der CPU unter Verwendung des System-RAM. Dies ermöglicht es, dass ein Modell, das größer als Ihr VRAM ist, tatsächlich geladen und ausgeführt wird, jedoch zu einem Preis.
- Keine Auslagerung (
-ngl 0): Das gesamte Modell läuft nur auf der CPU.
llama.cpp basieren.
Wie Unified Memory das Bild verändert
Auf Systemen mit Unified Memory – Apple Silicon und AMDs Strix Halo-Plattform – teilen sich CPU und GPU einen einzigen Speicherpool, anstatt dass die GPU ihren eigenen separaten, kleineren VRAM hat. Dies verändert die Auslagerungsrechnung:- Kapazität: Ein Unified-Memory-System kann ein viel größeres Modell laden als eine diskrete GPU mit festem VRAM, da der “VRAM”-Pool so groß sein kann wie der gesamte RAM des Geräts (bis zum für die Grafikkarte zugewiesenen Anteil).
- Bandbreite: Derselbe Pool läuft mit einer geringeren Bandbreite als dedizierter GDDR-Speicher auf einer diskreten GPU. Ein Modell, das vollständig in Unified Memory passt, dekodiert immer noch langsamer als dasselbe Modell, das vollständig in den VRAM einer diskreten GPU passt, da die Dekodiergeschwindigkeit der Bandbreite folgt, nicht nur der Kapazität.
Tiefer einsteigen
Wie Inferenz funktioniert
Warum die Dekodierung überhaupt speicherbandbreitenbegrenzt ist.
KV-Cache und Kontext
Der Teil der Speichernutzung, der mit Ihrer Konversation wächst, nicht nur mit Ihrem Modell.
Quantisierung
Reduzieren Sie die Bytes pro Parameter, um den größten Eingabewert der Auslegungsformel zu ändern.
GPU-Modell-Passungsleitfaden
VRAM-Tabellen, ein interaktiver Schätzer und was auf gängiger Hardware passt.
Sobald es passt und läuft
Auslegung und Auslagerung bringen ein Modell auf Ihrer Hardware zum Laufen, sei es vollständig auf der GPU oder aufgeteilt mit der CPU. Sobald es Anfragen auflocalhost beantwortet, ist der nächste Schritt, von überall darauf zuzugreifen.
Geben Sie ihm einen stabilen Endpunkt
Tokios wählt, hostet oder feinabstimmt das Modell nicht – sobald es lokal läuft, verwandelt Tokios es in einen stabilen, authentifizierten Endpunkt, den Sie von überall aus aufrufen können.