Format Atlas

对比

Safetensors 与 ONNX:权重保存与模型图

Safetensors 保存带名称的张量。ONNX 描述包含计算图、输入输出和算子版本的模型。

应该选择哪种格式?

向兼容模型加载权重时可考虑 Safetensors;向兼容运行时交付计算图时可考虑 ONNX。

适用于 Safetensors

保存和分发机器学习张量权重 · 在受支持的框架间加载权重

  • 交换张量和基本元数据而非任意 Python 对象
  • 检查并按需加载指定张量的流程

适用于 ONNX

向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型

  • 在支持模型算子和 opset 的运行时中推理
  • 交换包含输入输出和类型的模型图

基本信息

项目SafetensorsONNX
扩展名.safetensors.onnx
MIME 类型application/octet-streamapplication/octet-stream
常见用途保存和分发机器学习张量权重 · 在受支持的框架间加载权重向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型
打开方式使用兼容 Safetensors 的库或模型工具。支持的工具可以在将权重全部载入设备前查看张量名称、类型和形状。JSON 头部并不意味着整个文件都是 JSON 文本。使用 ONNX 检查器或兼容推理运行时加载。部署前检查 IR/opset 版本、算子、输入输出类型和形状及运行时支持;使用有代表性的输入与源模型比较输出。
导出或转换通过模型框架支持的 API 保存张量权重。将基于 pickle 的输入转换为该格式时可能需要反序列化输入,因此不要随意加载来源不可信的文件。转换后核对张量名称、形状、类型、元素总数和模型输出。使用源训练框架提供的 ONNX 导出器转换,并用 ONNX checker 验证结构。转换成功不保证数值等价或能在目标设备运行。使用外部数据时,将模型和所有引用文件作为同一交付单元保存。

按用途选择

交换张量和基本元数据而非任意 Python 对象

保存和分发机器学习张量权重 · 在受支持的框架间加载权重

Safetensors

检查并按需加载指定张量的流程

保存和分发机器学习张量权重 · 在受支持的框架间加载权重

Safetensors

在支持模型算子和 opset 的运行时中推理

向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型

ONNX

交换包含输入输出和类型的模型图

向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型

ONNX

关键点 1

Safetensors 本身不定义模型结构或推理代码。

进一步了解差异

关键点 2

ONNX 可包含图的初始化张量,也可引用外部数据。

进一步了解差异

进一步了解差异

两者不能直接互相替代。由权重生成 ONNX 需要模型定义和受支持的导出流程,改扩展名不会生成计算图。

  • Safetensors 头部记录张量名称、dtype、shape 和数据范围。分片索引、配置、分词器等依赖需另行确认。
  • 应核对运行时对 ONNX IR/opset、算子和类型的支持,并保留外部权重引用。用相同预处理和代表输入比较输出;结构检查通过不保证精度或速度。

常见问题

Safetensors 可以不管来源而直接信任吗?

不能。它避免 pickle 式任意对象重建,但不保证来源、加载器、依赖代码或模型自身安全。

了解详情

相关用途与检查步骤

AI模型交接前的检查流程

参考资料与规范