Mitä ovat Safetensors-tiedostot ja miksi ne ovat parempia kuin .ckpt-tiedostot (pickletensor)

Kategoria(t): AI/ML, Open Source Avainsanat: , , , , ,
Save and Share:

Safetensors on merkittävä mallitiedostomuoto, joka on suunniteltu tensorien turvalliseen tallentamiseen. Se tarjoaa vaikuttavaa nopeutta ja suorituskykyä verrattuna moniin muihin alan vaihtoehtoihin. Sen lisäksi, että Safetensors on erittäin nopea, se on suunniteltu yksinkertaisuus ja turvallisuus ytimessään, mikä erottaa sen monista perinteisistä koneoppimisessa käytetyistä tiedostomuodoista.

Miksi valita Safetensors?

Koska koneoppimiseen ja datan tallennukseen on saatavilla lukuisia tiedostomuotoja, saatat miettiä, mikä tekee Safetensorsista erityisen. Verrataanpa hetki joitain näistä tiedostomuodoista ymmärtääksemme, miten Safetensors suoriutuu keskeisissä ominaisuuksissa:

  • Turvallinen: Voiko satunnaisesti ladattu tiedosto suorittaa mielivaltaista koodia?
  • Nollakopiointi: Vaatiiko tiedoston lukeminen enemmän muistia kuin alkuperäinen tiedosto?
  • Laiska lataus: Voiko tiedoston tarkistaa lataamatta kaikkea? Ja voidaanko vain osa sen tensoreista ladata ilman koko tiedoston skannausta (tärkeää hajautetussa ympäristössä)?
  • Asettelun hallinta: Voiko tensorien sijaintia tiedostossa hallita, jotta yksittäisiin tensoreihin päästään nopeasti käsiksi?
  • Ei tiedostokokorajoitusta: Onko tiedostokoolle rajoitusta?
  • Joustavuus: Voidaanko mukautettua koodia tallentaa tiedostomuotoon ja käyttää myöhemmin ilman ylimääräistä koodia?
  • Bfloat16: Tukeeko tiedostomuoto natiivia bfloat16-muotoa ilman outoja kiertoteitä?

Symboli ✔ tarkoittaa ominaisuuden olemassaoloa, ❌ puuttumista, ~ osittaista olemassaoloa ja ? tuntematonta olemassaoloa.

FormaattiTurvallinenNollakopiointiLaiska latausEi tiedostokokorajoitustaAsettelun hallintaJoustavuusBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Vertailusta näkee, että Safetensors täyttää tai ylittää muiden mallitiedostomuotojen tarjoamat ominaisuudet. Se on erityisen merkittävä ’nollakopiointi’-datamanipulointi- ja laiskan latauksen ominaisuuksiensa ansiosta, jotka voivat merkittävästi parantaa tiedonkäsittelyn tehokkuutta koneoppimistehtävissä.

Muutamia huomionarvoisia vertailuja

Vaikka kaikilla tiedostomuodoilla on omat ainutlaatuiset vahvuutensa, tarkastellaanpa, miten Safetensors pärjää joillekin yleisimmin käytetyille:

  • Pickle (PyTorch): Yleisesti käytetty tiedostomuoto, mutta picklessä on merkittävä haittapuoli – se on turvaton, koska se mahdollistaa mielivaltaisen koodin suorittamisen.
  • H5 (Tensorflow): Vaikka se on turvallinen, se ei tue nollakopiointia, joka on olennainen ominaisuus tehokkaassa datamanipuloinnissa.
  • SavedModel (Tensorflow): Tämä tiedostomuoto on spesifinen Tensorflowille, ja se ei ole joustava muihin sovelluksiin.
  • Numpy (npz): Vaikka se on suosittu, tämä tiedostomuoto ei tue bfloat16-muotoa, joka on yhä tärkeämpi ominaisuus ML-maailmassa.

Safetensorsin sisuskalut

Sukeltaessamme hieman syvemmälle Safetensorsiin huomaamme, että se ei ole pelkästään datatiedostomuoto, vaan yhdistelmä harkittuja suunnitteluratkaisuja, jotka parantavat turvallisuutta, tehokkuutta ja hyödyllisyyttä:

  • Nollakopiointi: Safetensorsin suunnittelu mahdollistaa todellisen nollakopioinnin suorittimella, jos tiedosto on jo välimuistissa. Grafiikkasuorittimella kopiointi on aina välttämätöntä levyn välimuistin puuttumisen vuoksi, mutta suunnittelu ohittaa tarpeen allokoida kaikkia tensoreita suorittimella missään vaiheessa.
  • Tavujärjestys: Safetensors käyttää little-endian-järjestystä, joka on suosittu valinta datan tallennuksessa.
  • Järjestys: Se käyttää ’C’- eli rivimajorijärjestystä. Tämä valinta on linjassa datan tallennuksen vallitsevan standardin kanssa.
  • Askelväli: Askelväliä ei tueta. Kaikki tensorit on pakattava ennen sarjoittamista. Tämä suunnitteluratkaisu tehtiin nykyisten sarjoitettujen tiedostomuotojen käyttömallien perusteella.

Vielä vähän enemmän

Sen lisäksi, että Safetensors on tehokas ja turvallinen datan tallennustiedostomuoto, se tuo mukanaan myös joitain lisäetuja:

  • DOS-hyökkäysten estäminen: Safetensorsin suunnittelu vähentää mahdollisuutta, että haitalliset tiedostot aiheuttavat DOS-hyökkäyksiä. Otsikon koko on rajoitettu erittäin suuren JSONin jäsentämisen estämiseksi, ja on taattu, että tiedoston osoitteet eivät ole päällekkäisiä, mikä tarkoittaa, että tiedoston lataaminen ei saa koskaan ylittää tiedoston kokoa muistissa.
  • Nopeampi lataus: Safetensors ohittaa ylimääräisen suoritinkopion PyTorchissa, mikä mahdollistaa erittäin nopeat suoritinlatausajat verrattuna pickleen. Grafiikkasuoritinlatausajat ovat yhtä nopeita tai nopeampia kuin PyTorch-vastineessa.
  • Laiska lataus: Hajautetuissa ympäristöissä (useita solmuja tai grafiikkasuorittimia) Safetensors mahdollistaa vain osan tensoreista lataamisen, mikä nopeuttaa merkittävästi mallien latausaikoja ja parantaa kehityksen palautesyklejä.

Käytössä

Safetensors on jo laajalti käytössä johtavissa tekoälyalan yrityksissä, kuten  Hugging FacessaEleutherAI:ssa ja StabilityAI:ssa. Useita merkittäviä projekteja, jotka hyödyntävät Safetensorsia, ovat:

Yhteenvetona voidaan todeta, että Safetensors, ainutlaatuisine ominaisuuksineen ja etuineen, on valmis mullistamaan koneoppimisen ja datan tallennuksen maailman. Joten anna sille mahdollisuus – mallitiedostomuotojen tulevaisuus odottaa sinua!

Kirjoita kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *