#someComplicatedFunction() == True
x = y * 2 z = x + y
目前,我們的tracer能與許多常見(jiàn)的神經(jīng)網(wǎng)絡(luò)配合使用,但PyTorch中一些更先進(jìn)的程序,比如有動(dòng)態(tài)流控制(dynamic flow control)的程序還不行。隨著時(shí)間的推移,我們將完善ONNX和tracer來(lái)支持這些程序,讓開(kāi)發(fā)人員可以充分利用PyTorch的靈活性與Caffe2的高性能強(qiáng)大部署功能。
微軟:ONNX 表征具有框架互操作性和共享優(yōu)化兩大優(yōu)點(diǎn)
在 Facebook 發(fā)布博客的同時(shí),微軟也發(fā)布了題為《微軟和 Facebook 為 AI 模型的互操作性構(gòu)建開(kāi)放生態(tài)系統(tǒng)》的博客。在博客中,微軟表示:
微軟給大家做出的承諾是“”人人有機(jī)會(huì)更方便,更有價(jià)值。我們提供各種平臺(tái)和工具來(lái)促進(jìn)這一點(diǎn),包括我們的認(rèn)知工具包,一個(gè)構(gòu)建深層神經(jīng)網(wǎng)絡(luò)的開(kāi)源框架。我們還與其他分享我們觀點(diǎn)的組織合作,幫助 AI 社區(qū)。
今天,我們高興地宣布,微軟和Facebook 一起推出Open Neural Network Exchange (ONNX,開(kāi)放神經(jīng)網(wǎng)絡(luò)交換) 格式。 ONNX為AI 框架生態(tài)系統(tǒng)中的互操作性和創(chuàng)新提供了共享的模型表征。CognitiveToolkit,Caffe2和PyTorch都將支持ONNX。微軟和Facebook 共同開(kāi)發(fā)了ONNX 這一開(kāi)源項(xiàng)目,并希望社區(qū)能夠幫助其不斷進(jìn)化。
什么是ONNX 表征?
Cognitive Toolkit 和其他框架提供了使開(kāi)發(fā)人員更容易構(gòu)建和運(yùn)行表征神經(jīng)網(wǎng)絡(luò)的計(jì)算圖的界面。雖然提供的功能類似,但是今天的每個(gè)框架都有自己表征這些圖的格式。 ONNX表征有以下主要優(yōu)點(diǎn):
框架互操作性
開(kāi)發(fā)人員可以更輕松地在框架間轉(zhuǎn)換,并為手頭的任務(wù)選擇最佳工具。每個(gè)框架都針對(duì)具體特性進(jìn)行了優(yōu)化,如快速訓(xùn)練,支持靈活的網(wǎng)絡(luò)架構(gòu),在移動(dòng)端進(jìn)行推理等等。許多時(shí)候,研發(fā)過(guò)程中最重要的特性與生產(chǎn)環(huán)節(jié)最重要的特性是不同的。這導(dǎo)致開(kāi)發(fā)人員在框架之間進(jìn)行模型轉(zhuǎn)換時(shí),會(huì)因框架使用不正確或明顯延遲而使得效率降低。使用ONNX 表征的框架簡(jiǎn)化了這一點(diǎn),使得開(kāi)發(fā)人員更加靈活。
共享優(yōu)化
硬件供應(yīng)商和其他改進(jìn)神經(jīng)網(wǎng)絡(luò)性能的優(yōu)化可以通過(guò)定位ONNX 表征來(lái)同時(shí)影響多個(gè)框架。優(yōu)化經(jīng)常需要被分別整合進(jìn)入每個(gè)框架,這一過(guò)程很費(fèi)時(shí)間。ONNX 表征使得優(yōu)化更容易實(shí)現(xiàn),從而覆蓋更多開(kāi)發(fā)人員。
技術(shù)總結(jié)
ONNX 提供了可擴(kuò)展計(jì)算圖模型的定義,以及內(nèi)置 operators 和標(biāo)準(zhǔn)數(shù)據(jù)類型的定義。起初我們專注于推理(評(píng)價(jià))所需的能力。
每個(gè)計(jì)算數(shù)據(jù)流圖被構(gòu)造為形成非循環(huán)圖的節(jié)點(diǎn)列表。節(jié)點(diǎn)具有一個(gè)或多個(gè)輸入和一個(gè)或多個(gè)輸出。每個(gè)節(jié)點(diǎn)是對(duì) operators 的調(diào)用。
可用性
ONNX 代碼和文檔的初始版本現(xiàn)在已經(jīng)在GitHub(https://github.com/onnx/onnx)上開(kāi)源,呼喚著社區(qū)的立即參與。我們將積極開(kāi)展基于ONNX 的工作,即將推出的Cognitive Toolkit 也將對(duì)其支持。我們還計(jì)劃和Facebook一道,提供部署參考、示例、工具和model zoo。
ONNX 表征形成了開(kāi)放生態(tài)系統(tǒng)的基礎(chǔ),使 AI 更容易獲取并富有價(jià)值。開(kāi)發(fā)人員可以為其任務(wù)選擇合適的框架,框架作者可以專注于創(chuàng)新,硬件供應(yīng)商可以簡(jiǎn)化優(yōu)化流程。我們希望社區(qū)能夠支持ONNX,以實(shí)現(xiàn)這一令人興奮的愿景。