Arm下一個ARMv8-A版本將整合TPU技術,機器學習能力暴增數倍_風聞
TechEdge科技边界-2019-09-19 23:48
Arm早前曾宣佈其ArmV8-A架構的下一版本將包括對bfloat16的支持,現在透露了更多細節。
bfloat16是一種越來越多被應用於加速機器學習應用的浮點格式。谷歌、英特爾和不少新創公司都將bfloat16作為其AI加速架構的核心功能之一。
Bfloat16是由Google發明,最初在其第三代Tensor處理單元(TPU)中導入,作為加速機器學習之用。英特爾也認為該格式在未來AI計算中也有龐大的應用潛力,因此整合到其即將推出的“Cooper Lake”Xeon SP處理器,以及“Spring Crest”神經網絡處理器中,未來的Xe GPU也會支持。而包括Wave Computing、Habana Labs和Flex Logix等AI芯片新創公司也採用了支持該計算格式的定製AI處理器。
bfloat16的主要想法是提供動態範圍與標準IEEE-FP32相同的16位浮點格式,精度較低。相當於將8位的FP32指數字段的大小匹配,並將FP32分數字段的大小縮小到7位。
根據Arm首席架構師和研究員Nigel Stephens的説法,在大多數情況下,bfloat16格式與FP32一樣準確,用於神經網絡計算,但是以一半的位址就可以完成任務。因此,與32位相比,吞吐量可以翻倍,內存需求可以減半。在多數情況下,blfloat16可以成為這些機器學習算法中FP32的“插入式”替代品。由於神經網絡的計算性質,只要數據類型具有足夠的範圍和精度,就可以很好地適應少量噪聲,精準的完成模型訓練工作。
Arm將bfloat16的支持被放到ArmV8-A下的所有浮點處理的相關指令集,包含SVE(可擴展矢量擴展)、AArch64 Neon(64位SIMD)和AArch32 Neon(32位SIMD)。通過相關擴展的支持,加速基於Arm的客户端和服務器的機器學習推理和培訓練過程。雖然Arm服務器市佔率仍然很小,但其在智能手機等客户端方面擁有幾乎絕對的統治地位,這意味着未來的手持式和物聯網設備將很快能夠利用更緊湊的數字格式來處理機器學習。
當然,Arm如果越強,那麼採用自有AI架構的芯片設計業者壓力其實也會越大,就好比華為先後使用寒武紀與達芬奇架構,都是封閉的專有架構,高通也是採用DSP結合NPU計算,如果Arm官方架構性能有飛躍性的改進,那麼這些採用定製AI架構的芯片設計者可能最終會被迫放棄自己的封閉架構,轉而擁抱Arm的開放架構。而這也有助於發展整體AI生態,畢竟使用相同開發環境的硬件基數越大,就能吸引更多應用開發者共同耕耘相關生態。
值得注意的是,Arm決定在SVE中加入bfloat16的支持這點。由於SVE是專門針對高性能計算的矢量指令集,截至目前為止,僅有富士通一家採用,並應用於其A64FX芯片上。Arm方面表示,由於HPC用户對機器學習的興趣持續增加,過去只能依靠GPU方案來進行加速,若能在單一架構處理完機器學習的工作,那麼就不用再額外花費成本添購專用的加速硬件。
使用bfloat16還有另一個好處,那就是它具有與FP32相同的動態範圍,這使得轉換現有使用FP32的現有計算代碼非常簡單,可以大規模無痛轉換既有的FP32應用到blfloat16數據格式下。
然而,SVE原本就可以針對從128位到2048位等不同的矢量長度來實現計算工作,理論上,bfloat16應該放在128位的Neon計算單元內比較合理。但實際上,數據的吞吐量其實還是要取決於硬件的實現選擇,比如説SVE執行單元的數量,以及Neon計算單元的數量。
而隨着Arm增加了bfloat16這個數據格式的支持,藉以加速AI計算,這也讓GPU成為目前主流機器學習加速硬件中唯一不支持這種數據格式的架構,而英特爾即將推出的Xe GPU也會加入該格式的支持,包含AMD或NVIDIA,應該都會在下一代產品中增加此數據格式的支持。
根據ARM做的模擬,不同類型的運算中bfloat16帶來的性能提升不等,少的有1.6倍性能,多的可達4倍性能,性能成長相當驚人。