
ONNX(Open Neural Network Exchange)是2017年9月由微軟與Facebook、AWS共同創(chuàng)立的開(kāi)放神經(jīng)網(wǎng)絡(luò)格式交換計(jì)劃,其目的是提高神經(jīng)網(wǎng)絡(luò)軟件之間的互操作性,也就是可以用不同的神經(jīng)網(wǎng)絡(luò)框架開(kāi)發(fā)軟件,但經(jīng)過(guò)ONNX的格式交換后就可以轉(zhuǎn)換成通用軟件運(yùn)行在Windows、Linux以及蘋(píng)果OS硬件及云服務(wù)之上。ONNX吸引了AMD、ARM、NVIDIA、INTEL、高通、華為、HPE、IBM等芯片及服務(wù)器巨頭,以及百度、騰訊、阿里等互聯(lián)網(wǎng)巨頭,還有MathWork、CEVA、Synopsys等專(zhuān)業(yè)軟件和集成電路公司等20家全球企業(yè)。
2018年3月,微軟宣布將在下一個(gè)Windows版本中原生支持ONNX硬件加速功能,這把ONNX推向了上億的Windows設(shè)備,包括IoT邊緣設(shè)備、HoloLens、2合1筆記本以及桌面PC等。這意味著數(shù)據(jù)科學(xué)家和開(kāi)發(fā)者用Facebook、AWS、BAT等公司的深度神經(jīng)網(wǎng)絡(luò)框架所開(kāi)發(fā)的模型,可以直接部署到上億的Windows設(shè)備中。ONNX還原生支持Linux Ubuntu虛機(jī)、Azure ML服務(wù)、Windows Server 2019虛機(jī),并通過(guò)轉(zhuǎn)換程序連接蘋(píng)果等設(shè)備。
2018年11月26日,ONNX研討會(huì)首次來(lái)到中國(guó)。微軟項(xiàng)目總經(jīng)理Venky Veeraraghavan在2018 ONNX中國(guó)研討會(huì)后接受采訪(fǎng)時(shí)表示:AI想要成功,必須要軟件和硬件兩手抓,兩手都要硬。這可以類(lèi)比商用操作系統(tǒng)的思路:一處開(kāi)發(fā)的應(yīng)用軟件,可以處處運(yùn)行在不同硬件上。
打通人工智能落地最后一公里

微軟項(xiàng)目總經(jīng)理Venky Veeraraghavan
人工智能已經(jīng)成為新一輪科技革命和產(chǎn)業(yè)變革的核心驅(qū)動(dòng)力,正在對(duì)世界經(jīng)濟(jì)、社會(huì)進(jìn)步和人類(lèi)生活產(chǎn)生深刻的影響。普化永道曾預(yù)測(cè),由人工智能所帶來(lái)的全球GDP增長(zhǎng),將在2030年達(dá)到14%,即15.7萬(wàn)億美元。但Gartner的2018年CIO議程調(diào)查卻顯示,全球僅有4%的CIO實(shí)施了人工智能項(xiàng)目,盡管還有46%的CIO已經(jīng)開(kāi)發(fā)了人工智能相關(guān)計(jì)劃。
換句話(huà)說(shuō),人工智能在落地方面還遇到很多挑戰(zhàn),其中之一就是不同深度神經(jīng)網(wǎng)絡(luò)框架之間缺乏互操作性。簡(jiǎn)單理解,用一種深度神經(jīng)網(wǎng)絡(luò)框架訓(xùn)練出的模型,并不能直接用在其它神經(jīng)網(wǎng)絡(luò)框架所支持的運(yùn)行平臺(tái)(即推理平臺(tái)),例如Caffe2訓(xùn)練出的模型僅能運(yùn)行在Caffe2支持的硬件上,這相當(dāng)于間接創(chuàng)造了人工智能的“孤島”。而開(kāi)源的神經(jīng)網(wǎng)絡(luò)框架都多少種呢?主流的開(kāi)源神經(jīng)網(wǎng)絡(luò)框架至少有十余種。
除了神經(jīng)網(wǎng)絡(luò)框架之間的差異化處,神經(jīng)網(wǎng)絡(luò)軟件如果想要運(yùn)行的好,還需要與不同硬件系統(tǒng)之間的打磨。NVIDIA GPU、Intel CPU等都提供了神經(jīng)網(wǎng)絡(luò)的硬件加速功能,HPE、華為、IBM等Linux和Windows服務(wù)器以及微軟的Windows設(shè)備等,都需要在芯片、板卡和操作系統(tǒng)及應(yīng)用軟件之間進(jìn)行整體優(yōu)化,才能達(dá)到流暢的人工智能應(yīng)用運(yùn)行效果。
Venky Veeraraghavan表示:“在談到深度學(xué)習(xí)的時(shí)候,會(huì)涉及到海量的數(shù)據(jù)處理,這就意味著需要有極高速或者可加速的硬件設(shè)備。但開(kāi)發(fā)者會(huì)遇到不同的硬件接口、不同的界面和不同的格式,這是很困擾的事情。ONNX在硬件和軟件之間提供了通用的語(yǔ)言和界面,讓硬件和應(yīng)用軟件有機(jī)結(jié)合起來(lái),運(yùn)行在任何地方。”
微軟ONNX技術(shù)進(jìn)展

ONNX帶來(lái)的互操作性可以讓各種開(kāi)發(fā)創(chuàng)意更快速地投入生產(chǎn)環(huán)境。利用ONNX,數(shù)據(jù)科學(xué)家可以為其工作選擇最適合的框架,而開(kāi)發(fā)者花費(fèi)更少的時(shí)間就能訓(xùn)練出適合生產(chǎn)環(huán)境的機(jī)器學(xué)習(xí)模型,并且將其部署到云端或者是邊緣。同時(shí),ONNX也使得開(kāi)發(fā)者能更靈活地在不同框架間切換,為不同的場(chǎng)景選擇最佳的深度學(xué)習(xí)模型。
目前,在多種人工智能開(kāi)發(fā)框架中都能創(chuàng)建ONNX模型,包括PyTorch、Chainer、CNTK、MXNet、ML.Net、TensorFlow、Keras、SciKit-Learn,還在不斷增加。此外,為ONNX模型實(shí)現(xiàn)可視化和加速的開(kāi)發(fā)工具生態(tài)系統(tǒng)也已初具規(guī)模,已經(jīng)出現(xiàn)了針對(duì)典型場(chǎng)景預(yù)先訓(xùn)練的ONNX模型。2018 年 9 月,ONNX 社區(qū)發(fā)布了 1.3 版本的模型標(biāo)準(zhǔn)。
作為ONNX的主要支持者,微軟的主流產(chǎn)品,包括Bing、廣告、Office、視覺(jué)服務(wù)等,后臺(tái)都開(kāi)始采用ONNX格式。2018年10月,微軟發(fā)布了ONNX Runtime運(yùn)行時(shí)預(yù)覽版,這是一個(gè)高性能的機(jī)器學(xué)習(xí)推理引擎,可以用最有效的方式利用各種芯片加速器,從而實(shí)現(xiàn)跨多種硬件平臺(tái)和設(shè)備運(yùn)行神經(jīng)網(wǎng)絡(luò)算法的結(jié)果。
微軟ONNX Runtime兼容ONNX 1.2版本,自帶支持CPU和GPU的Python包,可在A(yíng)zure機(jī)器學(xué)習(xí)服務(wù)或任何運(yùn)行Ubuntu 16的Linux設(shè)備上進(jìn)行推理運(yùn)算。ONNX Runtime的發(fā)布進(jìn)一步擴(kuò)展了微軟對(duì)ONNX的支持,除了讓ONNX模型推理可以在多種平臺(tái)和設(shè)備上運(yùn)行外,ONNX Runtime全面覆蓋和支持ONNX定義的所有運(yùn)算符,能為一系列不同平臺(tái)和硬件的組合提供多種定制化的加速器,從而保證推理運(yùn)算的最佳性能表現(xiàn)。INTEL、NVIDIA都在積極將ONNX Runtime整合到硬件加速器中,目前INTEL的MKL-DNN、nGraph編譯器以及NVIDIA優(yōu)化的TensorRT推理引擎都已完成整合。
在2018年3月發(fā)布的Windows機(jī)器學(xué)習(xí)(Windows ML)為ONNX提供了操作系統(tǒng)層面的支持。通過(guò)Windows ML,開(kāi)發(fā)人員可以在云服務(wù)中訓(xùn)練模型并將其導(dǎo)出為ONNX格式,之后就可以通過(guò)Visual Studio在Windows應(yīng)用程序中內(nèi)置ONNX模型。現(xiàn)在,Windows ML可利用任何支持DirectX的GPU為其提供硬件加速,從服務(wù)器到物聯(lián)網(wǎng)的各個(gè)版本的Windows都能提供這項(xiàng)功能。
ONNX模型可以通過(guò)Azure 機(jī)器學(xué)習(xí)(Azure ML)、ONNX Runtime和Windows 機(jī)器學(xué)習(xí)等方式部署到Azure云中、Windows 10設(shè)備、Linux設(shè)備或使用ONNX社區(qū)提供的轉(zhuǎn)換器部署到其它平臺(tái)。在通過(guò)ONNX建設(shè)開(kāi)放互操作人工智能生態(tài)系統(tǒng)的同時(shí),微軟也在將Azure打造成最佳人工智能云平臺(tái),從預(yù)先訓(xùn)練好的模型到幫助構(gòu)建模型的云服務(wù),Azure提供了完善的機(jī)器學(xué)習(xí)平臺(tái)。
為了簡(jiǎn)化語(yǔ)音、視覺(jué)、語(yǔ)言相關(guān)機(jī)器學(xué)習(xí)解決方案的開(kāi)發(fā),微軟在認(rèn)知服務(wù)中提供了一系列強(qiáng)大的預(yù)訓(xùn)練模型。微軟在云端提供了多樣化的機(jī)器學(xué)習(xí)服務(wù),從Azure Databricks、Azure機(jī)器學(xué)習(xí)服務(wù)到機(jī)器學(xué)習(xí)虛擬機(jī),可以滿(mǎn)足不同規(guī)模的使用需求。為了幫助開(kāi)發(fā)者更快速地構(gòu)建和訓(xùn)練模型,微軟還提供了大規(guī)模GPU集群上的分布式深度學(xué)習(xí)能力。一旦完成了模型的訓(xùn)練,開(kāi)發(fā)者可以自由選擇部署到本地、云端,或者是包括離線(xiàn)環(huán)境在內(nèi)的邊緣環(huán)境中。
除了ONNX Runtime,微軟也發(fā)布了ONNX.JS,讓web開(kāi)發(fā)者可以直接在瀏覽器中運(yùn)行訓(xùn)練好的ONNX模型,不但能夠減少服務(wù)器到端的通信需求、保護(hù)用戶(hù)隱私,還提供了免安裝、跨平臺(tái)的瀏覽器內(nèi)置機(jī)器學(xué)習(xí)體驗(yàn)。ONNX.JS支持CPU和GPU運(yùn)行,可以借助一系列優(yōu)化技術(shù)減少CPU和GPU間的數(shù)據(jù)傳輸,減少GPU處理的循環(huán)次數(shù),從而將性能最大化。
開(kāi)放標(biāo)準(zhǔn)需要中國(guó)的參與

微軟人工智能平臺(tái)團(tuán)隊(duì)首席項(xiàng)目經(jīng)理Prasanth Pulavarthi
對(duì)微軟而言,ONNX研討會(huì)在中國(guó)的落地不僅能夠讓中國(guó)的開(kāi)發(fā)者和企業(yè)獲得更加方便的深度學(xué)習(xí)框架格式,同時(shí)也能為ONNX創(chuàng)造更大的發(fā)展空間。
Veeraraghavan表示:“在開(kāi)源標(biāo)準(zhǔn)的范疇之下,如果沒(méi)有中國(guó)的參與,沒(méi)有中國(guó)企業(yè)的采納,實(shí)際上是沒(méi)有意義的,因?yàn)楹茈y想象某個(gè)開(kāi)源標(biāo)準(zhǔn)僅僅是美國(guó)標(biāo)準(zhǔn)而沒(méi)有得到中國(guó)的認(rèn)可和采納,這也是我們?yōu)槭裁椿ㄙM(fèi)時(shí)間和精力來(lái)中國(guó)組織ONNX活動(dòng)的原因。我們希望借此機(jī)會(huì)將中國(guó)本地的伙伴和客戶(hù)都吸引到ONNX聯(lián)盟中,最終實(shí)現(xiàn)一個(gè)統(tǒng)一的、開(kāi)放的軟件平臺(tái)和標(biāo)準(zhǔn),讓各種不同的神經(jīng)網(wǎng)絡(luò)模型可以處處運(yùn)行。”
據(jù)微軟人工智能平臺(tái)團(tuán)隊(duì)首席項(xiàng)目經(jīng)理Prasanth Pulavarthi介紹,有超過(guò)20多家相關(guān)的中國(guó)企業(yè)和合作伙伴來(lái)到首屆中國(guó)ONNX研討會(huì),就重要的技術(shù)發(fā)展方向以及具體規(guī)則或者標(biāo)準(zhǔn)制訂進(jìn)行了探討。“阿里巴巴、騰訊、華為和百度等都已經(jīng)加入了ONNX,這是非常有意義的,中國(guó)將在ONNX的工作中發(fā)揮重要作用。”Pulavarthi表示。
現(xiàn)在ONNX并不能解決所有的痛點(diǎn)和問(wèn)題,但處在快速發(fā)展和成熟當(dāng)中,隨著市面上越來(lái)越多的神經(jīng)網(wǎng)絡(luò)模型出現(xiàn)以及越來(lái)越多的客戶(hù)在使用,為ONNX提供了學(xué)習(xí)、反饋、總結(jié)的機(jī)會(huì)。Pulavarthi強(qiáng)調(diào),ONNX的工作也不能憑借微軟一己之力完成,更多是一個(gè)社區(qū)的共同努力,ONNX本身就是以社區(qū)開(kāi)展工作的聯(lián)盟,IBM、Facebook等都貢獻(xiàn)了轉(zhuǎn)化器。
ONNX在中國(guó)的落地不僅要吸引中國(guó)的大小企業(yè),還要有政府以及大學(xué)學(xué)界的關(guān)注和參與。“總而言之我們的目的就是希望為整個(gè)AI的世界搭建一個(gè)統(tǒng)一、開(kāi)放的平臺(tái),讓所有各方都有機(jī)會(huì)真正參與進(jìn)來(lái)。”Veeraraghavan強(qiáng)調(diào)。
微軟對(duì)ONNX的“愛(ài)”是真愛(ài)。除了把上億Windows設(shè)備以及Windows產(chǎn)品與服務(wù)都貢獻(xiàn)出來(lái),微軟還投入真金白銀和時(shí)間精力,搭建起了一個(gè)團(tuán)隊(duì)負(fù)責(zé)在中國(guó)AI開(kāi)源社區(qū)進(jìn)行推廣。該團(tuán)隊(duì)負(fù)責(zé)人、微軟中國(guó)人工智能產(chǎn)品部主管唐猛表示,“接下來(lái)微軟會(huì)在ONNX推廣、宣傳、社區(qū)關(guān)系建設(shè)方面有較大的投入。我們的工作還在起步階段,在未來(lái)將會(huì)聽(tīng)到更多關(guān)于微軟在A(yíng)I開(kāi)源社區(qū)方面投入的消息。”