去年,華為推出了業界首款集成NPU的移動芯片Kirin 970。作為新一代的旗艦,這個SoC上面的CPU集成了8個核心,其中 4 個為高性能的 ARM 公版 A73 架構,最高主頻 2.4GHz(麒麟 960 是 2.36GHz),4 個為低功耗的 ARM 公版 A53 架構,最高主頻 1.8GHz(麒麟 960 是 1.84GHz);GPU則是集成了ARM最新的Mali-G72 架構。
另外,除了傳統移動手機SoC必備的通信基帶、ISP、DSP、Codec和協處理器外,Kirin 970還首次集成了專門為深度學習而定制的NPU,FP16 性能達到了 1.92 TFLOP。具體來看, NPU 是 CPU 的 25 倍,GPU 的 6.25 倍(25/4),能效比上,NPU 更是達到了 CPU 的 50 倍,GPU 的 6.25 倍(50/8)。這是華為面向現在火熱的人工智能市場扔出的一個殺手锏。
以上都是華為的一家之言,下面我們就來探討一下華為這顆芯片NPU的真正實力。首先,我們先來了解一下NPU的概念。
什么是NPU?
準確來說,當我們談到人工智能在計算領域的用途的時候,更多強調的是機器學習。
而當我們討論人工智能在硬件層面的深入研究的時候,談論的則更多是針對專門的硬件模塊所進行的卷積神經網絡的優化和執行工作。
在解釋卷積神經網絡如何工作的時候,我們從上世紀八十年代開始的工作已經遠遠超出了研究工作,其根本目的是試圖模擬人腦神經元的行為。
注意,這里的一個關鍵詞是“模擬”,雖然到目前為止并沒有任何神經網絡能夠從硬件層面模仿人腦的結構。
不過在學術領域,尤其是在神經網絡領域已經存在了很多理論。在過去的十年中,已經開發出了一套軟件能夠在GPU的硬件層面模擬整個過程。
比如說,研究人員通過不斷的迭代和發展美國有線電視新聞網的模型,極大的提升了新聞的準確性和效率。
當然,GPU并不是最適合運行人工智能的硬件,也不是唯一一個能夠進行高度的并行運算的處理器。
隨著人工智能的不斷發展,越來越多的公司希望在實際應用當中將人工智能實現商業化,這就要求硬件能夠提供更高的性能,更高的效率。
因此,我們也看到了更加專業的處理器的出現,其架構就是針對機器學習等應用。
谷歌是第一家宣布推出此類硬件的公司,該公司在2016年推出了TPU。但是,雖然這類專業的硬件能夠在處理人工智能等工作方面在硬件和功率方面獲得更高的效率,但是也失去了靈活性。
谷歌TPU芯片和主板
在這類專門的人工智能處理器當中,影響其工作效率的主要有兩個方面:要存在一個經過訓練的模型,其中主要包括模型在今后的運行中可能涉及到的相關的數據。一般情況下,模型的訓練是大密度的,需要經過大批量的訓練才能實現更高的精度。也就是說,在實際運行中,有效的神經網絡要比實際用到的神經網絡要龐大的多。
因此,普遍存在這樣一個思路,就是模型的主體訓練工作由更加龐大的GPU服務器或者是TPU云服務器來完成。
其次,神經網絡的運行需要一個執行模型,通過不斷注入新的數據,完成模型的演算來實現整個過程。一般情況下,我們將輸入數據,然后通過神經網絡模型得到輸出結果的模式稱之為推理。
不過實際的推理過程與模型當中的訓練過程對于計算的要求也存在著很大的不同。
雖然推理和訓練都需要用到高密度的并行計算,但是推理能夠以較低精度的計算來完成,同時執行模型部分所需要的計算性能也較低,這也就意味著推理過程能夠在更加便宜的硬件上來進行。
這一功能反過來引導整個行業走向更加注重邊緣設備(用戶設備)的方向,因為這些設備能夠提供更高的性能效率和需求更低的功耗。
也就是說,如果本地設備當中存在一個已經經過訓練的模型,就可以使用該設備來進行推理過程,而不需要將數據上傳到云端服務器當中來進行數據的處理。
這一過程將會減輕可能存在的延遲,功耗和帶寬等問題,同時也避免了隱私問題,因為輸出端數據永遠不會離開用戶設備。
隨著神經網絡推理功能在終端設備上運行的不斷實現,對于不同處理器能夠實現何種功能的研究以及選擇工作也在不斷深入。
CPU、GPU甚至DSP都能夠在終端設備上實現推理功能,但是這些處理器之間存在著巨大的效率差距。通用處理器適合絕大多數的工作,但是他們天生就不是被設計用來進行大規模的并行計算的。GPU和DSP甚至表現的更好,也有巨大的提升空間。
但是,此外,我們也見到了一種新的處理加速器的出現,比如麒麟970里面使用的NPU。
由于這類處理加速器是新近出現的設備,所以到目前為止,業界并沒有更出一個統一的命名方式。華為海思命名的是一種方式,而蘋果則是以另外一個名字命名。
不過從普世意義上來看,我們能夠將這些處理器統一稱之為神經網絡IP。
為麒麟970 NPU提供IP的是一家名為寒武紀的中國IP供應商,據了解,NPU采用的IP是經過優化之后的產物,而不是直接采用現有IP。同時,華為還要求Cambricon能夠與之共同發展改進該IP,因為在實際的應用當中,實際情況與計算情況,有時候還是會存在著一些差距。
但是,我們需要明白的是,我們應當避免對神經網絡的理論性能數據過多關注,因為這些數據并不一定與實際性能有關,同時由于對神經網絡IP了解有限,最終結果如何也未可知。
當使用CPU以外的其他硬件設備來運行神經網絡的時候,第一個障礙就是利用適當的API來訪問模塊。
傳統的SOC和IP供應商已經能夠提供專用的API和SDK來進行使用該類硬件的神經網絡的應用開發。而海思提供的API不僅僅能夠管理CPU,也能夠用來管理GPU和NPU。雖然目前海思還沒有對外公開該API,但是據了解,海思將會在今年晚些時候與開發商一起進行開發。
其他的廠商,諸如高通也提供了SDK來幫助程序開發人員在GPU和DSP等硬件的基礎上進行神經網絡的開發工作,當然還有其他一些IP供應商也有提供自己專門的軟件開發工具來進行相關的開發。
但是,針對特定供應商的API同樣存在著局限性,未來我們需要不同的供應商能夠提供統一的API來進行更加快速,便捷的開發工作。
谷歌目前正在開展這項工作,該公司計劃在安卓系統8.1當中引入相關的名為NN API的模塊。
另外一個需要注意的問題是,目前很多的類似于NN API的只能夠支持一部分功能,比如只能夠支持NPU的一部分功能,如果開發人員想要在NPU的基礎上,充分開發和利用硬件的性能,開發者就需要有專門的API來開發這類硬件。
Kirin 970的NPU性能測試
為了完成這類開發工作,我們還需要一個基準測試,來測試不同的供應商提供的API能夠利用到NPU多少性能。
不幸的是,在現階段,我們還缺少類似的實現該基準測試的方法,目前只有中國的一個廠商推出了相關的軟件:在中國比較流行的魯大師基準測試軟件在最近推出了一個基于人工智能測試的框架,用來測試NPU和高通SNPE框架。
據了解,目前該基準測試能夠測試三種不同的神經網絡,VGG16, InceptionV3和ResNet34。
這類軟件不僅能夠測試相關的處理器的性能,并給出相關的結果。同時也能夠以圖形化的方式,從平均功率,效率以及絕對性能等三個維度展示處理器的處理能力。
從這類軟件呈現的圖形數據我們能夠觀察到處理器的性能差異,CPU和NPU在進行相關運算時到底有多大的差距。
當使用CPU來進行運算的時候,通常情況下CPU只能以1-2fps的速率進行計算,而所需要的功耗也異常的高。比如驍龍835和麒麟960的CPU在運算的時候,都需要以超過平均負載的工作負載進行運算。
相比較而言,高通的Hexagon DSP能夠實現相對于CPU5到8倍的性能。
而華為的NPU的性能則更加明顯,相對于ResNet34,NPU能夠實現4倍的性能提升。
不難發現,不同的處理器之所以在性能方面表現出如此巨大的差異,是因為這些處理器的設計不同,所針對的處理器應用場景也不同。
由于卷積神經網絡在運算的過程中需要進行大量的并行計算,因此,像麒麟NPU這樣的專門的處理器在執行的過程中往往能夠實現更高的性能。
而在功耗方面,我們則發現,相對于其他的處理器,NPU能夠實現50倍的改進,尤其是在卷積神經網絡實際的運用當中,這種能耗的提升更加明顯。
同時,我們也發現,高通的DSP也能夠實現類似于華為NPU同等級的功耗水平。這似乎表明,高通推出的驍龍845處理器中應用的Hexagon 685能夠在性能方面提升3倍。
在此,我想抱怨一下谷歌的Pixel 2:由于Pixel 2缺乏對于SNPE框架的支持,因此很難從真正意義上進行驍龍835的CPU基準測試。
不過從某種意義上來說,這也是理所當然的事情,畢竟谷歌在安卓8.1中才會引入NN API,未來谷歌將會推動安卓標準API在相關處理器方面的加速也是自然而然的。
但是,從另一方面來說,這也會限制傳統的手機OEM廠商開發的能力。
這一決定往往會限制今后生態系統的發展,這也是為什么我們沒有看到更多的手機GPU來進行相關的卷積神經網絡加速工作。
此外,雖然目前iPhone并不支持相關的基準測試,但是我們也能夠從海思發布的相關數據中看到一些端倪。
從一些數字上我們能夠看到,蘋果所提供的神經網絡IP雖然在性能方面超越了驍龍835處理器,但是仍然遠遠落后于海思的NPU。但是,我們無法單獨核實這些數字是否真的適合相關的基準。
當然,最重要的問題在于,這類處理器能夠帶來什么好處?
海思表示,一個比較明顯的例子是,美國有線電視新聞網通過應用處理器來進行降噪處理,能夠在交通繁忙的情況下,將語音識別的準確度從80%提高到92%。
此外,還有在攝像頭應用方面,Mate 10的攝像頭能夠在NPU的幫助下,通過推理,來識別不同場景,再基于場景對相機的設置進行智能的優化。
同時,Mate 10中所應用的微軟翻譯程序也能夠使用NPU的離線加速翻譯功能,這些都是令我印象深刻的應用。
而在手機內置的圖片應用中,也能夠智能識別圖片來進行分類。
除了NPU能夠對卷積神經網絡進行相應的視覺處理之外,Cadence 的Tensilica Vision P6 DSP 和高通的Hexagon 680 DSP也能夠實現相同的功能,只是目前并沒有對終端用戶開放而已。
但是,這并不表明,采用NPU的Mate 10就能夠為終端用戶帶來決定性的差異化體驗。同樣,手機中這類神經網絡的應用并沒有在汽車,安全攝像頭領域出現相同的殺手級應用。另外,由于生態系統的限制性問題,我們只能夠在Mate 10見到相關的應用,我們能否在更多的場景中見到,華為是否愿意開發,與開發商一起共同開發,都是值得商榷的事情,不過華為在這方面的創新還是值得肯定的。
正如之前所說,華為和微軟共同開發的應用似乎是Mate 10上最吸引人的應用,因此我們可以在此基礎之上進行更多的探索。
目前來看,該應用能夠智能識別傳統的外文文本,并進行翻譯,那么在未來是否可以AR方面的應用呢?
聯發科在CES上為我們展示了一個相關的識別的例子:使用神經網絡的視頻會議編碼器能夠對美國有線電視新聞網的圖像和視頻進行識別,并反饋給編碼器,從而提升視頻的質量。
在未來,可以想見,越來越多的設備將會采用這類IP,開發人員也能夠更容易的開發相關應用。
最后的思考
我在這篇文章里,并不是想強調麒麟970到底有多么的先進,只是希望借此機會表明,未來高端安卓智能手機處理器的競爭和發展格局將會出現很多令人振奮的變化。
隨著iPhone智能手機生態系統進入10周年,我們也看到越來越多的垂直整合設備的出現。
并不是說蘋果就一定是規則的制定者,只是在未來,一個更加成熟的生態系統當中,公司都需要能夠自主的把控發展路線。否則,手機廠商將很難與其他廠商區分開來,更不用說為用戶提供差異化的功能,或者與其他廠商競爭。
蘋果很早就意識到了這一點。而華為也是目前為止唯一一家能夠獨自設立目前的OEM廠商。
同時,還有很多準獨立廠商也在努力設計自己的芯片,他們憑借從IP供應商那里獲得的CPU和GPU等關鍵零部件來進行設計。
根本上來說,麒麟970在CPU的性能與功率上面并沒有與驍龍835有太大的差距,其誤差只是體現在cortex-a73在實際應用中的體現而已。
考慮到驍龍820所采用的CPU雖然與三星自主開發的CPU略有差距,但是在實際應用中并不明顯,而且三星到目前未知也沒有計劃去全力發展和整合自主CPU,考慮到這些,華為采用ARM CPU還是很有道理的。
而高通本身在自主設計CPU和GPU方面都具有一定的自主掌控能力,并與其它廠商有著很大的差距。
想象一下,在桌面GPU上領先的英偉達,與競爭對手相比,擁有33%的效率競爭優勢,當這一優勢擴大到75-90%的時候,這種選擇就不言而喻了。
這種情況之下,廠商可以通過使用更大的GPU來補償效率和性能方面的缺陷,而這些體驗,終端用戶幾乎很難感覺到。
但是,這是一種不可持續的方案,因為這種方式正在不斷蠶食廠商的毛利率。
除了CPU和GPU以及調制解調器IP之外,手機還需要更多的組件,這里就不深入探討。
比如說,在麒麟970中使用的 Cadence Tensilica Vision P6 DSP確實能夠提升相機的性能,但是也需要從軟件方面來進行支持才可以。
NPU是一種尚處于起步階段的新興IP,麒麟970有很多競爭對手嗎?并沒有。這一功能為產品增加了競爭力嗎?確實有,但可能沒有想象中那么大。
軟件生態系統的發展確實會拖慢手機產業的發展,但是沒有相關硬件的支持,很多應用只有軟件也是沒有辦法實現的。
華為的這一策略將來在全行業采用將是不可避免的。
海思的NPU芯片證明海思作為一家芯片設計公司也能夠設計出與高通,三星匹敵的處理器。但是,海思的發布時間并不遵循傳統安卓手機廠商的發布規律,因此我們預計會有新的處理出現,在性能方面超過麒麟970。
現實是,華為是能夠將芯片設計和終端產品整合在一起的唯一兩家OEM供應商之一(編者按:其實三星也算一家,但是三星似乎采用高通的方案更多),也是唯一一家安卓廠商。在過去的幾年里,這家廠商已經走過了漫長的道路,經歷了太多的改進。最重要的是,華為始終能夠把目標和執行目標放在一起,堅定不移的朝著移動業務這一正確方向發展,這是他們成功的關鍵原因。
但對這家中國廠商來說,未來的路還是很長。
-
處理器
+關注
關注
68文章
19259瀏覽量
229653 -
神經網絡
+關注
關注
42文章
4771瀏覽量
100715 -
云服務器
+關注
關注
0文章
566瀏覽量
13358
發布評論請先 登錄
相關推薦
評論