ONNX(Open Neural Network Exchange)是一个开放的神经网络交换格式,旨在促进不同深度学习框架之间的模型转换和共享。以下是ONNX的一些关键信息和最新进展:
-
定义和目的:ONNX由微软和Facebook于2017年推出,旨在为深度学习模型提供一个统一的表示格式,使得模型可以在不同的框架和平台之间进行转换和共享。它定义了一组与环境和平台无关的标准格式,为AI模型的互操作性提供了基础。
-
核心思想:ONNX通过定义一组通用的算子集、一系列用于构建深度学习模型的模块以及一种通用的文件格式,使得AI开发人员能够将模型与各种框架、工具、运行时和编译器一起使用。
-
存储方式:ONNX使用Protobuf作为序列化数据结构来存储神经网络的权重信息,这是一种轻便高效的结构化数据存储格式。
-
应用场景:ONNX的主要应用场景包括打破框架壁垒、促进模型共享、提高模型的通用性和灵活性,降低新技术采用的门槛,加速人工智能领域内的创新步伐。
-
最新进展:ONNX持续更新,支持新的操作集(opset)和算子。例如,最新的更新包括对bfloat16的支持,以及对多个算子的更新,如Acos、Acosh、Asin等。此外,ONNX还增加了对int4和uint4的支持,以及对blocked quantization的支持。
-
跨平台支持:ONNX支持多个平台和硬件设备,并且具有较高的性能和效率。它已经成为表示深度学习模型的实际标准,并且通过ONNX-ML,可以支持传统非神经网络机器学习模型。
-
社区和生态:ONNX社区不断扩展,目前有超过25款AI框架支持ONNX模型格式,并且ONNX和ONNX Runtime的落地使用组织或企业分别超过50和25家。
-
合作伙伴:ONNX与华为昇腾合作,支持在昇腾硬件平台上运行原生ONNX模型,这标志着ONNX社区版本发布流程中将开始逐步原生支持昇腾硬件平台。
-
安全性更新:ONNX也关注安全性,例如修复了路径 sanitization bypass 导致任意读取的漏洞(CVE-2024-27318)和由于缺乏字符串终止而导致的越界读取漏洞(CVE-2024-27319)。
ONNX作为一个开放的生态系统,通过提供一个统一的模型表示格式,极大地促进了AI模型的互操作性和部署灵活性。