文章插图
ONNX实现与现状实际上,要满足将模型从任何其他AI框架转换为ONNX一直是一个挑战 。主要障碍之一是这些AI框架生态的高速发展与每次版本迭代带来的新支持(例如算子等) 。
模型从一个框架到另一个框架的转换归结为能够表示原始模型的基础数学运算 。下图显示了每个框架中定义的运算符数量 。实际上,目前ONNX仅支持PyTorch所有算子的约13% ,一些使用低频 PyTorch 运算符构建的模型在转换时还是有困难 。

文章插图
不过像PyTorch这样的工具库里,包含的很多运算符有这一样或者类似的功能,是否需要完全同步支持也是一个问题 。但ONNX开放了自定义运算符的功能,使得用户可以 根据需要添加自己的功能 。
即使目前 ONNX 还做不到完全支持和自由衔接所有AI工具框架,但凭借丰富的运算符集,ONNX已经可以描述来自各种框架的大多数 DNN 和 ML 模型 。它的『函数』功能,使得用户可以把暂时不支持的复杂的操作符用更原始的操作符来表达。
它带来了AI生态的自由流通 , 随着生态和社区的高速发展,相信在未来ONNX会成为AI生态中最终的桥梁之一 , 发挥巨大的作用 。
参考资料
- ONNX 官方网站:https://onnx.ai/
- ONNX 官方Github地址:https://github.com/onnx/onnx

文章插图
推荐阅读
- pytorch、paddlepaddle等环境搭建 深度学习环境搭建常用网址、conda/pip命令行整理
- Pytorch模型量化
- Tensorflow Lite从入门到精通
- PaddleOCR-EAST
- paddle&蜜度 文本智能较对大赛经验分享(17/685)
- tensorflow-gpu版本安装及深度神经网络训练与cpu版本对比
- 使用Pytorch进行多卡训练
- 附Anaconda安装包 Anaconda安装和卸载+虚拟环境Tensorflow安装以及末尾问题大全,这一篇就够了!!!
- 了解Pytorch|Get Started with PyTorch