技術指南

模型序列化格式

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

概述

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

模型序列化格式是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。

深入探討

訓練後,模型只是數字(權重)加上其架構的描述。序列化將該狀態寫入檔案中。不同的生態系使用不同的格式。 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 提供預測的圖表和變數。

實施模式

實踐中的模型序列化格式

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

團隊在 PyTorch 中訓練模型,將其匯出到 ONNX,並在不依賴 Python 的 C# 應用程式中運行它。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

實踐中的模型序列化格式

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

Hugging Face 將模型權重作為安全張量進行分配,因此使用者可以下載它們,而不會產生惡意程式碼執行的風險。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並追蹤一段時間內的生產力提升和錯誤成本時,通常會獲得更好的結果。

實踐中的模型序列化格式

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

開發人員下載量化 LLM 的 GGUF 文件,在筆記型電腦 CPU 上本地運行。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並追蹤一段時間內的生產力提升和錯誤成本時,通常會獲得更好的結果。

實踐中的模型序列化格式

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

TensorFlow 服務載入一個 SavedModel 目錄,其中包含用於透過 API 提供預測的圖形和變數。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並追蹤一段時間內的生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

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

!

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

!

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

實施路線圖

1

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

在實施之前定義延遲、品質和成本目標。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

2

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

在實際負載和資料條件下進行基準測試。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

3

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

儀器監控錯誤、漂移和使用者影響。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

4

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

在擴展之前準備回滾和事件回應路徑。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

不斷探索