領域專用架構與加速器

深度學習加速器(deep-learning accelerator)

一個現代神經網路,骨子裡是同一個簡單運算被重複數十億次堆成的塔:把一大格數字(輸入)乘上另一大格(學到的權重),加起來,把結果壓一壓,再往下傳。在通用 CPU 上做這件事,就像拿一支精緻鋼筆手寫填完一份上千頁的表格——做得到,但慢得離譜又浪費。深度學習加速器(也叫神經網路處理器或 NPU)就是專為做那一個重複運算——矩陣乘法——而打造的硬體,速度與效率都驚人。

具體來說,深度學習加速器遵循領域專用架構的劇本。既然工作由矩陣乘法主導,它就在晶片上塞滿許多乘加單元——常排成脈動陣列。既然神經網路容忍低精度,它就用 bfloat16 或 int8 等降低精度的格式運算,這讓它能在同樣的矽上塞進多得多的算術單元,每個運算耗能也更少。既然存取模式可預測,它就使用大型、由軟體管理的暫存記憶體,而不靠自動快取,好讓編譯器精確安排哪筆資料放在哪裡。Google 的 TPU 是著名例子,但 NPU 如今出現在許多廠商的手機、筆電與資料中心裡。

誠實的核心洞見是:算術是容易的部分。晶片乘得比記憶體供數字還快,所以深度學習加速器真正的瓶頸幾乎總是資料移動——要夠快地把權重與激活值從記憶體送進算術單元,好讓它們保持忙碌。這就是為什麼這些晶片對記憶體頻寬、片上暫存記憶體、高頻寬記憶體如此執著。而加速訓練或推論,仍只有在模型夠大、工作負載穩定時才划算;對於一個微小、一次性的計算,使用加速器的開銷可能蓋過收益。

跑一個大型語言模型的注意力層,意味著一遍又一遍地相乘巨大矩陣。CPU 可能一次發射一個或幾個這樣的乘法;深度學習加速器則每個週期透過它的陣列跑數千次 int8 或 bfloat16 乘加——但只有在記憶體持續供應權重時才維持峰值,這正是這類晶片要搭配高頻寬記憶體的原因。

神經網路處理器:大量低精度乘加,從暫存記憶體餵入——實務上受限於記憶體,而非數學。

招牌上的「TOPS」(每秒兆次運算)數字是一個峰值,假設算術單元永不挨餓。實際效能通常受限於記憶體頻寬,以及模型有多少真的合得上加速器偏好的形狀。

又称
neural-network processorNPUAI accelerator神經網路處理器神經處理單元