新書推薦:

《
中国土司制度史料集成(全十九册)
》
售價:HK$
5478.0

《
守护健康:纽约市公共卫生制度的构建(1866—1920)
》
售價:HK$
96.8

《
岩体边坡锚固结构体系安全性评价指标体系研究
》
售價:HK$
72.6

《
癌症幸存者的秘密
》
售價:HK$
50.2

《
专业主义 (美)大卫·梅斯特
》
售價:HK$
86.9

《
城市计算 郑宇
》
售價:HK$
130.9

《
赢在常识:巴菲特的投资原则
》
售價:HK$
54.8

《
第六次中国总膳食研究
》
售價:HK$
657.8
|
內容簡介: |
ONNX(Open Neural Network Exchange,开放神经网络交换)是一种开放格式,用于存储深度神经网络模型。ONNX 由微软和Facebook 于2017 年共同推出,旨在促进不同深度学习框架之间的模型交换和互操作性。ONNX 定义了一组与环境和平台无关的标准格式,使得AI 模型可以在不同的框架和环境下交互使用。经过短短几年的发展,ONNX 已经成为表示深度学习模型的实际标准。它还支持传统非神经网络机器学习模型。ONNX 有望成为整个AI 模型交换的标准。全书包括6 章,分别为ONNX 安装与使用、ONNX 运行时与应用开发技术、ONNX 各种功能与性能分析、ONNX 数据与操作数优化、ONNX 模型性能与应用、ONNX 创新开发案例分析。本书适合从事AI 算法、软件、硬件开发的工程师阅读,也可供科研人员、高校师生、技术管理人员参考使用。
|
目錄:
|
第1章 ONNX 安装与使用
1.1 安装ONNX 运行时(ORT) 001
1.1.1 环境要求 001
1.1.2 使用Python 安装ONNX 001
1.1.3 使用C# /C/C++/WinML 安装ONNX 002
1.2 使用ONNX 运行时 006
1.2.1 在Python 中使用ONNX 运行时 006
1.2.2 在C++中使用ONNX 运行时 010
1.3 构建ONNX 运行时 010
1.3.1 构建ONNX 运行时的方式 010
1.3.2 ONNX 运行时API 概述 017
1.3.3 API 详细信息 021
1.4 支持程序相关API 028
第2章 ONNX 运行时与应用开发技术
2.1 ONNX 运行时支持程序 035
2.1.1 ONNX 运行时支持程序简介 035
2.1.2 支持程序摘要 036
2.1.3 添加支持程序 036
2.2 ONNX 原理介绍 037
2.2.1 ONNX 基本概念 037
2.2.2 ONNX 的输入、输出、节点、初始化器、属性 038
2.2.3 元素类型 039
2.2.4 什么是opset 版本? 040
2.2.5 子图、测试和循环 040
2.2.6 算子扫描 040
2.2.7 工具 041
2.3 ONNX 与Python 042
2.3.1 线性回归示例042
2.3.2 初始化器,改进的线性规划 046
2.3.3 遍历ONNX 结构并检查初始化器 048
2.4 运算符属性 049
2.5 根据符号计算矩阵中所有浮点数的总和 052
2.6 树集合回归器 058
2.7 程序创建和验证模型功能 059
2.8 ONNX 模型使用开发示例分析 059
2.8.1 开发环境 060
2.8.2 创建控制台应用程序 060
2.8.3 时间序列异常检测 061
2.8.4 尖峰检测 062
2.9 在ML.NET 中使用ONNX 检测对象 066
2.9.1 环境配置 066
2.9.2 目标检测示例 066
第3章 ONNX 各种功能与性能分析
3.1 Python API 概述 090
3.1.1 加载ONNX 模型 090
3.1.2 加载带有外部数据的ONNX 模型 090
3.1.3 操作TensorProto 和Numpy 数组 091
3.1.4 使用辅助函数创建ONNX 模型 092
3.1.5 用于映射ONNX IR 中属性的转换实用程序 093
3.1.6 检查ONNX 模型 094
3.1.7 ONNX 实用功能 096
3.1.8 ONNX 形状推理 099
3.1.9 ONNX 模型文本语法 101
3.1.10 类型表示 102
3.1.11 ONNX 版本转换器 103
3.2 ONNX 中的广播 105
3.2.1 多向广播 105
3.2.2 单向广播 105
3.3 ONNX 操作符可区分性标签简短指南 106
3.3.1 差异性标签 106
3.3.2 定义差异性标签的方法 106
3.4 维度表示 108
3.4.1 维度表示的目的 108
3.4.2 表示定义 108
3.4.3 表示传播 109
3.4.4 表示验证 109
3.5 外部数据 109
3.5.1 加载带有外部数据的ONNX 模型 109
3.5.2 将ONNX 模型转换为外部数据 110
3.5.3 使用外部数据检查模型 110
3.6 ONNX 模型库 111
3.6.1 基本用法 111
3.6.2 ONNX 中心架构 113
3.7 开放神经网络交换中间表示(ONNX IR)规范 114
3.7.1 ONNX IR 中间表示的作用 114
3.7.2 ONNX IR 中间表示组件 115
3.7.3 可扩展计算图模型 115
3.7.4 数据流图 119
3.7.5 张量表达式 122
3.7.6 静态张量形状 122
3.8 实现ONNX 后端 125
3.8.1 什么是ONNX 后端? 125
3.8.2 统一后端接口 125
3.8.3 ONNX 后端测试 125
第4章 ONNX 数据与操作数优化
4.1 管理实验操作符和图像类别定义 126
4.1.1 弃用的实验操作符 126
4.1.2 图像类别定义 126
4.2 ONNX 类型 127
4.2.1 PyTorch 中的示例 127
4.2.2 操作符惯例 129
4.3 E4M3FNUZ 和E5M2FNUZ 129
4.3.1 指数偏差问题 129
4.3.2 Cast 节点用于数据类型转换 130
4.4 整数类型(4 位) 131
4.4.1 整数类型(4 位)概述 131
4.4.2 Cast 节点用于数据类型转换、包装和拆包 132
4.5 浮点数(4 位) 132
4.5.1 浮点数(4 位)概述 132
4.5.2 E2M1、包装和拆包 132
4.6 ONNX 如何使用onnxruntime.InferenceSession 函数 133
4.6.1 操作符测试代码示例 133
4.6.2 函数定义 134
4.6.3 函数属性 137
4.7 自定义算子 138
4.7.1 添加算子 138
4.7.2 控制操作测试 139
4.7.3 自定义运算符 139
4.7.4 缩减运算符配置文件 145
4.8 分析工具 147
4.8.1 代码内性能分析 147
4.8.2 支持程序分析 147
4.8.3 GPU 性能分析 148
4.8.4 记录和跟踪 148
4.9 线程管理 149
4.9.1 主要内容介绍 149
4.9.2 设置操作内线程数 150
4.9.3 线程旋转规则 151
4.9.4 设置互操作线程数 151
4.9.5 设置操作内线程关联 151
4.9.6 Numa 支持和性能调优 152
4.10 自定义线程回调与应用 152
4.10.1 自定义线程回调 152
4.10.2 在自定义操作中的I/O 绑定 153
4.11 量化ONNX 模型 155
4.11.1 量化概述 155
4.11.2 ONNX 量化表示格式 155
4.11.3 量化ONNX 模型 156
4.11.4 量化示例 158
4.11.5 方法选择 158
4.11.6 量化为Int4/UInt4 159
4.12 创建float16 和混合精度模型 161
4.12.1 float16 转换解析 161
4.12.2 混合精度 162
第5章 ONNX 模型性能与应用
5.1 ONNX 运行时图形优化 163
5.1.1 ONNX 运行时图形优化概述 163
5.1.2 ONNX 运行时图形优化使用方法 165
5.2 ORT 模型格式 166
5.2.1 ORT 模型格式是什么? 166
5.2.2 将ONNX 模型转换为ORT 格式 167
5.2.3 将ONNX 模型转换为ORT 格式脚本用法 168
5.3 加载并执行ORT 格式的模型 170
5.3.1 不同平台的运行环境 170
5.3.2 ORT 格式模型加载 170
5.3.3 从内存中的字节数组加载ORT 格式模型 171
5.3.4 ORT 格式模型运行时优化 172
5.4 BERT 模型验证 174
5.4.1 BERT 模型验证概述 174
5.4.2 对模型进行基准测试和分析 174
5.4.3 Olive-硬件感知模型优化工具 175
5.5 AzureML 上ONNX 运行时的高性能推理BERT 模型 179
5.5.1 AzureML 上ONNX 运行时BERT 模型概述 179
5.5.2 步骤1-预训练、微调和导出BERT 模型(PyTorch) 179
5.5.3 步骤2-通过AzureML 使用ONNX 运行时部署BERT 模型 181
5.5.4 步骤3-检查AzureML 环境 181
5.5.5 步骤4-在AzureML 中注册模型 182
5.5.6 步骤5-编写评分文件 183
5.5.7 步骤6-写入环境文件 187
5.5.8 步骤7-在Azure 容器实例上将模型部署为Web 服务 187
5.5.9 步骤8-使用WebService 推理BERT 模型 188
第6章 ONNX 创新开发案例分析
6.1 FedAS:弥合个性化联合学习中的不一致性 190
6.1.1 概述 190
6.1.2 技术分析 190
6.1.3 结论 191
6.2 快照压缩成像的双先验展开 192
6.2.1 概述 192
6.2.2 技术分析 192
6.2.3 结论 193
6.3 利用光谱空间校正改进光谱快照重建 193
6.3.1 概述 193
6.3.2 技术分析 193
6.3.3 结论 194
6.4 基于位平面切片的学习型无损图像压缩 194
6.4.1 概述 194
6.4.2 技术分析 195
6.4.3 结论 195
6.5 LiDAR4D:用于新型时空观激光雷达合成的动态神经场 195
6.5.1 概述 195
6.5.2 技术分析 196
6.5.3 结论 196
6.6 用于图像恢复的具有注意特征重构的自适应稀疏变换器 197
6.6.1 概述 197
6.6.2 技术分析 197
6.6.3 结论 198
6.7 面向目标检测中边界不连续性问题的再思考 198
6.7.1 概述 198
6.7.2 技术分析 199
6.7.3 结论 199
6.8 综合、诊断和优化:迈向精细视觉语言理解 200
6.8.1 概述 200
6.8.2 技术分析 200
6.8.3 结论 201
6.9 光谱和视觉光谱偏振真实数据集 201
6.9.1 概述 201
6.9.2 技术分析 202
6.9.3 结论 203
6.10 CoSeR 桥接图像和语言以实现认知超分辨率 204
6.10.1 概述 204
6.10.2 技术分析 204
6.10.3 结论 212
6.11 SAM-6D: 分段任意模型满足零样本6D 对象姿态估计 213
6.11.1 概述 213
6.11.2 技术分析 213
6.11.3 结论 214
6.12 NeISF:用于几何和材料估计的神经入射斯托克斯场 215
6.12.1 概述 215
6.12.2 技术分析 215
6.13 Monkey 图像分辨率和文本标签是大型多模态模型的重要内容 217
6.13.1 概述 217
6.13.2 技术分析 218
6.13.3 结论 219
6.14 CorrMatch:通过相关性匹配进行标签传播,用于半监督语义分割 219
6.14.1 概述 219
6.14.2 技术分析 220
6.15 VCoder:多模态大型语言模型的多功能视觉编码器 220
6.15.1 概述 220
6.15.2 技术分析 220
6.15.3 结论 221
参考文献
|
內容試閱:
|
ONNX(Open Neural Network Exchange)是一种开放的格式,用于表示深度学习模型。它允许模型在不同的深度学习框架之间进行转换和共享,是当今世界最广泛应用的AI标准之一。ONNX旨在提供一个通用的中间表示,使得在不同框架(如PyTorch、TensorFlow、MXNet等)中训练的模型能够轻松地在其他框架中部署和运行。
① ONNX主要优势有:
互操作性:使模型能够在不同框架之间无缝转换。
优化:提供统一的格式,便于进行模型优化和加速。
扩展性:支持新的运算符和模型类型。
② ONNX主要特点有:
跨框架支持:ONNX支持多种主流深度学习框架,包括PyTorch、TensorFlow、Keras、Caffe2等。
跨平台支持:ONNX 模型可以在不同的硬件和操作系统上运行,包括CPU、GPU 和专用加速器。
工具丰富:ONNX生态系统提供了多种工具,用于模型转换、优化和推理。
③ ONNX核心组件有:
ONNX模型:由计算图(Graph)组成,包含节点(Nodes)、输入输出(Inputs/Outputs)和初始值(Initializers)。
ONNX Runtime:一个高性能推理引擎,用于执行ONNX模型。
ONNX Converter:用于将不同框架的模型转换为ONNX格式。
④ ONNX工作流程为:
模型训练:在支持的框架中训练模型。
模型导出:将训练好的模型导出为ONNX格式。
模型优化:使用ONNX工具对模型进行优化。
模型推理:使用ONNX Runtime或其他支持ONNX的推理引擎进行模型推理。
⑤ ONNX主要应用场景有:
跨框架部署:在多个框架中训练的模型可以统一转换为ONNX 格式,便于部署。
模型优化:通过ONNX提供的工具,可以对模型进行量化和剪枝等优化操作。
硬件加速:ONNX模型可以在支持ONNX的硬件加速器上运行,提高推理速度。
ONNX通过提供一种通用的模型表示格式,极大地简化了深度学习模型的跨框架部署和优化。其丰富的生态系统和工具支持,使得ONNX 成为深度学习领域中的重要工具之一。
本书结合ONNX理论与大量示例,通俗易懂,可帮助读者迅速掌握ONNX的基本原理和操作实践,读者可快速入门,快速上手。本书适合从事人工智能相关工作与人工智能爱好者使用。
全书有以下特点:
第一,从应用入手,详细介绍ONNX安装配置以及ONNX基本原理。
第二,基于ONNX技术,手把手介绍AI应用开发步骤。
第三,详细介绍ONNX在多种场景下的创新开发案例。
本书在写作过程中得到了家人的全力支持,在此对他们表示深深感谢。
由于编者技术能力有限,书中难免存在纰漏,还望广大读者不吝指正。
编著者
|
|