機器學習系統與基礎設施

算術強度(arithmetic intensity)

算術強度衡量的是:你每從記憶體搬動一個位元組,能做多少有用的算術。它就是運算與頻寬這兩種稀缺資源之間的匯率。一個只為了給每個元素加一個數字而載入大張量的核心,強度極低;而一個載入兩塊分塊、在它們之間做完整矩陣乘法的核心,會把那份資料重用許多次,強度就高。

正式定義是 FLOPs 除以記憶體流量的位元組數,通常以最慢的記憶體層級(HBM)來計。它是屋頂線的橫軸,也是劃分區間的那條線:低於脊點強度的核心是記憶體受限,高於它則是運算受限。關鍵在於,強度並非僅由數學本身決定——它取決於資料搬移,所以分塊、融合、把運算元留在暫存器或共享記憶體都能提高它,而重算或溢出則會降低它。對稠密矩陣乘法而言,強度隨分塊變大而增加,這就是為何大型 GEMM 是運算受限、極小的 GEMM 卻不是。

知道一個工作負載的強度,就知道是更快的數學還是更快的記憶體幫得上忙,也就知道該去搬張量核心,還是該去做融合與量化。大型語言模型的解碼以「載入權重去乘一個單一 token 向量」為主,強度極低,牢牢落在記憶體受限這側;訓練那些大批次矩陣乘法則坐在脊點的運算這側。

I = \dfrac{\text{FLOPs}}{\text{bytes moved}}

強度是每位元組記憶體流量所做的 FLOPs;提高它(靠重用與融合)會讓核心在屋頂線上向右滑,從記憶體受限走向運算受限。

又稱
operational intensity算術強度運算強度