Co jsou Safetensors a proč jsou lepší než .ckpt (pickle tensor)

V rubrikách AI/ML, Open Source Štítky , , , , ,
Save and Share:

Safetensors je pozoruhodný formát modelu určený pro bezpečné ukládání tenzorů, který se ve srovnání s mnoha alternativami v oboru pyšní impozantní rychlostí a výkonem. Safetensors je nejen neuvěřitelně rychlý, ale byl také navržen s ohledem na jednoduchost a bezpečnost, což ho odlišuje od mnoha tradičních formátů používaných v oblasti strojového učení.

Proč si vybrat Safetensors?

Vzhledem k množství formátů dostupných pro strojové učení a ukládání dat se možná ptáte, čím se Safetensors liší. Pojďme se na chvíli zastavit a porovnat některé z těchto formátů, abychom pochopili, jak Safetensors obstojí v klíčových parametrech:

  • Bezpečný: Spustí náhodně stažený soubor libovolný kód?
  • Zero-copy (bez kopírování): Vyžaduje čtení souboru více paměti než původní soubor?
  • Lazy loading (líné načítání): Lze soubor zkontrolovat bez načtení všeho? A lze načíst pouze některé tenzory v něm bez prohledávání celého souboru (důležité v distribuovaném prostředí)?
  • Kontrola rozložení: Lze řídit umístění tenzorů v souboru, aby byl zajištěn rychlý přístup k jednotlivým tenzorům?
  • Žádný limit velikosti souboru: Existuje limit velikosti souboru?
  • Flexibilita: Lze do formátu uložit vlastní kód a později ho použít bez jakéhokoli dalšího kódu?
  • Bfloat16: Podporuje formát nativně bfloat16 bez nutnosti podivných obezliček?

Každý symbol ✔ představuje přítomnost funkce, ❌ nepřítomnost, ~ částečnou přítomnost a ? neznámou přítomnost.

FormátBezpečnýZero-copyLazy loadingŽádný limit velikosti souboruKontrola rozloženíFlexibilitaBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Z tohoto srovnání je vidět, že Safetensors splňuje nebo překonává funkce nabízené jinými formáty modelů. Zvláště pozoruhodná je jeho schopnost ‚zero-copy‘ manipulace s daty a líného načítání, což může významně zvýšit efektivitu zpracování dat v úlohách strojového učení.

Některá pozoruhodná srovnání

Zatímco všechny formáty mají své jedinečné silné stránky, pojďme se podívat, jak si Safetensors stojí v porovnání s některými běžněji používanými:

  • Pickle (PyTorch): Široce používaný formát, ale pickle má významnou nevýhodu – je nebezpečný, protože umožňuje spouštění libovolného kódu.
  • H5 (Tensorflow): I když je bezpečný, nepodporuje zero-copy, funkci zásadní pro efektivní manipulaci s daty.
  • SavedModel (Tensorflow): Tento formát je specifický pro Tensorflow a postrádá flexibilitu pro jiné aplikace.
  • Numpy (npz): I když je populární, tento formát nepodporuje bfloat16, což je stále důležitější funkce ve světě ML.

Pod kapotou Safetensors

Ponoříme-li se trochu hlouběji do Safetensors, zjistíme, že se nejedná jen o datový formát, ale o kombinaci promyšlených konstrukčních rozhodnutí, která zvyšují bezpečnost, efektivitu a užitečnost:

  • Zero-copy (bez kopírování): Návrh Safetensors umožňuje skutečné zero-copy na CPU, pokud je soubor již v mezipaměti. Na GPU, i když je kopie vždy nutná kvůli absenci diskové mezipaměti, návrh obchází potřebu alokovat všechny tenzory na CPU v daném okamžiku.
  • Endianita: Safetensors používá little-endian pořadí, což je oblíbená volba v ukládání dat.
  • Pořadí: Přijímá ‚C‘ neboli řádkové pořadí. Tato volba se shoduje s převládajícím standardem v ukládání dat.
  • Krok: Krok není podporován. Všechny tenzory musí být zabaleny před serializací. Toto konstrukční rozhodnutí bylo učiněno na základě současných vzorců použití v serializovaných formátech.

Něco navíc

Kromě toho, že je Safetensors efektivní a bezpečný formát pro ukládání dat, přináší také některé další výhody:

  • Prevence útoků DOS: Návrh Safetensors zmírňuje možnost, že by škodlivé soubory mohly způsobit útoky DOS. Existuje limit na velikost hlavičky, aby se zabránilo parsování extrémně velkých souborů JSON, a existuje záruka, že se adresy v souboru nepřekrývají, což znamená, že načtení souboru by nikdy nemělo překročit velikost souboru v paměti.
  • Rychlejší načítání: Safetensors obchází extra kopii CPU v PyTorch, což umožňuje extrémně rychlé časy načítání CPU ve srovnání s pickle. Časy načítání GPU jsou stejně rychlé nebo rychlejší než jejich ekvivalent v PyTorch.
  • Lazy Loading (líné načítání): V distribuovaných prostředích (víceuzlových nebo vícejádrových GPU) umožňuje Safetensors načítat pouze část tenzorů, což výrazně urychluje časy načítání modelů a zlepšuje zpětnovazební smyčky vývoje.

V praxi

Safetensors se již široce používá u předních podniků v oblasti AI, jako jsou  Hugging FaceEleutherAI, a StabilityAI. Mezi významné projekty využívající Safetensors patří:

Závěrem lze říci, že Safetensors se svým jedinečným souborem funkcí a výhod má všechny předpoklady stát se revoluční novinkou ve světě strojového učení a ukládání dat. Tak neváhejte a vyzkoušejte ho – budoucnost formátů modelů na vás čeká!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *