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

Категоризовано као AI/ML, Open Source Означено , , , , ,
Save and Share:

Safetensors je izvanredan format modela dizajniran za bezbedno skladištenje tenzora, koji se može pohvaliti impresivnom brzinom i performansama u poređenju sa mnogim alternativama u ovoj oblasti. Ne samo da je Safetensors neverovatno brz, već je takođe projektovan sa jednostavnošću i bezbednošću u svom jezgru, što ga izdvaja od mnogih tradicionalnih formata koji se koriste u mašinskom učenju.

Zašto izabrati Safetensors?

Sa mnoštvom formata dostupnih za mašinsko učenje i skladištenje podataka, možda se pitate po čemu se Safetensors izdvaja. Pa, hajde da odvojimo trenutak da uporedimo neke od ovih formata kako bismo razumeli kako Safetensors ispunjava ključne parametre:

  • Bezbednost: Da li nasumično preuzet fajl neće pokrenuti proizvoljni kod?
  • Nulti kopiranje (Zero-copy): Da li čitanje fajla zahteva više memorije od originalnog fajla?
  • Učitavanje na zahtev (Lazy loading): Da li fajl može da se pregleda bez učitavanja svega? I da li mogu da se učitaju samo neki tenzori iz njega bez skeniranja celog fajla (važno u distribuiranom okruženju)?
  • Kontrola rasporeda: Da li lokacija tenzora unutar fajla može da se kontroliše kako bi se osigurao brz pristup pojedinačnim tenzorima?
  • Bez ograničenja veličine fajla: Da li postoji ograničenje veličine fajla?
  • Fleksibilnost: Da li se prilagođeni kod može sačuvati u formatu i koristiti kasnije bez dodatnog koda?
  • Bfloat16: Da li format podržava izvorni bfloat16 bez potrebe za čudnim zaobilaznicama?

Svaki simbol ✔ predstavlja prisustvo, ❌ odsustvo, ~ delimično prisustvo i ? nepoznato prisustvo funkcije.

FormatBezbednostNulti kopiranje (Zero-copy)Učitavanje na zahtev (Lazy loading)Bez ograničenja veličine fajlaKontrola rasporedaFleksibilnostBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Iz ovog poređenja možete videti da Safetensors ispunjava ili premašuje funkcije koje nude drugi formati modela. Posebno se ističe po svojoj sposobnosti za manipulaciju podacima ‘nultim kopiranjem’ i učitavanje na zahtev, što može značajno da poveća efikasnost rukovanja podacima u zadacima mašinskog učenja.

Neka značajna poređenja

Iako svi formati imaju svoje jedinstvene prednosti, hajde da ispitamo kako se Safetensors nosi sa nekim od češće korišćenih:

  • Pickle (PyTorch): Široko rasprostranjen format, ali pickle ima značajan nedostatak – nesiguran je jer omogućava izvršavanje proizvoljnog koda.
  • H5 (Tensorflow): Iako je siguran, ne podržava nulti kopiranje, funkciju koja je ključna za efikasnu manipulaciju podacima.
  • SavedModel (Tensorflow): Ovaj format je specifičan za Tensorflow i nedostaje mu fleksibilnost za druge primene.
  • Numpy (npz): Iako je popularan, ovaj format ne podržava bfloat16, sve važniju funkciju u svetu ML-a.

Ispod haube Safetensors-a

Zaranjajući malo dublje u Safetensors, otkrivamo da to nije samo format podataka, već kombinacija promišljenih dizajnerskih odluka koje poboljšavaju bezbednost, efikasnost i korisnost:

  • Nulti kopiranje (Zero-copy): Dizajn Safetensors-a omogućava pravi nulti kopiranje na CPU-u ako je fajl već u kešu. Na GPU-u, iako je kopiranje uvek neophodno zbog odsustva keša na disku, dizajn zaobilazi potrebu za alociranjem svih tenzora na CPU-u u bilo kom trenutku.
  • Redosled bajtova (Endianness): Safetensors koristi mali redosled bajtova (little-endian ordering), popularan izbor u skladištenju podataka.
  • Redosled (Order): On usvaja ‘C’ ili redosled po redovima (row-major ordering). Ovaj izbor je u skladu sa preovlađujućim standardom u skladištenju podataka.
  • Korak (Stride): Korak nije podržan. Svi tenzori moraju biti spakovani pre serijalizacije. Ova dizajnerska odluka je doneta na osnovu trenutnih obrazaca upotrebe u serijalizovanim formatima.

Dodatni napor

Osim što je jednostavno efikasan i siguran format za skladištenje podataka, Safetensors takođe donosi na sto neke dodatne prednosti:

  • Sprečavanje DOS napada: Dizajn Safetensors-a ublažava mogućnost da zlonamerni fajlovi izazovu DOS napade. Postoji ograničenje veličine zaglavlja kako bi se sprečilo raščlanjivanje izuzetno velikog JSON-a, i postoji garancija da se adrese u fajlu ne preklapaju, što znači da učitavanje fajla nikada ne bi trebalo da premaši veličinu fajla u memoriji.
  • Brže učitavanje: Safetensors zaobilazi dodatno CPU kopiranje u PyTorch-u, omogućavajući izuzetno brzo CPU vreme učitavanja u poređenju sa pickle-om. GPU vremena učitavanja su brza ili brža od njihovog PyTorch ekvivalenta.
  • Učitavanje na zahtev (Lazy Loading): U distribuiranom okruženju (više čvorova ili više GPU-ova), Safetensors omogućava učitavanje samo dela tenzora, značajno ubrzavajući vreme učitavanja modela i poboljšavajući razvojne povratne petlje.

U divljini

Safetensors već doživljava široku primenu u vodećim AI preduzećima kao što su  Hugging FaceEleutherAI, i StabilityAI. Nekoliko istaknutih projekata koji koriste Safetensors uključuju:

Zaključno, Safetensors, sa svojim jedinstvenim skupom funkcija i prednosti, spreman je da postane prekretnica u svetu mašinskog učenja i skladištenja podataka. Zato, samo napred, isprobajte ga – budućnost formata modela vas čeka!

Оставите коментар

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *