Facebook 和微軟宣告,推出 Open Neural Network Exchange(ONNX,開放神經(jīng)收集交流)格局,這是一個用于表現(xiàn)深度進(jìn)修模子的尺度,可以使模子在分歧框架之間停止轉(zhuǎn)移。ONNX是邁向開放生態(tài)體系的第一步,AI開辟人員可以輕松地在最早進(jìn)的對象之間轉(zhuǎn)換,并選擇最合適他們的組合。
以下是Facebook、微軟官方博客的引見:
在開辟進(jìn)修模子時,工程師和研討人員有很多AI框架可以選擇。在項(xiàng)目開端時,開辟人員必需選擇對應(yīng)一個框架的特點(diǎn)(features)。許多時刻,在研發(fā)進(jìn)程中停止試驗(yàn)時選擇的 feature 與臨盆所需的 feature 是紛歧致的。很多組織都沒有很好的辦法來清除這些操作形式之間的差距,只要采用一系列發(fā)明性的處理方法來應(yīng)對,例如請求研討人員在臨盆體系中任務(wù)某人工翻譯模子。
Facebook 與微軟一路開辟了 ONNX,以彌合這一差距,讓AI開辟人員可以選擇相符項(xiàng)目以后階段的框架,并跟著項(xiàng)目標(biāo)成長輕松切換框架。Caffe2,PyTorch 和Cognitive Toolkit 將在9月份宣布對 onNX 的支撐,這將許可在個中一個框架練習(xí)的模子導(dǎo)出到另外一個框架來停止推理。我們約請社區(qū)參加這一盡力,并在其生態(tài)體系中支撐ONNX。完成分歧框架之間的互相操作性,簡化從研討到臨盆的進(jìn)程,將有助于進(jìn)步AI社區(qū)立異的速度。
onNX 在 Facebook 外部應(yīng)用
onNX 是 Facebook 深度進(jìn)修辦法的主要構(gòu)成部門。在Facebook的AI團(tuán)隊(duì)(FAIR和AML)中,我們賡續(xù)測驗(yàn)考試推進(jìn)AI的前沿研討,開辟更好的進(jìn)修算法。當(dāng)我們獲得一個沖破時,我們愿望盡快在運(yùn)用中供給更好的技巧。經(jīng)由過程ONNX,我們專注于將AI研討和產(chǎn)物完成更慎密地聯(lián)合在一路,從而更快地停止立異和安排。
測驗(yàn)考試新模子的人們,特殊是研討人員,愿望在編寫神經(jīng)收集時具有最年夜的靈巧性和表示力——從靜態(tài)神經(jīng)收集到支撐梯度突變(gradients of gradients),同時堅(jiān)持根本的ConvNet機(jī)能。研討人員也想完成疾速迭代,這意味著他們須要優(yōu)良的交互式開辟和調(diào)試對象。PyTorch旨在沖破研討框架的局限,使研討人員免受平臺的限制,讓他們可以或許比之前更輕易地表達(dá)設(shè)法主意。
相反,產(chǎn)物流程天天都須要對年夜量新的數(shù)據(jù)停止練習(xí)和推理,同時堅(jiān)持模子年夜部門不變。細(xì)心優(yōu)化產(chǎn)物的特定模子的代碼,例如經(jīng)由過程量化和細(xì)心編寫人工調(diào)劑的代碼(hand-tuned code)之類的技能節(jié)儉資本。Caffe2曾經(jīng)在產(chǎn)物、挪動和極端斟酌機(jī)能的情形構(gòu)建起來。Caffe2的外部靈巧并且高度優(yōu)化,所以我們可以應(yīng)用技能將更年夜更好的模子安排到機(jī)能缺乏的硬件中。
經(jīng)由過程 ONNX,我們可以在這兩個方面取得最優(yōu)。我們?nèi)缃窨梢詮腜yTorch導(dǎo)出很多罕見神經(jīng)收集的模子,并將它們安排在Caffe2上。這是將最新的研討結(jié)果疾速推向臨盆的第一步。在接上去的幾個月中,我們將增強(qiáng)ONNX,并對Caffe2和PyTorch停止改良,使其可以或許更深刻地互通。
怎樣運(yùn)轉(zhuǎn)
為了完成ONNX支撐,我們必需對PyTorch和Caffe2停止更改,而且在框架之間同一運(yùn)算符。在Caffe2中,這個進(jìn)程相似于添加一個翻譯器,由于Caffe2曾經(jīng)有一個內(nèi)置的靜態(tài)圖。在PyTorch中,神經(jīng)收集是被界說為法式而不是顯式圖,是以這帶來了更年夜的挑釁。為了從法式中提取圖,我們開辟了一個跟蹤器,將運(yùn)轉(zhuǎn)時法式履行的操作記載上去。跟蹤法式清除了龐雜性,并使其更輕易轉(zhuǎn)換為圖表現(xiàn)。
要懂得它是若何任務(wù)的,看以下代碼:
x = y * 2
if someComplicatedFunction(): z = x + y
else: z = x * y
要直接導(dǎo)出此代碼,ONNX將不能不支撐conditionals和某些龐雜函數(shù) someComplicatedFunction();現(xiàn)實(shí)上成了通用編程說話。但是,在很多深度進(jìn)修模子中,someComplicatedFunction() 的成果在推理進(jìn)程中老是雷同的。例如,在PyTorch前提中,平日是對輸出張量的年夜小或尺寸停止的一些盤算。在這些情形下,經(jīng)由過程代碼的單一跟蹤將會更簡略,而且可以輕松地在ONNX中表現(xiàn)為:
#someComplicatedFunction() == True
x = y * 2 z = x + y
今朝,我們的tracer能與很多罕見的神經(jīng)收集合營應(yīng)用,但PyTorch中一些更先輩的法式,好比有靜態(tài)流掌握(dynamic flow control)的法式還不可。跟著時光的推移,我們將完美ONNX和tracer來支撐這些法式,閃開發(fā)人員可以充足應(yīng)用PyTorch的靈巧性與Caffe2的高機(jī)能壯大安排功效。
微軟:onNX 表征具有框架互操作性和同享優(yōu)化兩年夜長處
在 Facebook 宣布博客的同時,微軟也宣布了題為《微軟和 Facebook 為 AI 模子的互操作性構(gòu)建開放生態(tài)體系》的博客。在博客中,微軟表現(xiàn):
微軟給年夜家做出的許諾是“”人人無機(jī)會更便利,更有價(jià)值。我們供給各類平臺和對象來增進(jìn)這一點(diǎn),包含我們的認(rèn)知對象包,一個構(gòu)建深層神經(jīng)收集的開源框架。我們還與其他分享我們不雅點(diǎn)的組織協(xié)作,贊助 AI 社區(qū)。
明天,我們愉快地宣告,微軟和Facebook 一路推出Open Neural Network Exchange (ONNX,開放神經(jīng)收集交流) 格局。 ONNX為AI 框架生態(tài)體系中的互操作性和立異供給了同享的模子表征。CognitiveToolkit,Caffe2和PyTorch都將支撐ONNX。微軟和Facebook 配合開辟了onNX 這一開源項(xiàng)目,并愿望社區(qū)可以或許贊助其賡續(xù)退化。
甚么是onNX 表征?
Cognitive Toolkit 和其他框架供給了使開辟人員更輕易構(gòu)建和運(yùn)轉(zhuǎn)表征神經(jīng)收集的盤算圖的界面。固然供給的功效相似,然則明天的每一個框架都有本身表征這些圖的格局。 ONNX表征有以下重要長處:
1.框架互操作性
開辟人員可以更輕松地在框架間轉(zhuǎn)換,并為手頭的義務(wù)選擇最好對象。每一個框架都針對詳細(xì)特征停止了優(yōu)化,如疾速練習(xí),支撐靈巧的收集架構(gòu),在挪動端停止推理等等。很多時刻,研發(fā)進(jìn)程中最主要的特征與臨盆環(huán)節(jié)最主要的特征是分歧的。這招致開辟人員在框架之間停止模子轉(zhuǎn)換時,會因框架應(yīng)用不準(zhǔn)確或顯著延遲而使得效力下降。應(yīng)用onNX 表征的框架簡化了這一點(diǎn),使得開辟人員加倍靈巧。
2.同享優(yōu)化
硬件供給商和其他改良神經(jīng)收集機(jī)能的優(yōu)化可以經(jīng)由過程定位onNX 表征來同時影響多個框架。優(yōu)化常常須要被分離整合進(jìn)入每一個框架,這一進(jìn)程很費(fèi)時光。onNX 表征使得優(yōu)化更輕易完成,從而籠罩更多開辟人員。
技巧總結(jié)
onNX 供給了可擴(kuò)大盤算圖模子的界說,和內(nèi)置 operators 和尺度數(shù)據(jù)類型的界說。起先我們專注于推理(評價(jià))所需的才能。
每一個盤算數(shù)據(jù)流圖被結(jié)構(gòu)為構(gòu)成非輪回圖的節(jié)點(diǎn)列表。節(jié)點(diǎn)具有一個或多個輸出和一個或多個輸入。每一個節(jié)點(diǎn)是對 operators 的挪用。
可用性
onNX 代碼和文檔的初始版本如今曾經(jīng)在GitHub(https://github.com/onnx/onnx)上開源,召喚著社區(qū)的立刻介入。我們將積極展開基于onNX 的任務(wù),行將推出的Cognitive Toolkit 也將對其支撐。我們還籌劃和Facebook一道,供給安排參考、示例、對象和model zoo。
onNX 表征構(gòu)成了開放生態(tài)體系的基本,使 AI 更輕易獲得并富有價(jià)值。開辟人員可認(rèn)為其義務(wù)選擇適合的框架,框架作者可以專注于立異,硬件供給商可以簡化優(yōu)化流程。我們愿望社區(qū)可以或許支撐ONNX,以完成這一使人高興的愿景。
下一步是甚么
我們明天宣布最新版本的Caffe2和PyTorch,帶有ONNX支撐。我們愿望你對新功效能跟我們一樣高興!它們處于晚期階段,我們愿望你們檢討出來并提交你的反應(yīng)和改良。我們將持續(xù)成長ONNX,PyTorch和Caffe2,確保開辟人員具有AI的最新對象。敬請等待后續(xù)更新!
