毫無疑問神經網路變得越來越流行,在各式各樣的產品中都可以找到它的相關應用。它們會根據你的興趣自動調整社交多媒體內容、讓照片顯示更加好看、在AR/VR頭戴設備中增強檢測和眼球追蹤功能。
在智慧監控領域可以應用於安全保障、提供增強的面部識別功能、群體行為分析等。在網上支付系統中對於詐騙行為的檢測也比人類更加強大。神經網路也將應用到無人駕駛汽車系統中,藉以避免碰撞事故的發生,實現無人機運送包裹,此外最近比較受大家關注的就是以臉部辨識來解鎖手機了。
神經網路專用硬體需求高
為了能夠實現如此眾多的功能,神經網路首先需要經過訓練,這通常需要強大的伺服器硬體提供支援。物體識別的實現其實就是不斷地進行推斷和對比,而且需要即時的方式來完成。當然神經網路越大,需要的運算量就越大,也需要更高水準的性能支援,尤其在行動應用方面。儘管神經網路推斷引擎可以在CPU上運行,但是它們通常採用GPU,利用其強大的平行運算特性,以求更快處理神經網路運算。然而為了在嚴格的功耗下滿足下一代性能要求,專用的神經網路加速硬體則是必需的。
這對硬體來說是一個自然演進過程。從早期的桌面PC遊戲到街機遊戲機,到後來的家庭遊戲機以及移動設備端等,PowerVR一直都與圖形技術密切相關,除此之外,PowerVR還擁有包括電腦視覺和AI應用的系列IP產品。原本早期的桌面處理器甚至沒有整合數學運算輔助處理器模組,無法在遊戲類應用軟體中提供浮點數運算加速功能,然後自20世紀80年代這種功能已經成為CPU設計的標準。在20世紀90年代以後,CPU整合了記憶體快取以進一步提升性能,不久GPU也被整合於其中。隨後在2010年代出現了專用於編解碼的ISP(圖像訊號處理)和硬體設備,以實現流暢的視訊重播。現在輪到神經網路擁有專用的晶片了(圖1)。
|
圖1 嵌入式系統的演進 |
將神經網路運算轉移到終端
2017年9月21日PowerVR在中國首發一項全新的IP產品—硬體神經網路加速器PowerVR 2NX。命名為神經網路加速器(NNA),乃是基於其能夠支援多種神經網路模型和架構以及機器學習框架,並具備高性能和低功耗特性。
在很多案例中,神經網路的推斷處理過程是放在雲端伺服器強大的硬體上來執行的,但是由於多種原因這部分工作現在需要轉移到終端硬體設備上來,有些應用必須要快速的回應。由於延遲問題,通過網路運行神經網路是不切實際的,轉移到終端設備上來能夠消除可能發生的安全問題。況且蜂巢網路(3G、4G、5G)也不是在任何情況下都可行,終端專用的硬體設備則更加可靠,除了能夠提供更強大的性能,還能大幅減少系統功耗。
舉個例子,無人機的飛行速度一般會超過150mph(67公尺/秒),沒有硬體的情況下,它需要檢測前面10~15公尺範圍內的障礙物以避免碰撞(圖2)。由於延遲、頻寬和網路的可靠性等因素,採用雲端伺服器的方式在運作上會出現問題。採用終端硬體解決方案比如PowerVR 2NX,無人機可以運行多個神經網路,能夠在1米範圍內即時識別和追蹤前方的障礙物。如果想借助無人機傳遞包裹或者以獨特的視角觀看各種體育運動,神經網路硬體輔助則必不可少。
|
圖2 無人機就是一個案例,採用神經網路硬體加速可實現更快更高效的碰撞檢測。 |
如今智慧手機保存了太多我們的照片,一般會有1,000張或者更多,手機系統可以採用不同的方式自動進行排序,比如識別出包含某個人的所有照片,這個過程需要大量的分析運算,一款旗艦級的GPU運行神經網路處理過程可能需要60秒,但是採用PowerVR 2NX則僅需要2秒鐘(圖3)。
|
圖3 PowerVR 2NX能夠為行動設備提供高速的圖片處理功能,同時保持低功耗。 |
同時還要考慮電池使用時間。GPU處理大約2,400張照片會使用1%的電量,而消耗同樣的電量PowerVR 2NX能夠處理大約428,000張圖片。低功耗特性支援更多新的應用場景,比如智慧監控。2NX能支援採用終端硬體平台進行分析處理,比如部署在城市中心、體育場內的攝影機或者智慧家庭安全系統等都有其相關應用。因為2NX支援不同的網路類型,可以做出更智慧的決策,減低了錯誤發生的機率。由於其低功耗特性,這些攝影機都可以採用電池驅動,方便了部署和管理。
靈活的位元數支援
為了支援不同的應用案例,2NX NNA進行了全面的設計,支援高效的神經網路推理過程。是什麼讓2NX硬體加速器有別於其他的神經網路解決方案(DSP/GPU)?首先2NX超低功耗利用了在行動平台設計方面的經驗,第二個是靈活的位元數支援,更重要的是每個推理層都具備此特性。神經網路訓練通常採用32位元全精度,但是這樣無疑會需要更高的頻寬、更多的功耗,這對於行動設備的功耗要求顯然是不允許的,儘管硬體設備有足夠的性能支援神經網路的運作,但這對電池的使用壽命會有很大的衝擊。
為了解決這個問題,2NX為權重和資料提供可變的位元數支援,這樣就能夠在保持較高推理精度的同時大大降低對頻寬的要求,功耗要求也隨之減少。
與其他解決方案不同,其降低位元數要求並不是採用硬性的方法,而是在每個分層都可以靈活配置權重和資料的位元寬,因此開發者可以全面優化訓練網路的性能。而且不光要保持精度還要保持精確性,最終得以在更低的頻寬和功耗的情況下提供更高的性能(圖4)。
|
圖4 PowerVR 2NX神經網路加速器實現靈活的配置權重和精度 |
實際上2NX需要的頻寬僅是其他競爭解決方案的25%左右,在某些應用場景從8位元位寬降低到4位元位寬精度,2NX消耗的功耗則降為69%,但是精確度的降低卻不足1%。
強化必要性能
最近某個智慧手機製造商宣布其硬體平台支援人臉檢測並可用於解鎖手機,相當於每秒6,000億次的推理操作。PowerVR 2NX單核IP運作在保守頻率800MHz,能提供2,048 MACs/cycle(產業標準性能指標)操作,意味著每秒3.2萬億次推理操作—相當於最有競爭力的對手的兩倍。2NX是一個高度可擴充的解決方案,如果需要更高的性能,則可以使用更多的核心。
2NX非常強大,在非常小的面積上能夠提供業界最高的推理/mm2指標。實際上在SoC中,PowerVR GPU結合NNA的解決方案,相比競爭對手純GPU解決方案占用更少的晶片面積,當然2NX可以單獨使用,不必結合GPU,CPU也僅僅是用於驅動。
2NX IP同樣具備儲存管理單元(MMU),可以應用於Android和其他複雜的作業系統(OS)中,而且不需要整合額外的晶片或者其他複雜的軟體。
支援不同網路類型/模型/框架/ API
神經網路涉及各種各樣的形式和特性,如何選用很大程度上依賴於要實現的系統功能。2NX NNA支援多種形式的神經網路,包括卷積神經網路(CNN)、多層感知器(MLP)、遞迴神經網路(RNN)和SSD物體檢測框架。目前2NX支援主要的神經網路框架,比如Caffe和TensorFlow,對於其他框架的支援也在持續開發中(圖5)。
|
圖5 PowerVR 2NX於神經網路運算架構中的位置 |
使用優化轉換和調優工具,結合深度神經網路(DNN)API,開發者能夠快速部署他們所選擇的網路框架並且運行PowerVR NNA加速器。PowerVR長久以來一直在支援Android系統,當Google發布Android神經網路API後,2NX也將全面支援。當然開發者也可以採用現在的工作流程開發行動App原型,然後使用DNN API與2NX進行配對,實現應用系統加速和功耗降低。
隨著我們的世界與電腦的關係越來越密切,機器也會更加地理解這個世界,PowerVR 2NX NNA代表的是神經網路加速和性能的一個轉捩點,具有在產業內最高的「推理/milliwatt」和「推理/mm2」性能指標,能夠滿足在行動硬體平台部署神經網路之功耗和性能約束條件的IP解決方案。除此之外PowerVR NNA還支援主要的神經網路和框架,結合DNN API使得PowerVR 2NX成為驅動未來神經網路應用的解決方案。
(本文作者任職於Imagination)