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

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

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

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