文档章节

由微软打造的深度学习开放联盟ONNX成立

l
 linux-tao
发布于 2018/12/04 15:40
字数 3092
阅读 6
收藏 0

如今的微软已经一跃成为全球市值最高的高科技公司之一。2018年11月底,微软公司市值曾两次超越了苹果,成为全球市值最高的公司,之后也一直处于与苹果胶着的状态。市场惊叹微软是一家有能力改造自己并取得成功的公司!自微软CEO萨堤亚·纳德拉于2014年2月上任以来,微软就处于稳定复苏的状态中,而纳德拉上任之后最震惊业界的举动之一就是对外宣布微软爱Linux。如今,继Linux之后,微软更爱下一个“操作系统”:ONNX。

由微软打造的深度学习开放联盟ONNX成立由微软打造的深度学习开放联盟ONNX成立

ONNX(Open Neural Network Exchange)是2017年9月由微软与Facebook、AWS共同创立的开放神经网络格式交换计划,其目的是提高神经网络软件之间的互操作性,也就是可以用不同的神经网络框架开发软件,但经过ONNX的格式交换后就可以转换成通用软件运行在Windows、Linux以及苹果OS硬件及云服务之上。ONNX吸引了AMD、ARM、NVIDIA、INTEL、高通、华为、HPE、IBM等芯片及服务器巨头,以及百度、腾讯、阿里等互联网巨头,还有MathWork、CEVA、Synopsys等专业软件和集成电路公司等20家全球企业。

2018年3月,微软宣布将在下一个Windows版本中原生支持ONNX硬件加速功能,这把ONNX推向了上亿的Windows设备,包括IoT边缘设备、HoloLens、2合1笔记本以及桌面PC等。这意味着数据科学家和开发者用Facebook、AWS、BAT等公司的深度神经网络框架所开发的模型,可以直接部署到上亿的Windows设备中。ONNX还原生支持Linux Ubuntu虚机、Azure ML服务、Windows Server 2019虚机,并通过转换程序连接苹果等设备。

2018年11月26日,ONNX研讨会首次来到中国。微软项目总经理Venky Veeraraghavan在2018 ONNX中国研讨会后接受采访时表示:AI想要成功,必须要软件和硬件两手抓,两手都要硬。这可以类比商用操作系统的思路:一处开发的应用软件,可以处处运行在不同硬件上。

打通人工智能落地最后一公里

由微软打造的深度学习开放联盟ONNX成立由微软打造的深度学习开放联盟ONNX成立

人工智能已经成为新一轮科技革命和产业变革的核心驱动力,正在对世界经济、社会进步和人类生活产生深刻的影响。普化永道曾预测,由人工智能所带来的全球GDP增长,将在2030年达到14%,即15.7万亿美元。但Gartner的2018年CIO议程调查却显示,全球仅有4%的CIO实施了人工智能项目,尽管还有46%的CIO已经开发了人工智能相关计划。

换句话说,人工智能在落地方面还遇到很多挑战,其中之一就是不同深度神经网络框架之间缺乏互操作性。简单理解,用一种深度神经网络框架训练出的模型,并不能直接用在其它神经网络框架所支持的运行平台(即推理平台),例如Caffe2训练出的模型仅能运行在Caffe2支持的硬件上,这相当于间接创造了人工智能的“孤岛”。而开源的神经网络框架都多少种呢?主流的开源神经网络框架至少有十余种。

除了神经网络框架之间的差异化处,神经网络软件如果想要运行的好,还需要与不同硬件系统之间的打磨。NVIDIA GPU、Intel CPU等都提供了神经网络的硬件加速功能,HPE、华为、IBM等Linux和Windows服务器以及微软的Windows设备等,都需要在芯片、板卡和操作系统及应用软件之间进行整体优化,才能达到流畅的人工智能应用运行效果。

Venky Veeraraghavan表示:“在谈到深度学习的时候,会涉及到海量的数据处理,这就意味着需要有极高速或者可加速的硬件设备。但开发者会遇到不同的硬件接口、不同的界面和不同的格式,这是很困扰的事情。ONNX在硬件和软件之间提供了通用的语言和界面,让硬件和应用软件有机结合起来,运行在任何地方。”

微软ONNX技术进展

由微软打造的深度学习开放联盟ONNX成立由微软打造的深度学习开放联盟ONNX成立

ONNX带来的互操作性可以让各种开发创意更快速地投入生产环境。利用ONNX,数据科学家可以为其工作选择最适合的框架,而开发者花费更少的时间就能训练出适合生产环境的机器学习模型,并且将其部署到云端或者是边缘。同时,ONNX也使得开发者能更灵活地在不同框架间切换,为不同的场景选择最佳的深度学习模型。

目前,在多种人工智能开发框架中都能创建ONNX模型,包括PyTorch、Chainer、CNTK、MXNet、ML.Net、TensorFlow、Keras、SciKit-Learn,还在不断增加。此外,为ONNX模型实现可视化和加速的开发工具生态系统也已初具规模,已经出现了针对典型场景预先训练的ONNX模型。2018 年 9 月,ONNX 社区发布了 1.3 版本的模型标准。

作为ONNX的主要支持者,微软的主流产品,包括Bing、广告、Office、视觉服务等,后台都开始采用ONNX格式。2018年10月,微软发布了ONNX Runtime运行时预览版,这是一个高性能的机器学习推理引擎,可以用最有效的方式利用各种芯片加速器,从而实现跨多种硬件平台和设备运行神经网络算法的结果。

微软ONNX Runtime兼容ONNX 1.2版本,自带支持CPU和GPU的Python包,可在Azure机器学习服务或任何运行Ubuntu 16的Linux设备上进行推理运算。ONNX Runtime的发布进一步扩展了微软对ONNX的支持,除了让ONNX模型推理可以在多种平台和设备上运行外,ONNX Runtime全面覆盖和支持ONNX定义的所有运算符,能为一系列不同平台和硬件的组合提供多种定制化的加速器,从而保证推理运算的最佳性能表现。INTEL、NVIDIA都在积极将ONNX Runtime整合到硬件加速器中,目前INTEL的MKL-DNN、nGraph编译器以及NVIDIA优化的TensorRT推理引擎都已完成整合。

在2018年3月发布的Windows机器学习(Windows ML)为ONNX提供了操作系统层面的支持。通过Windows ML,开发人员可以在云服务中训练模型并将其导出为ONNX格式,之后就可以通过Visual Studio在Windows应用程序中内置ONNX模型。现在,Windows ML可利用任何支持DirectX的GPU为其提供硬件加速,从服务器到物联网的各个版本的Windows都能提供这项功能。

ONNX模型可以通过Azure 机器学习(Azure ML)、ONNX Runtime和Windows 机器学习等方式部署到Azure云中、Windows 10设备、Linux设备或使用ONNX社区提供的转换器部署到其它平台。在通过ONNX建设开放互操作人工智能生态系统的同时,微软也在将Azure打造成最佳人工智能云平台,从预先训练好的模型到帮助构建模型的云服务,Azure提供了完善的机器学习平台。

为了简化语音、视觉、语言相关机器学习解决方案的开发,微软在认知服务中提供了一系列强大的预训练模型。微软在云端提供了多样化的机器学习服务,从Azure Databricks、Azure机器学习服务到机器学习虚拟机,可以满足不同规模的使用需求。为了帮助开发者更快速地构建和训练模型,微软还提供了大规模GPU集群上的分布式深度学习能力。一旦完成了模型的训练,开发者可以自由选择部署到本地、云端,或者是包括离线环境在内的边缘环境中。

除了ONNX Runtime,微软也发布了ONNX.JS,让web开发者可以直接在浏览器中运行训练好的ONNX模型,不但能够减少服务器到端的通信需求、保护用户隐私,还提供了免安装、跨平台的浏览器内置机器学习体验。ONNX.JS支持CPU和GPU运行,可以借助一系列优化技术减少CPU和GPU间的数据传输,减少GPU处理的循环次数,从而将性能最大化。

开放标准需要中国的参与

由微软打造的深度学习开放联盟ONNX成立由微软打造的深度学习开放联盟ONNX成立

对微软而言,ONNX研讨会在中国的落地不仅能够让中国的开发者和企业获得更加方便的深度学习框架格式,同时也能为ONNX创造更大的发展空间。

Veeraraghavan表示:“在开源标准的范畴之下,如果没有中国的参与,没有中国企业的采纳,实际上是没有意义的,因为很难想象某个开源标准仅仅是美国标准而没有得到中国的认可和采纳,这也是我们为什么花费时间和精力来中国组织ONNX活动的原因。我们希望借此机会将中国本地的伙伴和客户都吸引到ONNX联盟中,最终实现一个统一的、开放的软件平台和标准,让各种不同的神经网络模型可以处处运行。”

据微软人工智能平台团队首席项目经理Prasanth Pulavarthi介绍,有超过20多家相关的中国企业和合作伙伴来到首届中国ONNX研讨会,就重要的技术发展方向以及具体规则或者标准制订进行了探讨。“阿里巴巴、腾讯、华为和百度等都已经加入了ONNX,这是非常有意义的,中国将在ONNX的工作中发挥重要作用。”Pulavarthi表示。

现在ONNX并不能解决所有的痛点和问题,但处在快速发展和成熟当中,随着市面上越来越多的神经网络模型出现以及越来越多的客户在使用,为ONNX提供了学习、反馈、总结的机会。Pulavarthi强调,ONNX的工作也不能凭借微软一己之力完成,更多是一个社区的共同努力,ONNX本身就是以社区开展工作的联盟,IBM、Facebook等都贡献了转化器。

ONNX在中国的落地不仅要吸引中国的大小企业,还要有政府以及大学学界的关注和参与。“总而言之我们的目的就是希望为整个AI的世界搭建一个统一、开放的平台,让所有各方都有机会真正参与进来。”Veeraraghavan强调。

微软对ONNX的“爱”是真爱。除了把上亿Windows设备以及Windows产品与服务都贡献出来,微软还投入真金白银和时间精力,搭建起了一个团队负责在中国AI开源社区进行推广。该团队负责人、微软中国人工智能产品部主管唐猛表示,“接下来微软会在ONNX推广、宣传、社区关系建设方面有较大的投入。我们的工作还在起步阶段,在未来将会听到更多关于微软在AI开源社区方面投入的消息。”

原文来自:http://www.igeek.com.cn/article-1331614-0.html

本文地址:https://www.linuxprobe.com/micro-love-linux.html编辑:张@宇,审核员:逄增宝

© 著作权归作者所有

l
粉丝 20
博文 1008
码字总数 1130720
作品 0
深圳
运维
私信 提问
ONNX合作伙伴研讨会首次在中国举行 微软全力支持开放互操作人工智能发展

ONNX合作伙伴研讨会本周在北京微软大厦举行。这是ONNX开源项目成立以来,首次在中国举办落地活动。微软与本土合作伙伴一起,共同分享了ONNX项目的最新进展。 ONNX(Open Neural Network Exc...

OSC_Lucy
2018/11/28
67
0
围攻谷歌?亚马逊 MXNet 宣布加入 ONNX 开放生态

ONNX,即 Open Neural Network Exchange ,是微软和 Facebook 在今年 9 月发起的一个开放的深度学习开发工具生态系统,旨在让 AI 开发人员能够随着项目发展而选择正确的工具。之后,华为、I...

王练
2017/11/27
2.2K
5
Azure,人工智能的最佳云平台

        微软全球执行副总裁、微软人工智能及微软研究事业部负责人沈向洋博士   Build大会(微软全球开发者大会)向来是我最爱的年度盛会。看到那么多开发者用微软的工具和平台打造出...

微软亚洲研究院
2018/05/09
0
0
AWS 帮助构建 ONNX 开源 AI 平台

AWS 最近成为深度学习社区的开放式神经网络交换 Open Neural Network Exchange(ONNX)协作的最新技术公司,在无障碍和可互操作的环境中推出人工智能。Facebook 和微软领导了这一合作。 作为...

周其
2017/12/12
879
2
U2L蔚然成风,曙光为什么能抢了VMware的风头?

推动IT应用从封闭架构走向以x86平台为代表的开放架构,简称U2L(Unix to Linux)。在过去3年中,VMware一直在中国积极推动U2L的进程,取得了良好的用户和市场反馈。假如真要成立一个推动U2L...

郭涛
2015/10/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

电子字典C语言链表版

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>struct dict{ char *key; char *content; struct dict *ne......

holdbody
31分钟前
4
0
windows 查看 端口使用情况

资料 https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html 统计端口连接数 netstat -an|find "8080" /c...

zaolonglei
31分钟前
3
0
OSG 屏幕空间环境光遮蔽(SSAO)讲义3 算法的核心

先介绍SSAO 接着介绍SSAO的核心算法 延迟着色法的采样 颜色采样 把像机的几个参数传入Shader SSAO渲染 建立SSAO摄像机 SSAO摄像机显示漫反射采样 先用上下像素点的方案, 再次讲原理. 换用RGB...

洛克人杰洛
51分钟前
2
0
聊聊rocketmq的AccessChannel

序 本文主要研究一下rocketmq的AccessChannel AccessChannel rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/AccessChannel.java public enum AccessChannel { /** ......

go4it
昨天
9
0
自己实现 aop 和 spring aop

上文 说到,我们可以在 BeanPostProcessor 中对 bean 的初始化前化做手脚,当时也说了,我完全可以生成一个代理类丢回去。 代理类肯定要为用户做一些事情,不可能像学设计模式的时候创建个代...

sanri1993
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部