Kirin 970的NPU實力究竟如何?| 半導體行業觀察
來源:本文由微信公眾號 半導體行業觀察(ID:icbank)翻譯自anandtech,謝謝。
去年,華為推出了業界首款集成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。但是,雖然這類專業的硬體能夠在處理人工智慧等工作方面在硬體和功率方面獲得更高的效率,但是也失去了靈活性。
在這類專門的人工智慧處理器當中,影響其工作效率的主要有兩個方面:要存在一個經過訓練的模型,其中主要包括模型在今後的運行中可能涉及到的相關的數據。一般情況下,模型的訓練是大密度的,需要經過大批量的訓練才能實現更高的精度。也就是說,在實際運行中,有效的神經網路要比實際用到的神經網路要龐大的多。
因此,普遍存在這樣一個思路,就是模型的主體訓練工作由更加龐大的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供應商之一(編者按:其實三星也算一家,但是三星似乎採用高通的方案更多),也是唯一一家安卓廠商。在過去的幾年裡,這家廠商已經走過了漫長的道路,經歷了太多的改進。最重要的是,華為始終能夠把目標和執行目標放在一起,堅定不移的朝著移動業務這一正確方向發展,這是他們成功的關鍵原因。
但對這家中國廠商來說,未來的路還是很長。
原文鏈接:https://www.anandtech.com/show/12195/hisilicon-kirin-970-power-performance-overview/7
今天是《半導體行業觀察》為您分享的第1477期內容,歡迎關注。
Reading
推薦閱讀(點擊文章標題,直接閱讀)
延期多年,EUV光刻機終於準備好了
半導體的未來充滿不確定性
北方華創突圍,小體量收購更易破冰!
推薦閱讀:
※通過DARPA項目看看晶元世界的「遠方」- Architectures
※2015 年紫光在晶元設計領域的行業地位如何?
※Perl等腳本語言在IC設計中有哪些用處?數字IC前端設計有必要掌握類似語言么?如果有,應該掌握到什麼程度?
※怎樣學好模擬集成電路設計?就Allen的那本,還有拉扎維的那本。?