
🔄 跨框架交换格式:ONNX
ONNX (Open Neural Network Exchange) 是一种开放的、与框架无关的模型表示标准。它的核心价值在于互操作性,可以把它理解成 AI 模型界的"通用语言"或"中间翻译"。
-
主要作用:它定义了一个可扩展的计算图模型和一套标准的算子集,让模型可以在不同的深度学习框架(如 PyTorch、TensorFlow)和不同的推理引擎(如 TensorRT、OpenVINO)之间自由转换和部署,避免被单一框架"锁定"。
-
文件格式 :通常以
.onnx为扩展名。 -
典型流程 :你可以将 PyTorch 训练的模型导出为 ONNX 格式,然后这个
.onnx文件可以被 TensorRT 或 ONNX Runtime 等引擎加载,以在不同硬件上实现高效推理。
📦 主要框架的原生格式
这些格式是各个深度学习框架在训练过程中直接保存的格式,通常包含了模型结构、权重、优化器状态等完整信息。
| 格式 | 所属框架 | 主要文件/扩展名 | 特点 |
|---|---|---|---|
| TensorFlow SavedModel | TensorFlow | 一个目录,包含 saved_model.pb 等文件 |
TensorFlow 的标准保存格式,包含完整的计算图和变量,可直接用于部署。 |
| PyTorch 序列化格式 | PyTorch | .pt 或 .pth |
PyTorch 的标准保存格式,用于保存整个模型或仅保存 state_dict(模型参数)。 |
| PaddlePaddle 模型 | PaddlePaddle (飞桨) | .pdmodel (结构) + .pdiparams (参数) |
百度飞桨框架的推理模型格式,训练时还会生成 .pdparams 等文件。 |
| Keras H5 / Keras v3 | Keras (TF 高阶API) | .h5 / .keras |
Keras 模型保存格式。H5 是传统格式,.keras 是 Keras v3 的新原生格式。 |
| MXNet 模型 | Apache MXNet | .json (符号) + .params (权重) |
MXNet 的标准格式,分别存储网络拓扑结构和参数。 |
| Caffe 模型 | Caffe | .caffemodel (权重) + .prototxt (结构) |
早期深度学习框架 Caffe 的格式,通常与框架紧密绑定。 |
⚡️ 针对特定硬件的优化/推理格式
这些格式通常是为了在特定硬件(如 GPU、移动端 NPU)上获得极致的推理性能而设计的,它们往往是从通用格式转换而来。
| 格式 | 目标平台 | 主要扩展名 | 特点 |
|---|---|---|---|
| TensorRT Engine | NVIDIA GPU | .engine 或 .plan |
高度优化的推理引擎,针对 NVIDIA GPU 做了极致加速,通常从 ONNX 转换而来。 |
| Core ML | Apple 设备 (iOS/macOS) | .mlmodel 或 .mlpackage |
苹果生态的模型格式,可在 iPhone、iPad、Mac 等设备上高效运行,支持神经网络、树集成等多种模型。 |
| TFLite | 移动端 & 嵌入式设备 | .tflite |
使用 FlatBuffers 格式,专为移动和嵌入式设备设计,模型体积小、推理速度快。 |
| OpenVINO IR | Intel 硬件 (CPU/GPU/VPU) | .xml (结构) + .bin (权重) |
Intel 的推理工具套件,用于在 Intel 平台上优化和部署模型,支持从多种框架转换。 |
🔬 其他值得关注的格式
-
GGUF :一种专为 大语言模型 (LLM) 设计的格式,常见于
llama.cpp等社区项目。它支持将模型权重进行不同等级的量化,从而让 LLM 能在消费级硬件上运行。 -
Safetensors :由 Hugging Face 推出,旨在安全地存储模型权重。它比传统的 pickle 格式更快、更安全,正在成为存储大模型权重的热门选择。
-
JAX/Flax :JAX 生态的模型通常以 Orbax 检查点或通过
jax2tf、jax2onnx等工具转换为 SavedModel 或 ONNX 格式进行部署。
💎 总结与建议
在实际项目中,选择哪种格式取决于你的具体目标:
-
跨框架开发 :首选 ONNX,它能让你的模型在 PyTorch、TensorFlow 和不同推理引擎间灵活迁移。
-
部署到特定硬件 :根据目标平台选择优化格式,如 TensorRT (NVIDIA GPU) 、Core ML (Apple) 、TFLite (移动端) 或 OpenVINO (Intel)。
-
运行大语言模型 (LLM) :GGUF 和 Safetensors 是目前社区最活跃的选择。
-
模型训练与保存 :直接使用对应框架的原生格式即可,如 PyTorch 的
.pt或 TensorFlow 的SavedModel。
如果你有特定的部署平台或应用场景,可以告诉我,我再帮你分析哪种格式更合适。