第1章 · ONNX 与 Runtime 概览


第1章 · ONNX 与 Runtime 概览

章节摘要:厘清 ONNX 中间表示、ORT 分层架构与 InferenceSession 生命周期。读完能解释「为什么同一份 .onnx 在不同 EP 上行为可能不同」,并独立完成 PyTorch → ONNX 的首轮导出验证。

本章要解决的问题

部署链路的第一段是"把训练好的模型变成一张可移植的计算图"。三个问题会反复出现:第一,导出的 .onnx 文件到底长什么样,为什么有时候 onnx.load 能读、ORT 却跑不起来;第二,InferenceSession 创建之后发生了什么,为什么创建耗时波动巨大;第三,Session、EP、Kernel 这些术语在代码里分别对应什么,报错信息里提到的名字和文档里的架构图如何一一对上。本章用三节依次拆解:1.1 讲 ONNX 格式与导出参数,1.2 讲 ORT 内部四层结构与 Session 生命周期,1.3 讲核心术语与张量数值契约。

阅读收获

  1. 说明 ONNX 节点、边、图三要素及 opset 作用
  2. 画出 ORT 从加载到 run 的主路径
  3. 区分 Session、EP、Kernel 三个核心概念
  4. 列出导出阶段三类常见失败原因

主路径总览

创建 InferenceSession 时发生的事远比"读文件"多:解析模型、做形状推断、按优化级别跑图变换、按 EP 的 GetCapability 分区、为每个节点选 kernel、规划内存。这个流程走完,session.run 才真正开始执行。理解这张图,是后面五章的共同前提。

子章节

节 主题 解决的核心问题 关键产出
1.1 ONNX 格式与导出链路 导出后 ORT 报错或 shape 对不上 可用 torch.onnx.export 脚本 + 双重验证
1.2 ORT 架构与 Session 模型 Session 创建到 run 的时序与混合执行 SessionOptions/providers 最小配置
1.3 核心术语与张量契约 EP/Kernel/OrtValue 关系与跨 EP 数值差异 数值验收基线方案

1.1 ONNX 格式与导出链路

1.2 ORT 架构与 Session 模型

1.3 核心术语与张量契约

前置知识与后续延伸

  • 前置:PyTorch 或 TensorFlow 基本训练/推理
  • 后续:第2章图优化(Session 内部的第一段流水线)、第3章 EP 选型(分区与 kernel 落在哪)
  • 贯穿线索:session.run 的性能与行为由"优化级别 + EP 组合 + 内存策略 + 线程数"共同决定,第2、3、4章分别展开其中一项

本章动手验证清单

  1. 用 torch.onnx.export 导出一个两层 MLP,用 onnx.checker.check_model 通过
  2. 用 onnxruntime.InferenceSession 加载,比较 get_providers() 与实际 device
  3. 同一模型分别设置 graph_optimization_level 为 BASIC 与 ALL,对比 session.run 首次耗时
  4. 打印 sess.get_session_options() 确认配置生效
作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U