Daten
Was ist Safetensors?
Safetensors ist ein Binärformat zum Speichern und Verteilen von Tensorwerten des maschinellen Lernens. Die Datei beginnt mit einer 8 Byte langen little-endian Headerlänge, gefolgt von einem UTF-8-JSON-Header mit Tensorname, dtype, shape und Datenoffsets sowie einem Bytepuffer mit den Tensorwerten. Das Format enthält nicht allein die Modellarchitektur oder ein ausführbares Programm. Anders als Pickle-basierte Serialisierung ist es nicht dafür gedacht, beliebige Objekte durch Ausführen eingebetteten Rekonstruktionscodes wiederherzustellen. Daraus folgt weder, dass eine Quelle vertrauenswürdig ist, noch dass jeder Reader fehlerfrei oder ein Modell sicher ist.
Wann dieses Format geeignet ist
- Tensoren und Basis-Metadaten statt beliebiger Python-Objekte austauschen
- Ausgewählte Tensoren untersuchen und laden
Wann dieses Format ungeeignet ist
- Modellarchitektur und Trainingscode allein damit verteilen
- Die Erweiterung als Beweis für Herkunft oder Sicherheit ansehen
Häufige Einsatzbereiche
- Tensor-Gewichte für maschinelles Lernen speichern und verteilen
- Gewichte zwischen unterstützten Frameworks laden
Eigenschaften
- Längenpräfixierter JSON-Header beschreibt Tensor-Namen Typen Formen und Offsets
- Tensorwerte liegen in einem zusammenhängenden little-endian Bytepuffer
- Header-Metadaten unterstützen die Auswahl einzelner Tensoren
Vor- und Nachteile
Vorteile
- Gewichtsaustausch ohne beliebige Objektwiederherstellung wie bei Pickle
- Namen und Formen lassen sich ohne Lesen sämtlicher Gewichtsdaten untersuchen
- Kompatible Reader können Memory Mapping oder verzögertes Laden unterstützen
Nachteile
- Modellarchitektur Inferenzcode und Vorverarbeitung sind meist separat
- Nicht für beliebige Python-Objekte außerhalb von Tensoren gedacht
- Nutzung hängt von dtype-Unterstützung und Shard-Indizes des Frameworks ab
Öffnen und konvertieren
So öffnen Sie die Datei
Verwenden Sie eine Safetensors-kompatible Bibliothek oder ein Modellwerkzeug. Unterstützte Werkzeuge können Tensor-Namen, dtypes und shapes untersuchen, bevor alle Gewichte auf ein Gerät geladen werden. Ein JSON-Header macht nicht die gesamte Datei zu einem JSON-Textdokument.
So konvertieren Sie die Datei
Speichern Sie Tensor-Gewichte mit einer vom Modellframework unterstützten API. Eine Konvertierung von einer Pickle-basierten Eingabe kann diese deserialisieren; laden Sie eine nicht vertrauenswürdige Quelldatei daher nicht unbedacht. Vergleichen Sie anschließend Tensor-Namen, shapes, dtypes, Elementanzahl und Modellausgaben.
Hinweise
- Safetensors vermeidet Pickle-artige Objektwiederherstellung ist aber nicht unbedingt sicher; Quelle Revision und Hash prüfen
- Gepflegte Reader verwenden und Ressourcenbedarf durch sehr große Shapes oder fehlerhafte Header berücksichtigen
- Gewichtedateien enthalten möglicherweise nicht Modellkonfiguration Tokenizer und notwendigen Code
Häufige Fragen
Enthält Safetensors das gesamte Modell?
Meist speichert es Tensor-Gewichte und zugehörige Metadaten. Architektur, Tokenizer, Inferenzcode und Konfiguration können separat sein.
Ist jeder Safetensors-Download sicher?
Nein. Das Format hilft, Pickle-basierte beliebige Objektwiederherstellung zu vermeiden; prüfen Sie trotzdem Quelle und Revision und verwenden Sie gepflegte Reader.
Kann ich Gewichte allein anhand des Headers validieren?
Der Header zeigt Namen, dtypes, shapes und Offsets, aber nicht die Tensorwerte und validiert das Modellverhalten nicht vollständig.