Arm早前曾宣布其ArmV8-A架構(gòu)的下一版本將包括對(duì)bfloat16的支持,現(xiàn)在透露了更多細(xì)節(jié)。
bfloat16是一種越來越多被應(yīng)用于加速機(jī)器學(xué)習(xí)應(yīng)用的浮點(diǎn)格式。谷歌、英特爾和不少新創(chuàng)公司都將bfloat16作為其AI加速架構(gòu)的核心功能之一。
Bfloat16是由Google發(fā)明,最初在其第三代Tensor處理單元(TPU)中導(dǎo)入,作為加速機(jī)器學(xué)習(xí)之用。英特爾也認(rèn)為該格式在未來AI計(jì)算中也有龐大的應(yīng)用潛力,因此整合到其即將推出的“Cooper Lake”Xeon SP處理器,以及“Spring Crest”神經(jīng)網(wǎng)絡(luò)處理器中,未來的Xe GPU也會(huì)支持。而包括Wave Computing、Habana Labs和Flex Logix等AI芯片新創(chuàng)公司也采用了支持該計(jì)算格式的定制AI處理器。
bfloat16的主要想法是提供動(dòng)態(tài)范圍與標(biāo)準(zhǔn)IEEE-FP32相同的16位浮點(diǎn)格式,精度較低。相當(dāng)于將8位的FP32指數(shù)字段的大小匹配,并將FP32分?jǐn)?shù)字段的大小縮小到7位。
根據(jù)Arm首席架構(gòu)師和研究員Nigel Stephens的說法,在大多數(shù)情況下,bfloat16格式與FP32一樣準(zhǔn)確,用于神經(jīng)網(wǎng)絡(luò)計(jì)算,但是以一半的位址就可以完成任務(wù)。因此,與32位相比,吞吐量可以翻倍,內(nèi)存需求可以減半。在多數(shù)情況下,blfloat16可以成為這些機(jī)器學(xué)習(xí)算法中FP32的“插入式”替代品。由于神經(jīng)網(wǎng)絡(luò)的計(jì)算性質(zhì),只要數(shù)據(jù)類型具有足夠的范圍和精度,就可以很好地適應(yīng)少量噪聲,精準(zhǔn)的完成模型訓(xùn)練工作。
Arm將bfloat16的支持被放到ArmV8-A下的所有浮點(diǎn)處理的相關(guān)指令集,包含SVE(可擴(kuò)展矢量擴(kuò)展)、AArch64 Neon(64位SIMD)和AArch32 Neon(32位SIMD)。通過相關(guān)擴(kuò)展的支持,加速基于Arm的客戶端和服務(wù)器的機(jī)器學(xué)習(xí)推理和培訓(xùn)練過程。雖然Arm服務(wù)器市占率仍然很小,但其在智能手機(jī)等客戶端方面擁有幾乎絕對(duì)的統(tǒng)治地位,這意味著未來的手持式和物聯(lián)網(wǎng)設(shè)備將很快能夠利用更緊湊的數(shù)字格式來處理機(jī)器學(xué)習(xí)。
當(dāng)然,Arm如果越強(qiáng),那么采用自有AI架構(gòu)的芯片設(shè)計(jì)業(yè)者壓力其實(shí)也會(huì)越大,就好比華為先后使用寒武紀(jì)與達(dá)芬奇架構(gòu),都是封閉的專有架構(gòu),高通也是采用DSP結(jié)合NPU計(jì)算,如果Arm官方架構(gòu)性能有飛躍性的改進(jìn),那么這些采用定制AI架構(gòu)的芯片設(shè)計(jì)者可能最終會(huì)被迫放棄自己的封閉架構(gòu),轉(zhuǎn)而擁抱Arm的開放架構(gòu)。而這也有助于發(fā)展整體AI生態(tài),畢竟使用相同開發(fā)環(huán)境的硬件基數(shù)越大,就能吸引更多應(yīng)用開發(fā)者共同耕耘相關(guān)生態(tài)。
值得注意的是,Arm決定在SVE中加入bfloat16的支持這點(diǎn)。由于SVE是專門針對(duì)高性能計(jì)算的矢量指令集,截至目前為止,僅有富士通一家采用,并應(yīng)用于其A64FX芯片上。Arm方面表示,由于HPC用戶對(duì)機(jī)器學(xué)習(xí)的興趣持續(xù)增加,過去只能依靠GPU方案來進(jìn)行加速,若能在單一架構(gòu)處理完機(jī)器學(xué)習(xí)的工作,那么就不用再額外花費(fèi)成本添購專用的加速硬件。
使用bfloat16還有另一個(gè)好處,那就是它具有與FP32相同的動(dòng)態(tài)范圍,這使得轉(zhuǎn)換現(xiàn)有使用FP32的現(xiàn)有計(jì)算代碼非常簡(jiǎn)單,可以大規(guī)模無痛轉(zhuǎn)換既有的FP32應(yīng)用到blfloat16數(shù)據(jù)格式下。
然而,SVE原本就可以針對(duì)從128位到2048位等不同的矢量長(zhǎng)度來實(shí)現(xiàn)計(jì)算工作,理論上,bfloat16應(yīng)該放在128位的Neon計(jì)算單元內(nèi)比較合理。但實(shí)際上,數(shù)據(jù)的吞吐量其實(shí)還是要取決于硬件的實(shí)現(xiàn)選擇,比如說SVE執(zhí)行單元的數(shù)量,以及Neon計(jì)算單元的數(shù)量。
而隨著Arm增加了bfloat16這個(gè)數(shù)據(jù)格式的支持,借以加速AI計(jì)算,這也讓GPU成為目前主流機(jī)器學(xué)習(xí)加速硬件中唯一不支持這種數(shù)據(jù)格式的架構(gòu),而英特爾即將推出的Xe GPU也會(huì)加入該格式的支持,包含AMD或NVIDIA,應(yīng)該都會(huì)在下一代產(chǎn)品中增加此數(shù)據(jù)格式的支持。
根據(jù)ARM做的模擬,不同類型的運(yùn)算中bfloat16帶來的性能提升不等,少的有1.6倍性能,多的可達(dá)4倍性能,性能成長(zhǎng)相當(dāng)驚人。
-
ARM
+關(guān)注
關(guān)注
134文章
9107瀏覽量
367982 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4774瀏覽量
100891 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8425瀏覽量
132766
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論