模型序列化格式
模型序列化是如何将经过训练的机器学习模型保存到磁盘,以便稍后可以在不同的机器上或以不同的语言加载和运行。
概述
您选择的格式会影响可移植性、速度、文件大小,甚至安全性。
深入探讨
训练后,模型只是数字(权重)加上其架构的描述。序列化将该状态写入文件中。不同的生态系统使用不同的格式。 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 提供预测的图表和变量。
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实际负载和数据条件下进行基准测试。
仪器监控错误、漂移和用户影响。
在扩展之前准备回滚和事件响应路径。
不断探索
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
常见问题
什么是模型序列化格式?
模型序列化是如何将经过训练的机器学习模型保存到磁盘,以便稍后可以在不同的机器上或以不同的语言加载和运行。您选择的格式会影响可移植性、速度、文件大小,甚至安全性。
为什么 Python 的 pickle 格式被认为是模型的安全风险?
Unpickling 可以运行任意代码,因此加载不受信任的 pickle 文件可能会危害您的系统。
ONNX 格式的主要优点是什么?
ONNX 是一种框架中立的交换格式,可实现跨运行时、语言和硬件的可移植性。
为什么安全张量在共享模型权重方面变得流行?
Safetensors避免了pickle的代码执行风险,通过内存映射快速加载,安全高效。
GGUF 与哪个用例最相关?
GGUF 是在本地高效分发和运行量化 LLM 的事实上的格式。
像 ONNX 这样的交换格式主要存储什么?
ONNX 以标准模式捕获模型的计算图和参数,以便任何兼容的运行时都可以执行它。