技术指南

模型序列化格式

模型序列化是如何将经过训练的机器学习模型保存到磁盘,以便稍后可以在不同的机器上或以不同的语言加载和运行。

概述

模型序列化是如何将经过训练的机器学习模型保存到磁盘,以便稍后可以在不同的机器上或以不同的语言加载和运行。您选择的格式会影响可移植性、速度、文件大小,甚至安全性。

模型序列化格式是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。

深入探讨

训练后,模型只是数字(权重)加上其架构的描述。序列化将该状态写入文件中。不同的生态系统使用不同的格式。 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

在扩展之前准备回滚和事件响应路径。

在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

不断探索