ai-infra-interview-305

第 19 题:TensorFlow的SavedModel格式和PyTorch的TorchScript对比?

题目

TensorFlow的SavedModel格式和PyTorch的TorchScript对比?


完整讲解

一、SavedModel 是什么?

SavedModel 是 TensorFlow 的标准部署格式:一个目录,包含 pb 图(或 MLIR)、变量/权重(如 variables/)、签名(输入/输出名与 shape)、以及 assets 等。支持多 signature(如 predict、train_step),TF Serving、TFLite、TF.js 等都能直接加载;图通常是「已优化、可执行」的静态图,控制流已用 tf.cond/while 等固化。


二、TorchScript 是什么?

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、移动端需再转

四、使用场景


面试要点


记忆要点

  1. SavedModel:目录、多签名、TF 部署与 Serving;TorchScript:文件、trace/script、LibTorch/ONNX。
  2. 控制流:SavedModel 图内;TorchScript trace 固化为单分支、script 保留。
  3. 选型:TF 栈用 SavedModel;PyTorch 无 Python 部署用 TorchScript 或再转 ONNX。
返回模块 返回总览