係統粉 > IT資訊 > 微軟資訊

Facebook、微軟聯合推出 ONNX 標準, 號稱要解決開發框架碎片化

發布時間:2017-09-08    瀏覽數:

Facebook、微軟聯合推出 ONNX 標準, 號稱要解決開發框架碎片化(1)

今日微軟和 Facebook 發布了一個全新的開源項目——ONNX,欲借此打造一個開放的深度學習開發工具生態係統。

ONNX 的全稱為“Open Neural Network Exchange”,即“開放的神經網絡切換”。顧名思義,該項目的目的是讓不同的神經網絡開發框架做到互通互用。目前,Microsoft Cognitive Toolkit,PyTorch 和 Caffe2 已宣布支持 ONNX。

ONNX 所針對的,可以說是深度學習開發生態中最關鍵的問題之一:

開發框架的碎片化。

Facebook、微軟聯合推出 ONNX 標準, 號稱要解決開發框架碎片化(2)

在任意一個框架上訓練的神經網絡模型,無法直接在另一個框架上用。開發者需要耗費大量時間精力把模型從一個開發平台移植到另一個。

借助 ONNX,開發者能把在 PyTorch 上訓練的模型直接拿到 Caffe2 上進行推理。對於把模型從研究階段推向產品階段,這是一個經常遇到的場景。微軟宣布正積極開發 Microsoft Cognitive Toolkit 的下個版本,將會提供對 ONNX 的支持。

ONNX 的工作原理是:

實時跟蹤某個神經網絡是如何在這些框架上生成的,接著,使用這些信息創建一個通用的計算圖,即符合ONNX 標準的計算圖。這樣做行得通,是因為在計算方麵,這些框架產生的最終結果都非常接近,雖然更高級的表達不同。

ONNX 標準意味著什麼?

PyTorch、Microsoft Cognitive Toolkit 等框架提供的界麵,讓開發者創建、運行用來表示神經網絡的計算圖更加方便。雖然功能相似,但每一個框架都用一套不同的格式表示這些計算圖。獲知,ONNX 的表示方式有兩個核心優勢:

框架之間的互用互通

開發者能更方便地在不同框架間切換,為不同任務選擇最優工具。基本每個框架都會針對某個特定屬性進行優化,比如訓練速度、對網絡架構的支持、能在移動設備上推理等等。在大多數情況下,研發階段最需要的屬性和產品階段是不一樣的。這導致效率的降低,比如選擇不切換到最合適的框架,又或者把模型轉移到另一個框架導致額外的工作,造成進度延遲。使用支持 ONNX 表示方式的框架,則大幅簡化了切換過程,讓開發者的工具選擇更靈活。

優化共享

硬件設備商們推出的對神經網絡性能的優化,將能夠一次性影響到多個開發框架——如果用的是 ONNX 表示方式。如果優化很頻繁,把它們單獨整合到各個框架是個非常耗費時間的事。通過 ONNX 表示方式,更多開發者就能獲取這些優化。

技術概括

ONNX 為可擴展的計算圖模型、內部運算器(Operator)以及標準數據類型提供了定義。在初始階段,Facebook 和微軟會專注於推理(Inference)所需要的各項能力(評估)。

每個計算數據流圖以節點列表的形式組織起來,構成一個非循環的圖。節點有一個或多個的輸入與輸出。每個節點都是對一個運算器的調用。圖還會包含協助記錄其目的、作者等信息的元數據。

運算器在圖的外部實現,但那些內置的運算器可移植到不同的框架上。每個支持 ONNX 的框架將在匹配的數據類型上提供這些運算器的實現。

TensorFlow 的缺席

ONNX 標準能否在深度學習開發者們接受,在很大程度上將取決於它在各個框架上的普及程度。

在看來,目前 ONNX 最大的問題是,最受歡迎的開發框架 TensorFlow 沒有兼容 ONNX 標準。亞馬遜的禦用框架 MXNet 也沒有。Facebook 和微軟都表示,將來會持續有更多框架加入到 ONNX 生態中,但沒有透露 TensorFlow 和 MXNet 是否在計劃中。穀歌和亞馬遜也還沒有對此事表達態度,他們願不願意合作,尚屬未知。

如何使用

初始版 ONNX 的代碼、文件,已在 GitHub 上開源。Facebook 和微軟表示將會持續改進 ONNX, 將會在不久的將來推出範例、工具、reference implementations 以及模型。

更多關於 ONNX 的信息可訪問 Facebook 官方博客。

via 微軟,venturebeat

上一篇:由微軟Cortana和蘋果Siri引發的人工智能思考 下一篇:Facebook聯合微軟推出神經網絡交換格式ONNX:不同框架間模型遷移

相關資訊

最新熱門應用

電腦問答