32 位與 16 位格式的混合精度訓(xùn)練,正是當(dāng)前深度學(xué)習(xí)的主流。
最新的英偉達(dá)核彈 GPU H100,剛剛添加上對 8 位浮點(diǎn)數(shù)格式 FP8 的支持。
英偉達(dá)首席科學(xué)家 Bill Dally 現(xiàn)在又表示,他們還有一個(gè)“秘密武器”:
在 IEEE 計(jì)算機(jī)運(yùn)算研討會(huì)上,他介紹了一種實(shí)驗(yàn)性 5nm 芯片,可以混合使用 8 位與 4 位格式,并且在 4 位上得到近似 8 位的精度。
目前這種芯片還在開發(fā)中,主要用于深度學(xué)習(xí)推理所用的 INT4 和 INT8 格式,對于如何應(yīng)用在訓(xùn)練中也在研究了。
相關(guān)論文已發(fā)表在 2022 IEEE Symposium on VLSI Technology 上。
新的量化技術(shù)
降低數(shù)字格式而不造成重大精度損失,要?dú)w功于按矢量縮放量化(per-vector scaled quantization,VSQ)的技術(shù)。
具體來說,一個(gè) INT4 數(shù)字只能精確表示從-8 到 7 的 16 個(gè)整數(shù)。
其他數(shù)字都會(huì)四舍五入到這 16 個(gè)值上,中間產(chǎn)生的精度損失被稱為量化噪聲。
傳統(tǒng)的量化方法給每個(gè)矩陣添加一個(gè)縮放因子來減少噪聲,VSQ 則在這基礎(chǔ)之上給每個(gè)向量都添加縮放因子,進(jìn)一步減少噪聲。
關(guān)鍵之處在于,縮放因子的值要匹配在神經(jīng)網(wǎng)絡(luò)中實(shí)際需要表示的數(shù)字范圍。
英偉達(dá)研究人員發(fā)現(xiàn),每 64 個(gè)數(shù)字為一組賦予獨(dú)立調(diào)整過的縮放因子可以最小化量化誤差。
計(jì)算縮放因子的開銷可以忽略不計(jì),從 INT8 降為 INT4 則讓能量效率增加了一倍。
Bill Dally 認(rèn)為,結(jié)合上 INT4 計(jì)算、VSQ 技術(shù)和其他優(yōu)化方法后,新型芯片可以達(dá)到 Hopper 架構(gòu)每瓦運(yùn)算速度的 10 倍。
還有哪些降低計(jì)算量的努力
除了英偉達(dá)之外,業(yè)界還有更多降低計(jì)算量的工作也在這次 IEEE 研討會(huì)上亮相。
馬德里康普頓斯大學(xué)的一組研究人員設(shè)計(jì)出基于 Posits 格式的處理器核心,與 Float 浮點(diǎn)數(shù)相比準(zhǔn)確性提高了多達(dá) 4 個(gè)數(shù)量級。
Posits 與 Float 相比,增加了一個(gè)可變長度的 Regime 區(qū)域,用來表示指數(shù)的指數(shù)。
對于 0 附近的較小數(shù)字只需要占用兩個(gè)位,而這類數(shù)字正是在神經(jīng)網(wǎng)絡(luò)中大量使用的。
適用 Posits 格式的新硬件基于 FPGA 開發(fā),研究人員發(fā)現(xiàn)可以用芯片的面積和功耗來提高精度,而不用增加計(jì)算時(shí)間。
ETH Zurich 一個(gè)團(tuán)隊(duì)的研究基于 RISC-V,他們把兩次混合精度的積和熔加計(jì)算(fused multiply-add,F(xiàn)MA)放在一起平行計(jì)算。
這樣可以防止兩次計(jì)算之間的精度損失,還可以提高內(nèi)存利用率。
FMA 指的是 d = a * b + c 這樣的操作,一般情況下輸入中的 a 和 b 會(huì)使用較低精度,而 c 和輸出的 d 使用較高精度。
研究人員模擬了新方法可以使計(jì)算時(shí)間減少幾乎一半,同時(shí)輸出精度有所提高,特別是對于大矢量的計(jì)算。
相應(yīng)的硬件實(shí)現(xiàn)正在開發(fā)中。
巴塞羅那超算中心和英特爾團(tuán)隊(duì)的研究也和 FMA 相關(guān),致力于神經(jīng)網(wǎng)絡(luò)訓(xùn)練可以完全使用 BF16 格式完成。
BF16 格式已在 DALL?E 2 等大型網(wǎng)絡(luò)訓(xùn)練中得到應(yīng)用,不過還需要與更高精度的 FP32 結(jié)合,并且在兩者之間來回轉(zhuǎn)換。
這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)訓(xùn)練中只有一部分計(jì)算不會(huì)因 BF16 而降低精度。
最新解決辦法開發(fā)了一個(gè)擴(kuò)展的格式 BF16-N,將幾個(gè) BF16 數(shù)字組合起來表示一個(gè)數(shù),可以在不顯著犧牲精度的情況下更有效進(jìn)行 FMA 計(jì)算
關(guān)鍵之處在于,F(xiàn)MA 計(jì)算單元的面積只受尾數(shù)位影響。
比如 FP32 有 23 個(gè)尾數(shù)位,需要 576 個(gè)單位的面積,而 BF16-2 只需要 192 個(gè),減少了 2/3。
另外這項(xiàng)工作的論文題目也很有意思,BF16 is All You Need。
參考鏈接:
[1]https://spectrum.ieee.org/number-representation
[2]https://ieeexplore.ieee.org/document/9830277
[3]https://ieeexplore.ieee.org/document/9823406
本文來自微信公眾號(hào):量子位 (ID:QbitAI),作者:夢晨
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。