TensorFlow的SavedModel格式和PyTorch的TorchScript对比?
SavedModel 是 TensorFlow 的标准部署格式:一个目录,包含 pb 图(或 MLIR)、变量/权重(如 variables/)、签名(输入/输出名与 shape)、以及 assets 等。支持多 signature(如 predict、train_step),TF Serving、TFLite、TF.js 等都能直接加载;图通常是「已优化、可执行」的静态图,控制流已用 tf.cond/while 等固化。
TorchScript 是 PyTorch 的可序列化、可部署的表示:可以是 trace 得到的图(与示例输入绑定的静态图),或 script 得到的图(带控制流的 IR)。保存成 .pt/.pts 文件,在 C++ 的 LibTorch 里用 torch::jit::load() 加载、无 Python 运行;也可再转 ONNX。和 eager 的「Python + 动态图」是两套:TorchScript 偏部署与跨语言。
| 维度 | SavedModel | TorchScript |
|---|---|---|
| 形态 | 目录(图 + 变量 + 签名) | 文件(.pt/.pts,图 + 权重) |
| 图来源 | tf.function / 建图 API | trace 或 script |
| 控制流 | 图内 tf.cond/while | trace 固化为单分支;script 保留 |
| 多签名 | 原生多 signature | 一般单入口,可多方法 |
| 加载环境 | TF runtime、TF Serving 等 | LibTorch C++、或再转 ONNX |
| 生态 | TF 全栈、TFLite、TF.js | PyTorch 部署、ONNX、移动端需再转 |
| 返回模块 | 返回总览 |