开发者们看过来,ONNX牵手华为昇腾,现在可以直接在昇腾上跑原生ONNX模型啦!
还记得今年9月,ONNX Runtime项目(ONNX社区流水线核心组件)正式提供对华为昇腾硬件平台的支持,成为ONNX Runtime支持的首个面向端、边、云全场景的国产推理训练AI硬件平台后端。
正式版v1.13.0预计年底发布。
这意味着在此前昇腾主动适配ONNX模型的同时,从2023年开始,ONNX社区版本发布流程中,将开始逐步原生支持昇腾硬件平台,通过开源社区共建大幅降低用户和厂商的成本,实现生态创新共赢。
ONNX (Open Neural Network Exchange),是由LF AI & Data Foundation[2]发起并维护的一种AI模型格式,用于在各种深度学习训练推理框架之间转换的一个通用表示格式。
而ONNX Runtime是微软发起的基于ONNX模型格式的推理运行时框架,目前已是ONNX社区流水线的核心组件,以及ONNX运行时的事实标准。
根据官方数据,目前有超过25款AI框架支持ONNX模型格式,并且ONNX和ONNX Runtime的落地使用组织或企业分别超过50和25家。
△最新ONNX Runtime的生态全景图
ONNX Runtime北向支持多种开发语言,包括Python,C,C++,C#,Java,js等;南向支持多种运行后端(Execution Provider,包括但不局限于CPU、CUDA、CoreML),使用ONNX Runtime,用户可以基于多种语言快速无缝在多种后端上直接运行ONNX模型,且不再需要额外的开发适配工作。
ONNX Runtime项目支持华为昇腾硬件平台的关键,是连接AI框架和昇腾硬件的桥梁—异构计算架构CANN。
CANN是专门面向AI场景的异构计算架构,同时作为昇腾AI基础软硬件平台的核心组成部分之一,搭起了从上层深度学习框架到底层AI硬件的桥梁,全面支持昇思MindSpore、飞桨(PaddlePaddle)、PyTorch、TensorFlow、Caffe、计图(Jittor)等主流AI框架,提供900多种优选模型,能够覆盖众多典型场景应用,兼容多种底层硬件设备,提供强大异构计算能力。
华为公司自2018年与微软亚洲研究院共同发起了首届ONNX China Workshop以来,积极参与ONNX社区建设,是历年ONNX Workshop中国地区会议的积极倡导者和组织者,在社区也曾发起Edge WG、提出Model Zoo CI建议、参加Steering Committee选举等等。
昇腾CANN作为华为参与ONNX社区建设中重要的一环,也一直积极参与ONNX社区的模型适配工作。目前已支持140+个onnx模型推理,年底发布的CANN6.0版本将支持200+个模型;支持opset 8~13,主力支持opset 11,算子支持率85+%,CANN6.0支持到90+%。
昇腾CANN团队希望能够将长期以来的主动适配工作,逐渐转化为社区原生开发的一部分,能够更高效的服务用户,让用户第一时间就拥有昇腾AI软硬件平台支持的ONNX版本。而实现社区原生的一大关键就在于社区流水线中实现对昇腾的支持,而ONNX Runtime的支持则是重中之重。
使用最新的ONNX Runtime,用户可以直接把原生ONNX模型跑在昇腾上。过程简单,易于使用。这也是在基于昇腾CANN atc工具的模型编译执行之外的又一条路径。
△ONNX Runtime 支持后端
△CANN Execution Provider 架构
昇腾作为国产芯片在海外开源社区的推入,其过程存在一定挑战。起初社区对于昇腾芯片以及CANN了解不足,昇腾开源团队通过与社区积极沟通、主动参与ONNX meetup、详细讲解昇腾芯片的特点等方式,让社区详细了解了昇腾芯片以及CANN的能力,增强了对昇腾持续投入的信心,从而顺利合入代码。
△ONNX Runtime CANN后端已支持算子列表
目前,ONNX Runtime CANN后端初步已支持ONNX算子16个,全量支持ResNet和VGG模型。用户可以在支持昇腾的环境中使用ONNXRuntime主干分支代码,配合ONNX model zoo[3]中的ResNet和VGG模型进行体验。如果用户想尝试其他的模型和算子,可以参考文档[4]自行编写代码,或者等待新版本发布,届时CANN后端会支持更多算子和模型。
未来,CANN将在多个方面进行完善,包括:更多算子和模型的支持;算子融合、模型性能优化;支持算子自定义等。随着技术不断发展,大数据和机器学习的关系也越来越密切,在未来,也会进一步探索大数据+AI融合的场景,例如Spark+ONNX+Ascend这样的大数据AI全栈流程,探索生产可用、易用的大数据AI解决方案。
ONNX Runtime CANN后端作为新功能难免有不足之处,欢迎大家在开源社区一起交流和完善。
相关链接:
[1]https://github.com/microsoft/onnxruntime/pull/12416
[2]https://lfaidata.foundation
[3]https://github.com/onnx/models
[4]https://github.com/learningbackup/ai/blob/main/ascend/CANN%20Development%20Guideline.md
— 完 —
点这里关注我 记得标星噢 ~