Što su Safetensors i zašto su bolji od .ckpt (pickletensor)

Kategorizirano kao AI/ML, Open Source Označeno , , , , ,
Save and Share:

Safetensors je izvanredan format modela osmišljen za sigurno pohranjivanje tenzora, koji se može pohvaliti impresivnom brzinom i performansama u usporedbi s mnogim alternativama u tom području. Safetensors nije samo nevjerojatno brz, već je i projektiran s jednostavnošću i sigurnošću u svojoj srži, što ga izdvaja od mnogih tradicionalnih formata koji se koriste u strojnom učenju.

Zašto odabrati Safetensors?

S mnoštvom formata dostupnih za strojno učenje i pohranu podataka, možda se pitate po čemu se Safetensors ističe. Pa, odvojimo trenutak da usporedimo neke od tih formata kako bismo razumjeli kako Safetensors ispunjava ključne parametre:

  • Sigurnost: Hoće li datoteka preuzeta nasumično pokrenuti proizvoljni kod?
  • Zero-copy: Zahtijeva li čitanje datoteke više memorije od izvorne datoteke?
  • Lijeno učitavanje: Može li se datoteka pregledati bez učitavanja svega? I mogu li se učitati samo neki tenzori u njoj bez skeniranja cijele datoteke (što je važno u distribuiranom okruženju)?
  • Kontrola izgleda: Može li se kontrolirati položaj tenzora unutar datoteke kako bi se osigurao brz pristup pojedinačnim tenzorima?
  • Nema ograničenja veličine datoteke: Postoji li ograničenje veličine datoteke?
  • Fleksibilnost: Može li se prilagođeni kod spremiti u formatu i koristiti kasnije bez dodatnog koda?
  • Bfloat16: Podržava li format izvorni bfloat16 bez potrebe za čudnim zaobilaznim rješenjima?

Svaki simbol ✔ predstavlja prisutnost, ❌ odsutnost, ~ djelomičnu prisutnost, a ? nepoznatu prisutnost značajke.

FormatSigurnostZero-copyLijeno učitavanjeNema ograničenja veličine datotekeKontrola izgledaFleksibilnostBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Iz ove usporedbe možete vidjeti da Safetensors zadovoljava ili nadmašuje značajke koje nude drugi formati modela. Posebno je vrijedna pažnje njegova sposobnost za “zero-copy” manipulaciju podacima i lijeno učitavanje, što može značajno povećati učinkovitost rukovanja podacima u zadacima strojnog učenja.

Neke značajne usporedbe

Iako svi formati imaju svoje jedinstvene prednosti, pogledajmo kako se Safetensors ponaša u usporedbi s nekim od najčešće korištenih:

  • Pickle (PyTorch): Široko korišten format, ali pickle ima značajan nedostatak – nesiguran je jer omogućuje izvršavanje proizvoljnog koda.
  • H5 (Tensorflow): Iako je siguran, ne podržava zero-copy, značajku koja je sastavni dio učinkovite manipulacije podacima.
  • SavedModel (Tensorflow): Ovaj je format specifičan za Tensorflow i nema fleksibilnost za druge aplikacije.
  • Numpy (npz): Iako je popularan, ovaj format ne podržava bfloat16, značajku koja je sve važnija u svijetu strojnog učenja.

Ispod haube Safetensorsa

Zadirući malo dublje u Safetensors, otkrivamo da to nije samo format podataka, već kombinacija promišljenih dizajnerskih izbora koji poboljšavaju sigurnost, učinkovitost i korisnost:

  • Zero-copy: Dizajn Safetensorsa omogućuje pravi zero-copy na CPU-u ako je datoteka već u predmemoriji. Na GPU-u, iako je kopija uvijek potrebna zbog nedostatka predmemorije diska, dizajn zaobilazi potrebu za dodjelom svih tenzora na CPU-u u bilo kojem trenutku.
  • Endianness: Safetensors koristi little-endian poredak, popularan izbor u pohrani podataka.
  • Redoslijed: Usvaja ‘C’ ili row-major poredak. Ovaj je izbor u skladu s prevladavajućim standardom u pohrani podataka.
  • Stride: Striding nije podržan. Svi tenzori moraju biti zapakirani prije serijalizacije. Ova je odluka o dizajnu donesena na temelju trenutnih obrazaca upotrebe u serijaliziranim formatima.

Dodatni korak

Osim što je učinkovit i siguran format za pohranu podataka, Safetensors donosi i neke dodatne prednosti:

  • Sprečavanje DOS napada: Dizajn Safetensorsa ublažava mogućnost da zlonamjerne datoteke uzrokuju DOS napade. Postoji ograničenje veličine zaglavlja kako bi se spriječilo parsiranje iznimno velikog JSON-a, a postoji i jamstvo da se adrese u datoteci ne preklapaju, što znači da učitavanje datoteke nikada ne bi smjelo premašiti veličinu datoteke u memoriji.
  • Brže učitavanje: Safetensors zaobilazi dodatnu kopiju CPU-a u PyTorchu, omogućujući iznimno brzo vrijeme učitavanja CPU-a u usporedbi s pickleom. Vrijeme učitavanja GPU-a jednako je brzo ili brže od ekvivalenta u PyTorchu.
  • Lijeno učitavanje: U distribuiranom okruženju (više čvorova ili više GPU-ova), Safetensors omogućuje učitavanje samo dijela tenzora, što značajno ubrzava vrijeme učitavanja modela i poboljšava petlje povratnih informacija o razvoju.

U divljini

Safetensors se već uvelike koristi u vodećim AI tvrtkama kao što su Hugging Face, EleutherAI i StabilityAI. Nekoliko istaknutih projekata koji koriste Safetensors uključuju:

Zaključno, Safetensors, sa svojim jedinstvenim skupom značajki i prednosti, spreman je postati prekretnica u svijetu strojnog učenja i pohrane podataka. Stoga, samo naprijed i isprobajte ga – budućnost formata modela vas čeka!

Ostavite komentar

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena sa * (obavezno)