Safetensors Nedir ve Neden .ckpt’den (pickletensor) Daha İyi?

Açık Kaynak, AI/ML olarak sınıflandırılmış , , , , , ile etiketlenmiş
Save and Share:

Safetensors, tensörleri güvenli bir şekilde depolamak için tasarlanmış dikkat çekici bir model formatıdır ve alandaki birçok alternatife kıyasla etkileyici hız ve performans sunar. Safetensors inanılmaz derecede hızlı olmasının yanı sıra, basitlik ve güvenlik esas alınarak tasarlanmıştır ve bu da onu makine öğreniminde kullanılan birçok geleneksel formattan ayırır.

Neden Safetensors’u Seçmelisiniz?

Makine öğrenimi ve veri depolama için çok sayıda format varken, Safetensors’u diğerlerinden ayıran şeyin ne olduğunu merak edebilirsiniz. Safetensors’un temel parametreleri nasıl sağladığını anlamak için bu formatlardan bazılarını karşılaştıralım:

  • Güvenli: Rastgele indirilen bir dosya keyfi bir kod çalıştırmayacak mı?
  • Sıfır kopya: Dosyayı okumak orijinal dosyadan daha fazla bellek gerektiriyor mu?
  • Geç yükleme: Dosya her şeyi yüklemeden incelenebilir mi? Ve içindeki bazı tensörler tüm dosya taranmadan yüklenebilir mi (dağıtılmış bir ortamda önemlidir)?
  • Düzen kontrolü: Tek tek tensörlere hızlı erişim sağlamak için dosya içindeki tensörlerin konumu kontrol edilebilir mi?
  • Dosya boyutu sınırı yok: Dosya boyutunda bir sınır var mı?
  • Esneklik: Özel kod formatta kaydedilebilir ve daha sonra sıfır ek kodla kullanılabilir mi?
  • Bfloat16: Format, garip geçici çözümlere ihtiyaç duymadan yerel bfloat16’yı destekliyor mu?

Her sembol ✔ bir özelliğin varlığını, ❌ yokluğunu, ~ kısmi varlığını ve ? bilinmeyen varlığını temsil eder.

FormatGüvenliSıfır kopyaGeç yüklemeDosya boyutu sınırı yokDüzen kontrolüEsneklikBfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

Bu karşılaştırmadan, Safetensors’un diğer model formatlarının sunduğu özellikleri karşıladığını veya aştığını görebilirsiniz. Özellikle, makine öğrenimi görevlerinde veri işlemenin verimliliğini önemli ölçüde artırabilen ‘sıfır kopya’ veri manipülasyonu ve geç yükleme yeteneği ile dikkat çekiyor.

Bazı Dikkat Çekici Karşılaştırmalar

Tüm formatların benzersiz güçlü yönleri olmasına rağmen, Safetensors’un daha yaygın olarak kullanılan bazılarına karşı nasıl performans gösterdiğini inceleyelim:

  • Pickle (PyTorch): Yaygın olarak kullanılan bir format olan pickle, önemli bir dezavantajla birlikte gelir – keyfi kodun yürütülmesine izin verdiği için güvenli değildir.
  • H5 (Tensorflow): Güvenli olmasına rağmen, verimli veri manipülasyonu için ayrılmaz bir özellik olan sıfır kopyayı desteklemiyor.
  • SavedModel (Tensorflow): Bu format Tensorflow’a özeldir ve diğer uygulamalar için esneklikten yoksundur.
  • Numpy (npz): Popüler olmasına rağmen, bu format, ML dünyasında giderek daha önemli bir özellik olan bfloat16’yı desteklemiyor.

Safetensors’un Derinlikleri

Safetensors’a biraz daha derine indiğimizde, bunun sadece bir veri formatı değil, aynı zamanda güvenliği, verimliliği ve kullanışlılığı artıran düşünceli tasarım seçimlerinin bir kombinasyonu olduğunu görüyoruz:

  • Sıfır kopya: Safetensors tasarımı, dosya zaten önbellekteyse CPU’da gerçek sıfır kopyaya izin verir. GPU’da, bir disk önbelleğinin olmaması nedeniyle her zaman bir kopyaya ihtiyaç duyulmasına rağmen, tasarım herhangi bir noktada CPU’daki tüm tensörleri ayırma ihtiyacını ortadan kaldırır.
  • Endianlık: Safetensors, veri depolamada popüler bir seçim olan little-endian sıralamayı kullanır.
  • Sıra: ‘C’ veya satır-öncelikli sıralamayı benimser. Bu seçim, veri depolamadaki yaygın standartla uyumludur.
  • Adım: Adımlama desteklenmiyor. Serileştirilmeden önce tüm tensörlerin paketlenmesi gerekir. Bu tasarım kararı, serileştirilmiş formatlardaki mevcut kullanım modellerine göre verilmiştir.

Ekstra Yol

Safetensors, verimli ve güvenli bir veri depolama formatı olmanın ötesinde, bazı ek avantajları da beraberinde getiriyor:

  • DOS Saldırılarını Önleme: Safetensors’un tasarımı, kötü amaçlı dosyaların DOS saldırılarına neden olma olasılığını azaltır. Aşırı büyük JSON’ların ayrıştırılmasını önlemek için başlığın boyutunda bir sınır vardır ve dosyadaki adreslerin çakışmadığına dair bir garanti vardır, yani bir dosyayı yüklemek hiçbir zaman bellekteki dosyanın boyutunu aşmamalıdır.
  • Daha Hızlı Yükleme: Safetensors, PyTorch’taki ekstra CPU kopyasını atlayarak pickle’a kıyasla son derece hızlı CPU yükleme süreleri sağlar. GPU yükleme süreleri, PyTorch muadillerinden daha hızlı veya aynı hızdadır.
  • Geç Yükleme: Dağıtılmış ortamlarda (çok düğümlü veya çok GPU’lu), Safetensors yalnızca tensörlerin bir kısmının yüklenmesini sağlayarak model yükleme sürelerini önemli ölçüde hızlandırır ve geliştirme geri bildirim döngülerini iyileştirir.

Vahşi Doğada

Safetensors,  Hugging FaceEleutherAI, ve StabilityAI gibi önde gelen yapay zeka şirketlerinde zaten yaygın olarak benimseniyor. Safetensors’u kullanan çeşitli öne çıkan projeler şunlardır:

Sonuç olarak, benzersiz özellik ve avantajlarıyla Safetensors, makine öğrenimi ve veri depolama dünyasında ezber bozan bir oyuncu olmaya hazırlanıyor. Öyleyse, devam edin ve bir deneyin – model formatlarının geleceği sizi bekliyor!

Yorum Gönderin

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir