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倍性能,性能成長相當驚人。
-
ARM
+關注
關注
134文章
9104瀏覽量
367782 -
神經網絡
+關注
關注
42文章
4772瀏覽量
100838 -
機器學習
+關注
關注
66文章
8422瀏覽量
132713
發布評論請先 登錄
相關推薦
評論