ARTICLE · 1225884
端侧AI工具链原理(02):模型格式
端侧AI工具链原理(02):模型格式
端侧AI工具链原理(02):模型格式
模型从 PyTorch 导出成 ONNX,再转 TFLite,结果变了。换一种导出方式,结果也变了。
开发时的 PyTorch 带着 Python 控制流和动态维度。端侧编译器跑不了任意 Python,只能靠 Export 或 Tracing 抓图。Tracing 只记某组输入走过的路,数据依赖分支就被固化了。
ONNX 只是个交换格式,不代表目标 NPU 真能跑。同名算子在不同版本里语义可能不同。比如 Resize,用旧逻辑解析新版本,转换照样成功,边界像素却会出系统性误差。
TFLite 更接近部署资产,但也不是所有手机 NPU 的通用格式。设备厂商靠 Delegate 接管支持的子图,剩下的还得 CPU 兜底。
真正容易翻车的,是那些不报错但算错的细节。比如 Layout,NCHW 和 NHWC 元素数量一样。转换器只交换 Shape 数字却不传语义,Channel 和 Width 就被错解了。
还有动态维度,不能只写个 -1。没有范围就定不下 Buffer 上界,没有约束关系就消除不了 Runtime 检查。
量化也一样。只保留 INT8 Tensor 而丢了 Scale、Zero Point,数值语义已经残缺。
所以验收别只看最终准确率。得查结构、对关键算子、比中间 Tensor,最后再用完整数据集跑任务指标。
可移植的是明确语义,不是文件后缀。
原文端侧AI工具链原理(02):PyTorch、ONNX、TFLite与IR:模型格式不是一张通用船票
收录于AI SoC全栈贴图
作者提示: 个人观点,仅供参考
广东,3小时前,















































































