技術指南

模型序列化格式

模型序列化是如何將經過訓練的機器學習模型儲存到磁碟,以便稍後可以在不同的機器上或以不同的語言載入和運行。

閱讀時間約2分鐘最後更新

概述

The format you choose affects portability, speed, file size, and even security.

深入探討

訓練後,模型只是數字(權重)加上其架構的描述。序列化將該狀態寫入檔案中。不同的生態系使用不同的格式。 Python 的 pickle 和 PyTorch 的預設 .pt 檔案很方便,但會將您與 Python 捆綁在一起,並且可以在載入時執行任意程式碼,從而使它們成為不受信任檔案的安全風險。 ONNX(開放神經網路交換)是一種框架中立的格式,允許在 PyTorch 中訓練的模型在另一種執行時間或語言中運行。 SavedModel 和舊版 HDF5 服務於 TensorFlow 和 Keras。對於大型語言模型,safetensors 變得很流行,因為它僅以簡單、快速、可內存映射的佈局存儲張量數據,無需執行任何代碼,使其加載更安全、更快。 GGUF 廣泛用於在本地硬體上高效運行量化 LLM。

技術洞察

關鍵的權衡在於框架原生格式和交換格式之間。本機格式(pickle、.pt)捕獲完整的 Python 對象,但需要相同的程式碼來反序列化,並且可能運行隱藏程式碼。 ONNX 等交換格式將計算圖和權重匯出到標準化模式(使用協定緩衝區),以便任何相容的執行時間都可以執行它。 Safetensors 做到了最小化:一個小的 JSON 標頭描述每個張量的名稱、形狀和資料類型,後面跟著原始字節,從而實現零拷貝記憶體映射。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

模型序列化格式的未來

預計安全、便攜格式將繼續整合。 Safetensors 正在成為公開共享模型權重的預設設置,因為它消除了 pickle 的代碼執行風險,而 GGUF 是本地 LLM 量化推理的事實上的標準。 ONNX 會作為訓練框架與邊緣設備、瀏覽器和加速器上的最佳化部署執行時間之間的橋樑而不斷擴展。整體而言,此趨勢有利於語言中立、記憶體高效且設計安全的格式。

現實世界的實施

團隊在 PyTorch 中訓練模型,將其匯出到 ONNX,並在不依賴 Python 的 C# 應用程式中運行它。

Hugging Face 將模型權重作為安全張量進行分配,因此使用者可以下載它們,而不會產生惡意程式碼執行的風險。

開發人員下載量化 LLM 的 GGUF 文件,以便在筆記型電腦 CPU 上本地運行它。

TensorFlow 服務會載入一個 SavedModel 目錄,其中包含用於透過 API 提供預測的圖表和變數。

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Model Serialization Formats quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

常見問題

What is Model Serialization Formats?

模型序列化是如何將經過訓練的機器學習模型儲存到磁碟,以便稍後可以在不同的機器上或以不同的語言載入和運行。您選擇的格式會影響可攜性、速度、檔案大小,甚至安全性。

為什麼 Python 的 pickle 格式被認為是模型的安全風險?

Unpickling 可以運行任意程式碼,因此載入不受信任的 pickle 檔案可能會危害您的系統。

ONNX 格式的主要優點是什麼?

ONNX 是一種框架中立的交換格式,可實現跨執行時間、語言和硬體的可攜性。

為什麼安全張量在共享模型權重方面變得流行?

Safetensors避免了pickle的程式碼執行風險,透過記憶體映射快速加載,安全高效。

GGUF 與哪個用例最相關?

GGUF 是在本地高效分發和運行量化 LLM 的事實上的格式。

像 ONNX 這樣的交換格式主要儲存什麼?

ONNX 以標準模式捕捉模型的計算圖和參數,以便任何相容的運行時都可以執行它。