ONNX (Open Neural Network Exchange)是一套表示深度神经网络模型的开放格式,由微软和 Facebook 于 2017 推出,然后迅速得到了各大厂商和框架的支持。目前,在数家机构的共同维护下,ONNX 已经对接了多种深度学习框架和多种推理引擎。
通过短短几年的发展,已经成为表示深度学习模型的实际标准,并且通过 ONNX-ML,可以支持传统非神经网络机器学习模型,大有一统整个 AI模型交换格式。
ONNX 定义了一组与环境和平台无关的标准格式,为 AI 模型的互操作性提供了基础,使 AI 模型可以在不同框架和环境下交互使用。硬件和软件厂商可以基于 ONNX 标准优化模型性能,让所有兼容 ONNX 标准的框架受益。
各种神经网络模型转化为 ONNX 格式后,可以很容易的部署在兼容 ONNX 的运行环境中。兼容 ONNX 的运行环境称为ONNX运行时(ONNX runtime)。谈到运行时,我们就有了虚拟机的概念,ONNX就好比是一种模型的中间语言,可以在任何的ONNX 运行时上运行,真的很酷。
有了ONNX,大模型可以在各种硬件上运行,比如Apple,Intel,Nvidia,甚至华为等国产算力平台上运行了。
各种大模型都可以转换成ONNX 格式。
Hugging Face 上有超过 130,000 个 ONNX 支持的模型。 这些 ONNX 支持的模型(包括许多越来越流行的大型语言模型 (LLM) 和云模型)可以利用 ONNX 运行时来提高性能以及其他优势。 例如,使用 ONNX 运行时来加速 whisper-tiny 模型可以改善每次推理的平均延迟,与 PyTorch 相比,性能提高了 74.30%。 ONNX Runtime 与 Hugging Face 密切合作,以确保支持网站上最流行的模型。 ONNX 运行时总共支持 90 多种 Hugging Face 模型架构,包括 11 种最流行的架构
实例
下列链接中有大量的实例
https://github.com/microsoft/onnxruntime-inference-examples/tree/main/js
pyannote 的ONNX 版本
pyannote-onnx