Nach dem Download des Modells kann es beim Ausführen zu einem Speicher- oder Videospeicherfehler kommen. Das ist wahrscheinlich das Letzte, was man beim Testen lokaler Modelle sehen möchte.
Wie bereits eingeführt, muss das Modell seine Gewichtungen beim Ausführen in den Arbeitsspeicher oder Videospeicher laden, und das Generieren von Antworten erfordert ebenfalls zusätzlichen Speicher. Wenn Ihr Gerät das Modell nicht aufnehmen kann, können Sie neben dem Wechsel zu einem kleineren Modell auch prüfen, ob eine quantisierte Version verfügbar ist.
Die Gewichtungen eines Modells bestehen aus einer großen Anzahl von Zahlenwerten, und das Speichern jedes Wertes erfordert einen bestimmten Speicherplatz. Die Quantisierung reduziert den Ressourcenverbrauch des Modells durch Verringern der Genauigkeit dieser Zahlenrepresentationen. Zum Beispiel können Gewichtungen, die ursprünglich als 16-Bit-Gleitkommazahlen gespeichert wurden, in vorwiegend 8-Bit- oder 4-Bit-Low-Precision-Representationen umgewandelt werden. Die Anzahl der Parameter ändert sich in der Regel nicht, aber der von jedem Parameter belegte Speicherplatz wird kleiner.
Am Beispiel eines Modells mit 7 Milliarden Parameter und nur der Betrachtung der Gewichtungen selbst ohne Quantisierungsaufwand erhalten wir die folgenden groben Schätzungen:
Gewichtungsrepräsentation | Theoretische Gewichtungsgröße |
16 Bit | Ungefähr 14 GB |
8 Bit | Ungefähr 7 GB |
4 Bit | Ungefähr 3,5 GB |
Die GB-Werte hier werden in dezimalen Einheiten berechnet. Tatsächliche quantisierte Dateien speichern auch Informationen wie Skalierungsfaktoren und können gemischte Genauigkeiten verwenden, daher kann die tatsächliche Größe von der Schätzung abweichen.
Für gewöhnliche Nutzer ist der direkteste Vorteil der Quantisierung, dass Modelldateien kleiner werden, Speicherplatz für Download und Speicherung sparen und beim Ausführen weniger Arbeitsspeicher oder Videospeicher für Gewichtungen benötigen. Wenn Hardware und Inferenzframeworks dies unterstützen, kann die Quantisierung auch die Inferenzgeschwindigkeit verbessern.
Die Verkleinerung der Datei auf ein Viertel ihrer ursprünglichen Größe bedeutet jedoch nicht, dass sich die Antwortgeschwindigkeit um das Vierfache erhöht.
Die Verringerung der Genauigkeit kann auch die Antwortqualität beeinflussen, abhängig vom Modell, der Quantisierungsmethode und der Aufgabe. Bei der Wahl einer quantisierten Version sollten Sie neben der Bestätigung, dass sie lauffähig ist, auch mit eigenen Fragen testen, ob die Antworten noch zuverlässig sind.
Für Modelle, die bereits heruntergeladen oder feinabgestimmt wurden, ist der gängige Ansatz die , die Gewichtungen und andere numerische Werte nach Abschluss des Modelltrainings in niedrigere Genauigkeitsrepresentationen umwandelt. Einige Methoden erfordern einen kleinen Satz repräsentativer Daten, um den Quantisierungsprozess zu kalibrieren und den Fehler zu minimieren.
Anmelden an der Diskussion teilnehmen
Eine andere Kategorie ist die Quantisierungsbewusstes Training (QAT), die die Auswirkungen der Quantisierung während des Trainings simuliert, sodass sich das Modell im Voraus an Low-Precision-Representationen anpassen kann.
Beim Ausführen von Modellen mit Ollama sehen Sie häufig Namen wie GGUF, Q4, Q8 usw. Diese Namen beziehen sich hauptsächlich auf das Speicherformat und die Quantisierungsmethode des Modells und sind ein wichtiger Grund, warum große Modelle auf Personal Computern ausgeführt werden können.
Im August 2023 führte Georgi Gerganov das GGUF-Format ein. Zu den Hauptvorteilen gehören Eindatei-Deployment, Erweiterbarkeit, Speicher-Mapping-Unterstützung, vollständige Informationen und Benutzerfreundlichkeit. Eine GGUF-Datei umfasst einen Dateikopf, Metadaten-Schlüssel-Wert-Paare und Tensor-Informationen. Diese Komponenten definieren zusammen die Struktur und das Verhalten des Modells. Wie unten gezeigt, ist GGUF ein Modelldateiformat für die Inferenz großer Modelle, das derzeit von lokalen Inferenzwerkzeugen wie llama.cpp und Ollama weit verbreitet verwendet wird. Ollama kapselt die Verarbeitung des GGUF-Formats, die Modellquantisierung und den Modellladeprozess, sodass Benutzer die Modellformate nicht selbst umwandeln müssen — sie können vorkuantisierte Modelle direkt herunterladen und ausführen. Eine GGUF-Datei enthält nicht nur Modellparameter, sondern auch grundlegende Modellinformationen, Modellarchitektur und Tensor-Daten. GGUF organisiert diese Informationen durch ein einheitliches Dateiformat, sodass Inferenzwerkzeuge wie llama.cpp sie direkt lesen und laden können. Seine grundlegende Struktur ist in der folgenden Abbildung dargestellt.
ModelScope unterstützt auch die Anzeige strukturierter GGUF-Dateien, wie unten gezeigt. Wenn Inferenzwerkzeuge GGUF-Dateien laden, können sie diese Informationen direkt lesen und das Modell laden, ohne separate Modellkonfigurationsdateien vorbereiten zu müssen.
GGUF selbst ist nur ein Modelldateiformat und reduziert nicht direkt die RAM- oder VRAM-Nutzung des Modells. Was den Ressourcenverbrauch des Modells tatsächlich reduziert, ist die Quantisierung.
In llama.cpp und GGUF-Modellen repräsentieren Q4, Q5, Q8, Q4_K_M verschiedene Quantisierungsnamen. Hier steht Q für Quantisierung, und die folgende Nummer gibt die hauptsächlich verwendete Quantisierungsbreite in Bits an. Zum Beispiel bedeutet Q4 vorwiegend 4-Bit-Quantisierung und Q8 vorwiegend 8-Bit-Quantisierung.
Beachten Sie, dass Q4 nicht bedeutet, dass alle Parameter im Modell einheitlich 4-Bit-Representation verwenden. Am Beispiel des häufigen Q4_K_M gehört es zum K-quant-Quantisierungstyp in llama.cpp. Das Q4 im Namen bedeutet vorwiegend 4-Bit-Quantisierung, K zeigt die Verwendung des K-quant-Quantisierungsschemas an, und M bezeichnet die Medium-Konfiguration innerhalb dieses Schemas. In der Praxis können verschiedene Tensoren im Modell unterschiedliche Quantisierungsgenauigkeiten verwenden, anstatt dass alle Parameter einheitlich 4-Bit-Representation verwenden, wie in der folgenden Abbildung gezeigt.
Bei der Wahl eines GGUF-Modells sollten Sie zuerst bestätigen, dass Ihr Inferenzwerkzeug das Modell unterstützt, und dann die spezifische Quantisierungsversion betrachten. Eine niedrigere Quantisierungsgenauigkeit reduziert in der Regel die RAM- und VRAM-Nutzung, was es einfacher macht, das Modell auf gewöhnlichen Geräten auszuführen, aber möglicherweise einen Teil der Modellleistung opfert. Eine höhere Quantisierungsgenauigkeit bewahrt in der Regel mehr der ursprünglichen Modellfähigkeiten, erfordert aber auch mehr Hardware-Ressourcen.
Wenn eine Version bereits nahe an den RAM- oder VRAM-Grenzen Ihres Geräts liegt, sollten Sie in Betracht ziehen, zu einer kleineren Version zu wechseln, um Spielraum für Kontext und Laufzeitvorgänge zu lassen. Wenn die Ressourcen ausreichen, können Sie mit denselben Fragen die Antworten verschiedener Versionen vergleichen, wobei Sie besonders auf Ihre Ziel Aufgaben wie Informationsextraktion, Codegenerierung oder strukturierte Ausgabe achten sollten.
Bestätigen Sie zuerst einen stabilen Betrieb, dann überprüfen Sie die Antwortqualität. Auf diese Weise wird die gewählte quantisierte Version besser zu Ihrem Gerät und Anwendungsfall passen.