
“之所以这次在中国举办ONNX的研讨会,也是出于能够在中国这个市场做一些宣传、推广和教育的工作,与此同时我们也希望借这个机会能够积极吸引到中国不管是大公司,还是小公司,政府还有大学学界的关注和参与。总而言之,我们的目的就是希望为整个AI的世界搭建一个统一、开放的平台,让所有各方,包括中国的参与方都有机会真正参与进来。”微软项目总经理Venky Veeraraghavan对笔者说。
微软项目总经理Venky Veeraraghavan
ONNX(Open Neural Network Exchange),即“开放神经网络交换”项目,是由微软共同发起、旨在为人工智能互操作及创新研究提供全面支持的开放生态系统,其目标是让人工智能更加触手可及,并为更多人创造价值。这一开放标准可以用来表示不同的机器学习模型,让人工智能开发者根据任务的需要选择最合适的开发框架,并让硬件厂商进行最佳优化。
本周,ONNX合作伙伴研讨会在北京微软大厦举行。这是ONNX开源项目成立以来,首次在中国举办落地活动。微软与本土合作伙伴一起,共同分享了ONNX项目的最新进展。微软人工智能平台团队首席项目经理Prasanth Pulavarthi是微软ONNX项目的负责人,这也是他第一次来到北京专程参与此次研讨会。
微软人工智能平台团队首席项目经理Prasanth Pulavarthi
“这是一个涉及多家公司,涉及整个行业不同伙伴共通的标准,面向机器学习和人工智能的模型。有超过20多家相关的企业和合作伙伴出席了会议,对一些重要的技术发展趋势,以及具体的规则和标准制订进行探讨。”Prasanth Pulavarthi说,“在人工智能领域,中国市场正发生着很多的变化,不仅是从政策和投资的层面,从人才培养和发展的角度也是如此。这次能够来到中国来举办ONNX的研讨会,提供了很好的机会,能够与中国的合作伙伴来探讨,来扩大我们的生态系统。”
去年9月,微软宣布与Facebook、AWS共同创立ONNX开放神经网络交换格式。短短一个月内,这个开放人工智能生态系统便迎来了AMD、ARM、华为、IBM、英特尔、高通等行业领军企业的加盟。目前,已经有超过20家全球企业宣布支持ONNX。
“中国是全球最具创新活力的市场之一,这里汇聚了众多才华横溢的人工智能开发者和数据科学家,还有大力支持ONNX的企业级合作伙伴。”微软中国人工智能产品部主管唐猛表示,“ONNX合作伙伴研讨会第一次来到中国让我们非常兴奋,我们希望借此机会充分展示这一开放互操作人工智能生态系统的优势,并真正帮助中国的开发者和数据科学家发掘人工智能潜力,共同赢得数字化转型的发展机遇。”
作为一个快速发展的开源项目,ONNX带来的互操作性可以让各种开发创意更快速地投入生产环境。利用ONNX,数据科学家可以为其工作选择最适合的框架,而开发者只需花费更少的时间就能训练出适合生产环境的机器学习模型,并且将其部署到云端或者是边缘。目前,在多种人工智能开发框架中都能创建ONNX模型,包括PyTorch、Chainer、微软认知工具包(CNTK)、MXNet、ML.Net、TensorFlow、Keras、SciKit-Learn,这个列表还在不断增加。此外,为ONNX模型实现可视化和加速的开发工具生态系统也已初具规模,已经出现了针对典型场景预先训练的ONNX模型。
可以看到,微软携手Facebook和AWS共同发起的ONNX,通过支持多种机器学习模型,为开放生态打造了坚实基础,让开发者和数据科学家自由选择适合任务需求的框架,让框架设计者更专注于增加创新能力,让硬件厂商更好地进行优化设计。如今,几乎每隔2-4个月就会有ONNX的升级,例如其中会新增一些运算符帮助用户创建新的模型。事实上,现在微软的主流产品Bing、广告和Office,还有视觉服务,基本上后台都在用ONNX。
微软不仅是ONNX的联合创始人,同时也是全力支持ONNX发展的顶级技术贡献者。例如,Windows机器学习(WinML)为ONNX提供了操作系统层面的支持,可利用任何支持DirexctX的GPU为其提供硬件加速,现在从服务器到物联网的各个版本的Windows都能提供这项功能。
ONNX Runtime现已开放预览,这是专为ONNX格式机器学习模型设计的高性能推理引擎。ONNX Runtime兼容ONNX 1.2版本,自带支持CPU和GPU的Python包,可在Azure机器学习服务或任何运行Ubuntu 16的Linux设备上进行推理运算。
ONNX Runtime的发布进一步扩展了微软对ONNX的支持,让ONNX模型推理可以在多种平台和设备上运行。ONNX Runtime全面覆盖和支持ONNX定义的所有运算符。出于对扩展性与性能表现的特别关注,ONNX Runtime能为一系列不同平台和硬件的组合提供多种定制化的加速器,从而保证为推理运算提供最佳的整体性能表现。
插件式的执行者界面意味着ONNX Runtime可以快速适应软件和硬件的改进。执行者界面是硬件加速器向ONNX Runtime报告其性能的标准方式。英特尔、英伟达都在积极将ONNX Runtime整合到他们的硬件加速器中,目前英特尔的MKL-DNN、nGraph编译器以及英伟达优化的TensorRT推理引擎都已完成整合。
ONNX.JS让web开发者可以直接在浏览器中运行训练好的ONNX模型,不但能够减少服务器到端的通信需求、保护用户隐私,还提供了免安装、跨平台的浏览器内置机器学习体验。ONNX.JS支持CPU和GPU运行,可以借助一系列优化技术减少CPU和GPU间的数据传输,减少GPU处理的循环次数,从而将性能推向最大化。
Prasanth Pulavarthi谈到:“我们大概是在两周之前发布了ONNX Runtime,一个内部试用的预览版,我们自己内部用了一下发现和本地框架相比,它的性能表现是非常突出的,我们用了预览版的ONNX Runtime以后,我们实现了两倍性能的提升。”
要想让ONNX实现对任意开发框架的互用互通并不容易,背后则是微软、IBM、Facebook这些参与者在技术开发过程中对各类问题的经验总结。“ONNX不是说简简单单把单一的框架模型化,或者将他们转化在一起,或者拼接在一起,我们更多是从领域的角度,比如说语音、语言,或者是视觉,我们是按照这种领域来分的。然后把他们来进行转化,找到一个最好的模型,这是一个学习、反馈、总结的过程,我们也会继续不断的支持一些新的运算符。”Venky Veeraraghavan说。
与此同时,ONNX也将吸纳更多的开源框架加入其中。Prasanth Pulavarthi表示:“事实上,我们也写了从TensorFlow到ONNX的转化器,通过这样的一种转化的功能,可以实际上将很多TensorFlow下面的这些模型转移到ONNX来。除此之外,ONNX还支持一些非常高级别、或者说特别的运算符,比如LSTM这些新颖、前沿的运算符,这些运算符主要是用来支持一些非常先进的功能,主要是集中在语音和语言方面的。”
在Venky Veeraraghavan看来,ONNX扮演了一个非常好的桥梁作用,当大家做出各领域领先的硬件产品时,如何让这些硬件结合软件算法发挥出更大的潜能,过去不同的接口和界面为开发者带来了很大的困惑,而借助ONNX,可以使硬件和应用有机结合起来,在云端、本地、边缘等任意一个环境实现部署。
“如果想在AI领域当中获得成功,就必须将硬件和软件都结合起来,两手抓,两手都要硬,现在我们看到各种各样的软件公司会集中注意力在软件平台上,但同时硬件方面也需要有一些很好的创新。从我们的角度来看,我们要确保这个社区是开源的,我们有共通开放的标准,使得所有感兴趣的参与方都能够就机会参与进来,这就是我们的战略方向。”
本文属于原创文章,如若转载,请注明来源:ONNX研讨会首次落地中国 微软与合作伙伴共建AI开源生态//cloud.zol.com.cn/703/7039912.html