Mik azok a Safetensors fájlok, és miért jobbak, mint a .ckpt (pickletensor) fájlok?

AI/ML, Open Source kategóriába sorolva Címkézve , , , , ,
Save and Share:

A Safetensors egy figyelemre méltó modellformátum, amelyet a tenzorok biztonságos tárolására terveztek, és amely lenyűgöző sebességet és teljesítményt nyújt a területen található számos alternatívához képest. A Safetensors nemcsak hihetetlenül gyors, hanem egyszerűséggel és biztonsággal is tervezték, ami megkülönbözteti a gépi tanulásban használt hagyományos formátumoktól.

Miért érdemes a Safetensors-t választani?

A gépi tanuláshoz és adattároláshoz rendelkezésre álló formátumok bőségében felmerülhet a kérdés, hogy mi különbözteti meg a Safetensors-t. Nos, szánjunk egy pillanatot néhány ilyen formátum összehasonlítására, hogy megértsük, hogyan teljesít a Safetensors a legfontosabb paraméterek tekintetében:

  • Biztonságos: Véletlenszerűen letöltött fájl nem futtat tetszőleges kódot?
  • Nulla-másolat: A fájl olvasásához több memóriára van szükség, mint az eredeti fájl?
  • Lusta betöltés: A fájl megvizsgálható anélkül, hogy mindent be kellene tölteni? És betölthető belőle csak néhány tenzor anélkül, hogy az egész fájlt be kellene szkennelni (fontos elosztott környezetben)?
  • Elrendezés szabályozása: Szabályozható a tenzorok helye a fájlon belül az egyes tenzorokhoz való gyors hozzáférés érdekében?
  • Nincs fájlméret-korlát: Van fájlméret-korlát?
  • Rugalmasság: Elmenthető egyéni kód a formátumban, és később nulla extra kóddal használható?
  • Bfloat16: Támogatja a formátum a natív bfloat16-ot furcsa kerülőutak nélkül?

Minden ✔ szimbólum egy funkció jelenlétét, a ❌ a hiányát, a ~ a részleges jelenlétét, a ? pedig az ismeretlen jelenlétét jelzi.

FormátumBiztonságosNulla-másolatLusta betöltésNincs fájlméret-korlátElrendezés szabályozásaRugalmasságBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Az összehasonlításból látható, hogy a Safetensors megfelel vagy felülmúlja a többi modellformátum által kínált funkciókat. Különösen figyelemre méltó a „nulla-másolat” adatmanipulációs képessége és a lusta betöltés, amelyek jelentősen növelhetik az adatok kezelésének hatékonyságát a gépi tanulási feladatokban.

Néhány figyelemre méltó összehasonlítás

Bár minden formátumnak megvannak a maga egyedi erősségei, vizsgáljuk meg, hogyan teljesít a Safetensors néhány gyakoribb formátumhoz képest:

  • Pickle (PyTorch): Széles körben használt formátum, de a pickle jelentős hátránnyal jár – nem biztonságos, mivel lehetővé teszi tetszőleges kódok végrehajtását.
  • H5 (Tensorflow): Bár biztonságos, nem támogatja a nulla-másolatot, ami az hatékony adatmanipuláció elengedhetetlen funkciója.
  • SavedModel (Tensorflow): Ez a formátum specifikus a Tensorflowhoz, és hiányzik belőle a rugalmasság más alkalmazásokhoz.
  • Numpy (npz): Bár népszerű, ez a formátum nem támogatja a bfloat16-ot, ami egyre fontosabb funkció az ML világában.

A Safetensors motorházteteje alatt

Ha egy kicsit mélyebbre ásunk a Safetensors-ban, azt tapasztaljuk, hogy ez nem csak egy adatformátum, hanem átgondolt tervezési döntések kombinációja, amelyek fokozzák a biztonságot, a hatékonyságot és a hasznosságot:

  • Nulla-másolat: A Safetensors tervezése valódi nulla-másolatot tesz lehetővé a CPU-n, ha a fájl már a gyorsítótárban van. GPU-n, bár mindig szükséges másolat a lemezes gyorsítótár hiánya miatt, a tervezés megkerüli azt, hogy minden tenzort a CPU-n kelljen lefoglalni egy adott ponton.
  • Bájtsorrend: A Safetensors little-endian bájtsorrendet használ, ami népszerű választás az adattárolásban.
  • Sorrend: ‘C’ vagy sorfolytonos rendezést alkalmaz. Ez a választás megfelel az adattárolásban elterjedt szabványnak.
  • Lépték: A léptékezés nem támogatott. Minden tenzort csomagolni kell a szerializálás előtt. Ezt a tervezési döntést a szerializált formátumokban jelenleg elterjedt használati minták alapján hozták meg.

A ráadás

Amellett, hogy hatékony és biztonságos adattárolási formátum, a Safetensors további előnyöket is kínál:

  • DOS-támadások megelőzése: A Safetensors kialakítása csökkenti a rosszindulatú fájlok által okozott DOS-támadások lehetőségét. A fejléc méretére korlátozás vonatkozik a rendkívül nagy JSON-ok elemzésének megakadályozása érdekében, és garantált, hogy a fájlban lévő címek nem fedik egymást, ami azt jelenti, hogy egy fájl betöltése soha nem haladhatja meg a fájl méretét a memóriában.
  • Gyorsabb betöltés: A Safetensors megkerüli az extra CPU-másolatot a PyTorchben, ami rendkívül gyors CPU-betöltési időt tesz lehetővé a pickle-hez képest. A GPU-betöltési idők ugyanolyan gyorsak vagy gyorsabbak, mint a PyTorch megfelelőjüké.
  • Lusta betöltés: Elosztott környezetben (több csomópont vagy több GPU), a Safetensors lehetővé teszi a tenzorok csak egy részének betöltését, ami jelentősen felgyorsítja a modell betöltési idejét és javítja a fejlesztési visszacsatolási ciklusokat.

A valóságban

A Safetensors már széles körben elterjedt a vezető mesterséges intelligencia vállalkozásoknál, mint például a  Hugging FaceEleutherAI, és StabilityAI. Számos kiemelkedő projekt használja a Safetensors-t, köztük:

Összefoglalva, a Safetensors egyedi funkcióival és előnyeivel minden adott ahhoz, hogy meghatározó szereplővé váljon a gépi tanulás és az adattárolás világában. Tehát hajrá, és próbálja ki – a modellformátumok jövője várja Önt!

Hozzászólás

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük