Kas ir Safetensors un kāpēc tie ir labāki par .ckpt (pickletensor)

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

Safetensors ir ievērojams modeļu formāts, kas izstrādāts tensoru drošai uzglabāšanai, lepojoties ar iespaidīgu ātrumu un veiktspēju salīdzinājumā ar daudzām citām alternatīvām šajā jomā. Safetensors ir ne tikai neticami ātrs, bet arī izstrādāts, galveno uzmanību pievēršot vienkāršībai un drošībai, kas to atšķir no daudziem tradicionāliem formātiem, ko izmanto mašīnmācībā.

Kāpēc izvēlēties Safetensors?

Ņemot vērā, ka mašīnmācībai un datu uzglabāšanai ir pieejami daudzi formāti, jūs varētu domāt, kas Safetensors izceļ. Apskatīsim dažus no šiem formātiem, lai saprastu, kā Safetensors atbilst galvenajiem parametriem:

  • Drošs: vai nejauši lejupielādēts fails neizpildīs patvaļīgu kodu?
  • Nulles kopēšana: vai faila lasīšanai nepieciešams vairāk atmiņas nekā sākotnējam failam?
  • Slieksnes ielāde: vai failu var pārbaudīt, neielādējot visu? Un vai no tā var ielādēt tikai dažus tensorus, neskenējot visu failu (svarīgi sadalītā vidē)?
  • Izkārtojuma kontrole: vai tensoru atrašanās vietu failā var kontrolēt, lai nodrošinātu ātru piekļuvi atsevišķiem tensoriem?
  • Nav faila lieluma ierobežojuma: vai ir faila lieluma ierobežojums?
  • Elastīgums: vai pielāgotu kodu var saglabāt formātā un vēlāk izmantot bez papildu koda?
  • Bfloat16: vai formāts atbalsta vietējo bfloat16, neizmantojot dīvainus risinājumus?

Katra simbola ✔ nozīmē funkcijas klātbūtni, ❌ – prombūtni, ~ – daļēju klātbūtni un ? – nezināmu klātbūtni.

FormātsDrošsNulles kopēšanaSlieksnes ielādeNav faila lieluma ierobežojumaIzkārtojuma kontroleElastīgumsBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

No šī salīdzinājuma jūs varat redzēt, ka Safetensors atbilst vai pārsniedz citu modeļu formātu piedāvātās funkcijas. Tas ir īpaši ievērojams ar savu spēju veikt datu manipulācijas “bez kopēšanas” un slieksnes ielādi, kas var ievērojami palielināt datu apstrādes efektivitāti mašīnmācības uzdevumos.

Daži ievērojami salīdzinājumi

Lai gan visiem formātiem ir savas unikālās stiprās puses, apskatīsim, kā Safetensors darbojas salīdzinājumā ar dažiem no biežāk izmantotajiem formātiem:

  • Pickle (PyTorch): plaši izmantots formāts, taču pickle ir būtisks trūkums – tas nav drošs, jo ļauj izpildīt patvaļīgu kodu.
  • H5 (Tensorflow): lai gan drošs, tas neatbalsta nulles kopēšanu, kas ir būtiska iezīme efektīvai datu manipulācijai.
  • SavedModel (Tensorflow): šis formāts ir specifisks Tensorflow un tam trūkst elastīguma citām lietojumprogrammām.
  • Numpy (npz): lai gan populārs, šis formāts neatbalsta bfloat16, kas ir arvien svarīgāka funkcija ML pasaulē.

Safetensors iekšējā uzbūve

Iedziļinoties Safetensors, mēs redzam, ka tas nav tikai datu formāts, bet gan pārdomātu dizaina izvēļu kombinācija, kas uzlabo drošību, efektivitāti un lietderību:

  • Nulles kopēšana: Safetensors dizains nodrošina patiesu nulles kopēšanu CPU, ja fails jau atrodas kešatmiņā. GPU, lai gan kopija vienmēr ir nepieciešama diska kešatmiņas trūkuma dēļ, dizains novērš nepieciešamību piešķirt visus tensorus CPU jebkurā noteiktā brīdī.
  • Endianness: Safetensors izmanto little-endian secību, kas ir populāra izvēle datu uzglabāšanā.
  • Secība: tas izmanto “C” vai rindu-maģistrālo secību. Šī izvēle atbilst izplatītajam standartam datu uzglabāšanā.
  • Solīšana: solīšana netiek atbalstīta. Visi tensori ir jāsaspiež pirms serializācijas. Šis dizaina lēmums tika pieņemts, pamatojoties uz pašreizējiem lietojuma modeļiem serializētos formātos.

Papildu pūles

Papildus tam, ka Safetensors ir efektīvs un drošs datu uzglabāšanas formāts, tas piedāvā arī dažas papildu priekšrocības:

  • DOS uzbrukumu novēršana: Safetensors dizains mazina iespēju, ka ļaunprātīgi faili varētu izraisīt DOS uzbrukumus. Ir ierobežojums galvenes lielumam, lai novērstu ārkārtīgi liela JSON parsēšanu, un ir garantija, ka adreses failā nepārklājas, kas nozīmē, ka faila ielādei nekad nevajadzētu pārsniegt faila lielumu atmiņā.
  • Ātrāka ielāde: Safetensors apiet papildu CPU kopiju PyTorch, nodrošinot ārkārtīgi ātru CPU ielādes laiku salīdzinājumā ar pickle. GPU ielādes laiks ir tikpat ātrs vai ātrāks nekā to PyTorch ekvivalents.
  • Slieksnes ielāde: sadalītās vidēs (vairāku mezglu vai vairāku GPU) Safetensors ļauj ielādēt tikai daļu tensoru, ievērojami paātrinot modeļu ielādes laiku un uzlabojot izstrādes atgriezeniskās saites ciklus.

Dabā

Safetensors jau tiek plaši izmantots vadošajos AI uzņēmumos, piemēram,  Hugging FaceEleutherAI, un StabilityAI. Vairāki ievērojami projekti, kas izmanto Safetensors, ietver:

Noslēgumā jāsaka, ka Safetensors ar savu unikālo funkciju un priekšrocību kopumu ir gatavs kļūt par spēles noteicēju mašīnmācības un datu uzglabāšanas pasaulē. Tāpēc dodieties uz priekšu un izmēģiniet to – modeļu formātu nākotne jūs gaida!

Leave a comment

Your email address will not be published. Required fields are marked *