機器學習領域的不斷發(fā)展為部署利用神經(jīng)網(wǎng)絡推理的設備和應用程序創(chuàng)造了新的機會,這些設備和應用程序具有前所未有的基于視覺的功能和準確性水平。但是,快速發(fā)展的領域已經(jīng)讓位于處理器、加速器和庫的混亂局面。本文介紹了開放互操作性標準及其在降低成本和降低在實際產(chǎn)品中使用推理和視覺加速的障礙方面的作用。
每個行業(yè)都需要開放標準,通過增加生態(tài)系統(tǒng)元素之間的互操作性來降低成本和縮短上市時間。開放標準和專有技術具有復雜且相互依存的關系。專有 API 和接口通常是達爾文式的試驗場,并且可以在聰明的市場領導者手中保持主導地位,這也是理所當然的。強大的開放標準源于行業(yè)對成熟技術的更廣泛需求,可以提供健康、激勵的競爭。從長遠來看,不受任何一家公司控制或依賴于任何一家公司的開放標準通常可以成為行業(yè)向前發(fā)展的連續(xù)性線索,因為技術、平臺和市場地位不斷變化和發(fā)展。
Khronos Group 是一個非營利性標準聯(lián)盟,任何公司都可以加入,擁有超過 150 名成員。所有標準組織的存在都是為了為競爭者提供一個安全的場所,讓他們?yōu)榱怂腥说睦孢M行合作。Khronos Group 的專業(yè)領域是創(chuàng)建開放、免版稅的 API 標準,使軟件應用程序庫和引擎能夠利用硅加速的力量來滿足要求苛刻的用例,例如 3D 圖形、并行計算、視覺處理和推理。
創(chuàng)建嵌入式機器學習應用程序
許多互操作部分需要協(xié)同工作來訓練神經(jīng)網(wǎng)絡并將其成功部署在嵌入式加速推理平臺上——如圖 1 所示。有效的神經(jīng)網(wǎng)絡訓練通常需要大型數(shù)據(jù)集,使用浮點精度并在強大的 GPU 上運行- 加速臺式機或云端。訓練完成后,經(jīng)過訓練的神經(jīng)網(wǎng)絡將被引入為快速張量操作優(yōu)化的推理運行時引擎,或?qū)⑸窠?jīng)網(wǎng)絡描述轉(zhuǎn)換為可執(zhí)行代碼的機器學習編譯器。無論使用引擎還是編譯器,最后一步都是在從 GPU 到專用張量處理器的各種加速器架構之一上加速推理代碼。
圖 1. 訓練神經(jīng)網(wǎng)絡并將其部署在加速推理平臺上的步驟
那么,行業(yè)開放標準如何幫助簡化這一過程呢?圖 2. 說明了在視覺和推理加速領域中使用的 Khronos 標準。總的來說,隨著處理器頻率擴展讓位于并行編程作為以可接受的成本和功率水平提供所需性能的最有效方式,人們對所有這些標準的興趣越來越大。
圖 2. 用于加速視覺和推理應用程序和引擎的 Khronos 標準
從廣義上講,這些標準可以分為兩組:高級和低級。高級 API 側重于易于編程,具有跨多個硬件架構的有效性能可移植性。相比之下,低級 API 提供對硬件資源的直接、顯式訪問,以實現(xiàn)最大的靈活性和控制。每個項目都必須了解最適合其開發(fā)需求的 API 級別。此外,高級 API 通常會在其實現(xiàn)中使用低級 API。
讓我們更詳細地了解其中的一些 Khronos 標準。
SYCL - C++ 單源異構編程
SYCL(發(fā)音為“鐮刀”)使用 C++ 模板庫來調(diào)度標準 ISO C++ 應用程序的選定部分以卸載處理器。SYCL 使復雜的 C++ 機器學習框架和庫能夠直接編譯并加速到在許多情況下優(yōu)于手動調(diào)整代碼的性能水平。如圖 3 所示,默認情況下,SYCL 是通過較低級別的 OpenCL 標準 API 實現(xiàn)的:將用于加速的代碼提供給 OpenCL,而剩余的主機代碼則通過系統(tǒng)的默認 CPU 編譯器提供。
圖 3. SYCL 將標準 C++ 應用程序拆分為 CPU 和 OpenCL 加速代碼
越來越多的 SYCL 實現(xiàn),其中一些使用專有后端,例如 NVIDIA 的 CUDA 用于加速代碼。值得注意的是,英特爾的新 oneAPI Initiative 包含一個名為 DPC++ 的并行 C++ 編譯器,它是基于 OpenCL 的符合 SYCL 實現(xiàn)。
NNEF——神經(jīng)網(wǎng)絡交換格式
當今使用的神經(jīng)網(wǎng)絡訓練框架有數(shù)十種,包括 Torch、Caffe、TensorFlow、Theano、Chainer、Caffe2、PyTorch 和 MXNet 等等,并且都使用專有格式來描述他們訓練的網(wǎng)絡。還有數(shù)十種甚至數(shù)百種嵌入式推理處理器進入市場。迫使許多硬件供應商理解和導入如此多的格式是一個典型的碎片問題,可以通過如圖 4 所示的開放標準來解決。
圖 4. NNEF 神經(jīng)網(wǎng)絡交換格式通過推理加速器簡化訓練網(wǎng)絡的攝取
NNEF 文件格式旨在在網(wǎng)絡訓練和推理芯片領域之間架起一座有效的橋梁——Khronos 久經(jīng)考驗的多公司治理模型讓硬件社區(qū)對格式如何以一種滿足開發(fā)處理器工具鏈和框架的公司,通常在安全關鍵市場。
NNEF 并不是業(yè)界唯一的神經(jīng)網(wǎng)絡交換格式,ONNX 是由 Facebook 和微軟共同創(chuàng)立的開源項目,是一種被廣泛采用的格式,主要專注于訓練框架之間的網(wǎng)絡交換。NNEF 和 ONNX 是互補的,因為 ONNX 跟蹤培訓創(chuàng)新和機器學習研究社區(qū)的快速變化,而 NNEF 的目標是嵌入式推理硬件供應商,這些供應商需要一種具有更深思熟慮的路線圖演變的格式。Khronos 圍繞 NNEF 發(fā)起了一個不斷發(fā)展的開源工具生態(tài)系統(tǒng),包括來自關鍵框架的導入器和導出器以及一個模型動物園,以使硬件開發(fā)人員能夠測試他們的推理解決方案。
OpenVX – 便攜式加速視覺處理
OpenVX(VX 代表“視覺加速”)通過提供圖形級抽象來簡化視覺和推理軟件的開發(fā),使程序員能夠通過連接一組函數(shù)或“節(jié)點”來構建他們所需的功能。這種高級抽象使芯片供應商能夠非常有效地優(yōu)化他們的 OpenVX 驅(qū)動程序,以便在幾乎任何處理器架構上高效執(zhí)行。隨著時間的推移,OpenVX 在原始視覺節(jié)點旁邊添加了推理功能——畢竟神經(jīng)網(wǎng)絡只是另一個圖!通過將 NNEF 訓練的網(wǎng)絡直接導入 OpenVX 圖中,OpenVX 和 NNEF 之間的協(xié)同作用越來越大,如圖 5 所示。
圖 5. OpenVX 圖可以描述從 NNEF 文件導入的視覺節(jié)點和推理操作的任意組合
OpenVX 1.3 于 2019 年 10 月發(fā)布,使針對垂直細分市場(例如推理)的精心挑選的規(guī)范子集能夠被實施和測試,使其符合官方標準。OpenVX 還與 OpenCL 深度集成,使程序員能夠添加自己的自定義加速節(jié)點以在 OpenVX 圖形中使用 - 提供簡單的可編程性和可定制性的獨特組合。
OpenCL – 異構并行編程
OpenCL 是一種低級標準,用于對 PC、服務器、移動設備和嵌入式設備中的各種異構處理器進行跨平臺并行編程。OpenCL 提供了基于 C 和 C++ 的語言來構建內(nèi)核程序,這些內(nèi)核程序可以在具有 OpenCL 編譯器的系統(tǒng)中的任何處理器上并行編譯和執(zhí)行,從而為程序員明確控制在哪些處理器上執(zhí)行哪些內(nèi)核。OpenCL 運行時協(xié)調(diào)加速器設備的發(fā)現(xiàn),為選定的設備編譯內(nèi)核,以復雜的同步級別執(zhí)行內(nèi)核并收集結果,如圖 6 所示。
圖 6. OpenCL 使 C 或 C++ 內(nèi)核程序能夠跨異構處理器的任意組合并行編譯和執(zhí)行
OpenCL 在整個行業(yè)中廣泛使用,為計算、視覺和機器學習庫、引擎和編譯器提供最低的“接近金屬”執(zhí)行層。
OpenCL 最初是為在高端 PC 和超級計算機硬件上執(zhí)行而設計的,但在與 OpenVX 類似的演變過程中,需要 OpenCL 的處理器越來越小,精度越來越低,因為它們以邊緣視覺和推理為目標。OpenCL 工作組正在努力定義為嵌入式處理器量身定制的功能,并使供應商能夠交付針對關鍵功耗和成本敏感用例的選定功能,并且完全符合要求。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19432瀏覽量
231258 -
計算機
+關注
關注
19文章
7546瀏覽量
88689 -
編譯器
+關注
關注
1文章
1642瀏覽量
49305
發(fā)布評論請先 登錄
相關推薦
嵌入式和人工智能究竟是什么關系?
嵌入式主板是什么意思?嵌入式主板全面解析
飛凌嵌入式「在線文檔」功能上線 | 開放靈活,盡在掌握
![飛凌<b class='flag-5'>嵌入式</b>「在線文檔」功能上線 | <b class='flag-5'>開放</b>靈活,盡在掌握](https://file1.elecfans.com/web2/M00/07/2C/wKgaombjmYyAXp-lAAB366yHNcA754.png)
嵌入式linux開發(fā)板芯片的工作原理
Astra? SL系列SL1680詳細介紹,嵌入式物聯(lián)網(wǎng)處理器
![Astra? SL系列SL1680詳細介紹,<b class='flag-5'>嵌入式</b>物聯(lián)網(wǎng)處理器](https://file1.elecfans.com/web2/M00/03/9C/wKgaoma9ZyiAedv4AALll9Ah-9g157.png)
評論