ai-infra-interview-305

第 6 题:torch.jit.tracetorch.jit.script的区别?什么情况下会失败?

题目

torch.jit.tracetorch.jit.script的区别?什么情况下会失败?


完整讲解

一、Trace 和 Script 各自在干什么?

一句话:trace = 用一次运行「拍快照」;script = 把代码「翻译」成图。


二、主要区别

维度 trace script
输入 需要示例输入,跑一遍 不需要运行,解析源码
控制流 固化为当时走的那条分支 保留 if/for,图中有控制流
数据相关 与示例输入绑死(如 shape 固定) 可写动态 shape、动态分支
Python 特性 只保留执行到的代码 受限支持(见下),部分不支持

三、Trace 什么时候会失败或不对?


四、Script 什么时候会失败?


五、实践建议


面试要点


记忆要点

  1. trace:跑一次录图,控制流和 shape 绑死示例输入;script:解析源码,图里带控制流。
  2. trace 坑:数据相关 if、动态 shape、未走到分支;script 坑:语法/类型/非 script 调用。
  3. 静态场景 trace,动态分支 script;部署/ONNX 仍常用 trace。
返回模块 返回总览