Mis on Safetensors ja miks on need paremad kui .ckpt (pickletensor)

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

Safetensors on tähelepanuväärne mudeliformaat, mis on loodud tensorite turvaliseks salvestamiseks ning mis pakub muljetavaldavat kiirust ja jõudlust võrreldes paljude teiste valdkonna alternatiividega. Lisaks sellele, et Safetensors on uskumatult kiire, on see loodud ka lihtsust ja turvalisust silmas pidades, eristudes paljudest traditsioonilistest masinõppes kasutatavatest formaatidest.

Miks valida Safetensors?

Kuna masinõppe ja andmesalvestuse jaoks on saadaval palju erinevaid formaate, võite mõelda, mis Safetensorsit teistest eristab. Heitkem pilk mõnele neist formaatidest, et mõista, kuidas Safetensors peamiste parameetrite osas silma paistab:

  • Safe: Will a file randomly downloaded not run arbitrary code?
  • Zero-copy: Does reading the file require more memory than the original file?
  • Lazy loading: Can the file be inspected without loading everything? And can only some tensors in it be loaded without scanning the whole file (important in a distributed setting)?
  • Layout control: Can the location of tensors within the file be controlled to ensure fast access to individual tensors?
  • No file size limit: Is there a limit to the file size?
  • Flexibility: Can custom code be saved in the format and used later with zero extra code?
  • Bfloat16: Does the format support native bfloat16 without the need for weird workarounds?

Iga sümbol ✔ tähistab funktsiooni olemasolu, ❌ puudumist, ~ osalist olemasolu ja ? teadmata olemasolu.

FormaatSafeZero-copyLazy loadingNo file size limitLayout controlFlexibilityBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Sellest võrdlusest on näha, et Safetensors vastab või ületab teiste mudeliformaatide pakutavaid funktsioone. Eelkõige on see märkimisväärne oma nullkoopia andmetöötluse ja laisa laadimise võimekuse poolest, mis võib oluliselt suurendada andmete käitlemise efektiivsust masinõppe ülesannetes.

Mõned märkimisväärsed võrdlused

Kuigi kõigil formaatidel on omad unikaalsed tugevused, uurime, kuidas Safetensors võrdleb mõnede enamlevinud formaatidega:

  • Pickle (PyTorch): Laialdaselt kasutatav formaat, kuid pickle’il on märkimisväärne puudus – see on ebaturvaline, kuna see võimaldab suvalise koodi käivitamist.
  • H5 (Tensorflow): Kuigi turvaline, ei toeta see nullkoopiat, mis on tõhusa andmetöötluse jaoks oluline funktsioon.
  • SavedModel (Tensorflow): See formaat on spetsiifiline Tensorflowile ja sellel puudub paindlikkus teiste rakenduste jaoks.
  • Numpy (npz): Kuigi populaarne, ei toeta see bfloat16, mis on ML-maailmas üha olulisemaks muutuv funktsioon.

Safetensorsi telgitagused

Safetensorsi sügavamalt uurides leiame, et see pole lihtsalt andmeformaat, vaid läbimõeldud disainivalikute kombinatsioon, mis suurendab turvalisust, tõhusust ja kasulikkust:

  • Zero-copy: Safetensorsi disain võimaldab tõelist nullkoopiat CPU-s, kui fail on juba vahemälus. GPU puhul, kuigi koopia on alati vajalik kettavahemälu puudumise tõttu, väldib disain vajadust eraldada kõik tensorid CPU-s igal ajahetkel.
  • Endianness: Safetensors kasutab little-endian järjestust, mis on andmesalvestuses populaarne valik.
  • Order: See kasutab ‘C’ või rea-peamist järjestust. See valik on kooskõlas andmesalvestuse levinud standardiga.
  • Stride: Sammu ei toetata. Kõik tensorid tuleb pakkida enne serialiseerimist. See disainivalik tehti serialiseeritud formaatide praeguste kasutusmustrite põhjal.

Lisaväärtus

Lisaks sellele, et Safetensors on tõhus ja turvaline andmesalvestusformaat, pakub see ka mõningaid lisaväärtusi:

  • DOS-rünnakute ennetamine: Safetensorsi disain vähendab pahatahtlike failide poolt põhjustatud DOS-rünnakute võimalust. Päise suurusele on seatud piirang, et vältida ülisuure JSON-i parsimist, ja on tagatud, et failis olevad aadressid ei kattu, mis tähendab, et faili laadimine ei tohiks kunagi ületada faili suurust mälus.
  • Kiirem laadimine: Safetensors väldib PyTorchis täiendavat CPU-koopiat, võimaldades äärmiselt kiireid CPU-laadimisaegu võrreldes pickle’iga. GPU laadimisajad on sama kiired või kiiremad kui nende PyTorchi ekvivalendid.
  • Laisk laadimine: hajutatud seadetes (mitme sõlme või mitme GPU-ga) võimaldab Safetensors laadida ainult osa tensoritest, kiirendades oluliselt mudelite laadimisaegu ja parandades arenduse tagasisideahelaid.

Laialdaselt kasutuses

Safetensors on juba laialdaselt kasutusele võetud juhtivates tehisintellekti ettevõtetes nagu  Hugging FaceEleutherAI, ja StabilityAI. Mitmed silmapaistvad projektid, mis kasutavad Safetensorsit, on järgmised:

Kokkuvõtteks võib öelda, et Safetensors on oma ainulaadsete funktsioonide ja eelistega valmis muutuma masinõppe ja andmesalvestuse valdkonnas murranguliseks. Nii et proovige julgelt – mudeliformaatide tulevik ootab teid!

Leave a comment

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga