什麼是 Safetensors?為什麼它比 .ckpt (pickletensor) 更好?

分類: AI/MLOpen Source 標籤:
Save and Share:

Safetensors 是一種卓越的模型格式,專為安全儲存 tensors 而設計,與該領域的許多替代方案相比,它具有令人印象深刻的速度和效能。Safetensors 不僅速度極快,而且在設計時將簡潔性和安全性作為核心,使其在機器學習中使用的許多傳統格式中脫穎而出。

為什麼選擇 Safetensors?

由於機器學習和資料儲存有大量的格式可供選擇,您可能想知道是什麼讓 Safetensors 與眾不同。那麼,讓我們花點時間比較一下這些格式,以了解 Safetensors 如何實現關鍵參數:

  • 安全:隨機下載的檔案是否會隨機執行任意程式碼?
  • 零複製:讀取檔案是否需要比原始檔案更多的記憶體?
  • 延遲載入:是否可以在不載入所有內容的情況下檢查檔案?並且是否可以僅載入其中的一些 tensors,而無需掃描整個檔案(在分散式環境中很重要)?
  • 佈局控制:是否可以控制 tensors 在檔案中的位置,以確保快速存取個別 tensors?
  • 無檔案大小限制:檔案大小是否有上限?
  • 靈活性:是否可以將自訂程式碼儲存在格式中,並在以後使用,而無需額外的程式碼?
  • Bfloat16:該格式是否支援原生 bfloat16,而無需奇怪的變通方法?

每個符號 ✔ 代表存在,❌ 代表不存在,~ 代表部分存在,? 代表未知。

格式安全零複製延遲載入無檔案大小限制佈局控制靈活性Bfloat16
SafeTensors
pickle (PyTorch)
H5 (Tensorflow)~~
SavedModel (Tensorflow)
MsgPack (flax)
Protobuf (ONNX)
Cap’n’Proto~~
Numpy (npy,npz)??
pdparams (Paddle)

從這個比較中,您可以看到 Safetensors 符合或超過了其他模型格式提供的功能。它尤其以其「零複製」資料操作和延遲載入功能而聞名,這可以顯著提高機器學習任務中資料處理的效率。

一些值得注意的比較

雖然所有格式都有其獨特的優勢,但讓我們來看看 Safetensors 如何與一些更常用的格式相比:

  • Pickle (PyTorch):一種廣泛使用的格式,但 pickle 有一個重大的缺點——它不安全,因為它允許執行任意程式碼。
  • H5 (Tensorflow):雖然安全,但它不支援零複製,這是高效資料操作不可或缺的功能。
  • SavedModel (Tensorflow):此格式特定於 Tensorflow,並且缺乏其他應用程式的靈活性。
  • Numpy (npz):雖然很流行,但此格式不支援 bfloat16,這在機器學習領域越來越重要。

Safetensors 的底層原理

深入研究 Safetensors,我們發現它不僅僅是一種資料格式,而且是深思熟慮的設計選擇的組合,可增強安全性、效率和實用性:

  • 零複製:如果檔案已在快取中,Safetensors 的設計允許在 CPU 上實現真正的零複製。在 GPU 上,雖然由於缺少磁碟快取,始終需要複製,但該設計繞過了在任何給定時間在 CPU 上配置所有 tensors 的需要。
  • 位元組順序:Safetensors 使用小端位元組順序,這是資料儲存中的常見選擇。
  • 順序:它採用「C」或 row-major 順序。此選擇與資料儲存中的普遍標準一致。
  • 步幅:不支援步幅。所有 tensors 都需要在序列化之前進行封裝。此設計決策是根據序列化格式中的當前使用模式做出的。

更進一步

除了僅僅是一種高效且安全的資料儲存格式之外,Safetensors 還帶來了一些額外的優勢:

  • 防止 DOS 攻擊:Safetensors 的設計減輕了惡意檔案導致 DOS 攻擊的可能性。標頭大小有限制,以防止解析極大的 JSON,並且保證檔案中的位址不重疊,這意味著載入檔案永遠不應超過檔案在記憶體中的大小。
  • 更快的載入速度:Safetensors 繞過了 PyTorch 中的額外 CPU 複製,與 pickle 相比,實現了極快的 CPU 載入時間。GPU 載入時間與 PyTorch 等效項一樣快或更快。
  • 延遲載入:在分散式環境(多節點或多 GPU)中,Safetensors 能夠僅載入部分 tensors,從而顯著加快模型載入時間並改善開發回饋迴圈。

實際應用

Safetensors 已經在領先的 AI 企業中得到廣泛採用,例如 Hugging FaceEleutherAIStabilityAI。幾個使用 Safetensors 的著名專案包括:

總之,Safetensors 憑藉其獨特的功能和優勢,已準備好成為機器學習和資料儲存領域的遊戲規則改變者。所以,繼續前進,試一試吧——模型格式的未來在等著您!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *