Einführung in das GGUF-Dateiformat für große Modelle
Frameworks wie PyTorch werden üblicherweise für die Entwicklung großer Sprachmodelle verwendet, und ihre Pre-Training-Ergebnisse werden meist im entsprechenden Binärformat gespeichert, zum Beispiel ist die pt-Suffixdatei meist das binäre Pre-Training-Ergebnis, das vom PyTorch-Framework gespeichert wird.
Ein sehr wichtiges Problem bei der Speicherung großer Modelle ist jedoch, dass deren Modelldateien riesig sind und die Struktur, Parameter usw. des Modells ebenfalls den Schlussfolgerungseffekt und die Leistung des Modells beeinflussen. Um große Modelle effizienter im Speicher und Austausch zu machen, gibt es große Modelldateien in verschiedenen Formaten. Unter ihnen ist GGUF ein sehr wichtiges Dateiformat für große Modelle.
GGUF-Datei steht für GPT-Generated Unified Format, ein großes Modell-Dateiformat, das von Georgi Gerganov definiert und veröffentlicht wurde. Georgi Gerganov ist der Gründer des berühmten Open-Source-Projekts llama.cpp.
GGUF ist eine Spezifikation für Binärformat-Dateien, und die ursprünglichen Ergebnisse des Vortrainings großer Modelle werden in das GGUF-Format umgewandelt, können schneller geladen und verwendet werden und weniger Ressourcen benötigen. Der Grund dafür ist, dass GGUF eine Vielzahl von Technologien verwendet, um die Pre-Training-Ergebnisse großer Modelle zu erhalten, einschließlich kompakter binärer Codierungsformate, optimierter Datenstrukturen, Speicherzuordnung usw.
GGUF-, GGML-, GGMF- und GGJT-Unterschiede
GGUF ist ein Binärformat, das darauf ausgelegt ist, Modelle schnell zu laden und zu speichern. Es ist das Nachfolge-Dateiformat von GGML, GGMF und GGJT und sorgt für Klarheit, indem es alle Informationen enthält, die zum Laden des Modells benötigt werden. Es ist außerdem so konzipiert, dass es skalierbar ist, sodass neue Informationen dem Modell hinzugefügt werden können, ohne die Kompatibilität zu unterbrechen.
- GGML (Keine Version): Baseline-Format ohne Versionierung oder Ausrichtung.
- GGMF (Versioned): Dasselbe wie GGML, aber mit Versionierung.
- GGJT: Tensoren ausrichten, um die Verwendung mit mmaps zu ermöglichen, die ausgerichtet werden müssen. v1, v2 und v3 sind gleich, aber spätere Versionen verwenden andere Quantisierungsschemata, die mit früheren Versionen nicht kompatibel sind.
Warum sich große Modelldateien im GGUF-Format gut leisten
Das GGUF-Dateiformat kann Modelle aufgrund mehrerer wichtiger Funktionen schneller laden:
Binärformat: GGUF kann als Binärformat schneller gelesen und analysiert werden als Textdateien. Binärdateien sind im Allgemeinen kompakter, was die I/O-Operationen und die Verarbeitungszeit für Lesen und Parsen reduziert.
Optimierte Datenstrukturen: GGUF kann speziell optimierte Datenstrukturen verwenden, die schnellen Zugriff und das Laden von Modelldaten ermöglichen. Beispielsweise können Daten bei Bedarf für die Speicherbelastung organisiert werden, um die Verarbeitung bei der Last zu reduzieren.
Speicherzuordnung (mmap)-Kompatibilität: Wenn GGUF Speicherzuordnung (mmap) unterstützt, ermöglicht dies die direkte Abbildung von Daten von der Festplatte in den Speicheradressraum, was zu einem schnelleren Datenladen führt. So können die Daten abgerufen werden, ohne die gesamte Datei tatsächlich zu laden, was besonders bei großen Modellen effektiv ist.
Effiziente Serialisierung und Deserialisierung: GGUF kann effiziente Serialisierungs- und Deserialisierungsmethoden verwenden, was bedeutet, dass Modelldaten schnell in nutzbare Formate umgewandelt werden können.
Wenige Abhängigkeiten und externe Referenzen: Wenn das GGUF-Format so konzipiert ist, dass es in sich geschlossen ist, d. h. alle erforderlichen Informationen in einer einzigen Datei gespeichert sind, reduziert dies die externe Dateisuche und Leseoperationen beim Parsen und Laden des Modells.
Datenkompression: Das GGUF-Format kann effektive Datenkompressionstechniken verwenden, die Dateigrößen reduzieren und somit den Leseprozess beschleunigen.
Optimierte Indexierungs- und Zugriffsmechanismen: Die Indexierungs- und Zugriffsmechanismen für Daten in Dateien können optimiert werden, um das Finden und Laden bestimmter Datenfragmente schneller zu ermöglichen.
Zusammenfassend erreicht GGUF eine schnelle Modellladung durch verschiedene Optimierungsmethoden, was besonders für Szenarien wichtig ist, die häufige Belastung verschiedener Modelle erfordern.
GGUF-Beispieldatei:Der Hyperlink-Login ist sichtbar. llama.cpp Projektadresse:Der Hyperlink-Login ist sichtbar. |