Kaj so Safetensors in zakaj so boljši od .ckpt (pickle tenzorjev)?

Categorized as AI/ML, Open Source Tagged , , , , ,
Save and Share:

Safetensors je izjemen format modelov, zasnovan za varno shranjevanje tenzorjev, ki se ponaša z izjemno hitrostjo in zmogljivostjo v primerjavi z mnogimi alternativami na tem področju. Safetensors ni le neverjetno hiter, temveč je bil zasnovan s preprostostjo in varnostjo v jedru, kar ga ločuje od številnih tradicionalnih formatov, ki se uporabljajo v strojnem učenju.

Zakaj izbrati Safetensors?

Ker je na voljo veliko formatov za strojno učenje in shranjevanje podatkov, se morda sprašujete, kaj ločuje Safetensors od drugih. Vzemimo si trenutek in primerjajmo nekaj teh formatov, da bi razumeli, kako se Safetensors odreže pri ključnih parametrih:

  • Varno: Ali datoteka, ki jo naključno prenesemo, ne bo zagnala poljubne kode?
  • Brez kopiranja: Ali branje datoteke zahteva več pomnilnika od izvirne datoteke?
  • Leno nalaganje: Ali je datoteko mogoče pregledati, ne da bi naložili vse? In ali je mogoče naložiti samo nekatere tenzorje v njej, ne da bi morali preiskati celotno datoteko (pomembno v porazdeljenem okolju)?
  • Nadzor postavitve: Ali je mogoče nadzorovati lokacijo tenzorjev znotraj datoteke, da se zagotovi hiter dostop do posameznih tenzorjev?
  • Brez omejitve velikosti datoteke: Ali obstaja omejitev velikosti datoteke?
  • Prilagodljivost: Ali je mogoče v format shraniti kodo po meri in jo pozneje uporabiti brez dodatne kode?
  • Bfloat16: Ali format izvorno podpira bfloat16 brez potrebe po nenavadnih rešitvah?

Vsak simbol ✔ predstavlja prisotnost, ❌ odsotnost, ~ delno prisotnost in ? neznano prisotnost funkcije.

FormatVarnoBrez kopiranjaLeno nalaganjeBrez omejitve velikosti datotekeNadzor postavitvePrilagodljivostBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Iz te primerjave lahko vidite, da Safetensors dosega ali presega funkcije, ki jih ponujajo drugi formati modelov. Posebej izstopa po svoji zmožnosti “brez kopiranja” pri manipulaciji s podatki in lenem nalaganju, kar lahko znatno poveča učinkovitost obdelave podatkov pri nalogah strojnega učenja.

Nekaj omembe vrednih primerjav

Čeprav imajo vsi formati svoje edinstvene prednosti, si poglejmo, kako se Safetensors odreže v primerjavi z nekaterimi pogosteje uporabljenimi:

  • Pickle (PyTorch): Široko uporabljen format, vendar ima pickle pomembno slabost – je nevaren, saj omogoča izvajanje poljubne kode.
  • H5 (Tensorflow): Čeprav je varen, ne podpira brezkopiranja, funkcije, ki je bistvena za učinkovito manipulacijo podatkov.
  • SavedModel (Tensorflow): Ta format je specifičen za Tensorflow in mu manjka prilagodljivosti za druge aplikacije.
  • Numpy (npz): Čeprav je priljubljen, ta format ne podpira bfloat16, ki je vse bolj ključna funkcija v svetu ML.

Pod pokrovko Safetensors

Če se poglobimo v Safetensors, ugotovimo, da ni le format podatkov, ampak kombinacija premišljenih oblikovalskih odločitev, ki izboljšajo varnost, učinkovitost in uporabnost:

  • Brez kopiranja: Zasnova Safetensors omogoča resnično brezkopiranje na CPU, če je datoteka že v predpomnilniku. Na GPU je kopiranje vedno potrebno zaradi odsotnosti diskovnega predpomnilnika, vendar se zasnova izogne potrebi po dodeljevanju vseh tenzorjev na CPU kadar koli.
  • Endianness: Safetensors uporablja vrstni red little-endian, kar je priljubljena izbira pri shranjevanju podatkov.
  • Vrstni red: Uporablja vrstni red ‘C’ ali vrstično glavno razporeditev. Ta izbira je skladna s prevladujočim standardom pri shranjevanju podatkov.
  • Korak: Korakanje ni podprto. Vse tenzorje je treba spakirati, preden se serializirajo. Ta oblikovalska odločitev je bila sprejeta na podlagi trenutnih vzorcev uporabe v serializiranih formatih.

Dodatna prednost

Poleg tega, da je Safetensors učinkovit in varen format za shranjevanje podatkov, prinaša tudi nekaj dodatnih prednosti:

  • Preprečevanje napadov DOS: Zasnova Safetensors zmanjšuje možnost, da bi zlonamerne datoteke povzročile napade DOS. Obstaja omejitev velikosti glave, da se prepreči razčlenjevanje izjemno velikih JSON datotek, in obstaja zagotovilo, da se naslovi v datoteki ne prekrivajo, kar pomeni, da nalaganje datoteke nikoli ne bi smelo preseči velikosti datoteke v pomnilniku.
  • Hitrejše nalaganje: Safetensors zaobide dodatno kopiranje CPU v PyTorch, kar omogoča izjemno hiter čas nalaganja CPU v primerjavi s pickle. Čas nalaganja GPU je enako hiter ali hitrejši od ekvivalenta PyTorch.
  • Leno nalaganje: V porazdeljenih okoljih (z več vozlišči ali več GPU-ji) Safetensors omogoča nalaganje samo dela tenzorjev, kar znatno pospeši čas nalaganja modelov in izboljša razvojne povratne zanke.

V uporabi

Safetensors se že široko uporablja v vodilnih podjetjih za umetno inteligenco, kot so  Hugging FaceEleutherAI, in StabilityAI. Nekaj ​​vidnejših projektov, ki uporabljajo Safetensors, vključuje:

Skratka, Safetensors je s svojim edinstvenim naborom funkcij in prednosti pripravljen, da postane prelomnica v svetu strojnega učenja in shranjevanja podatkov. Torej, kar pogumno, preizkusite ga – prihodnost formatov modelov vas čaka!

Leave a comment

Vaš e-naslov ne bo objavljen. * označuje zahtevana polja