領域專用架構與加速器

加速器攤提(accelerator amortization)

對一家每天賣出數千條麵包的麵包店來說,買一座工業烤爐合情合理——分攤到那麼多條麵包上,烤爐每條的成本微乎其微。但買同一座烤爐只為一週烤一條,就荒謬了;成本永遠回不來。加速器攤提就是把這個推理套用到專用硬體上:打造(與使用)加速器那筆龐大、固定的成本,只有在它被分攤到夠多工作上時才划算。它是「加速器到底值不值得」的誠實檢驗。

具體來說,加速器帶有兩種必須攤提的成本。第一,前期設計成本:一顆 ASIC 可能要花數百萬美元與許多個月來設計、驗證、製造,外加對應的編譯器與軟體堆疊。那筆成本只有在晶片接著跑下龐大量的工作時才回得來——這需要一個既大(量多)又穩定(在晶片過時前不會改變)的工作負載。第二,每次使用的開銷:每次你卸載一個任務,都要付出把資料搬去加速器再搬回來、以及啟動它的代價。那只有在每個任務大到讓實際運算遠蓋過設置時才回得來。經典法則是:當工作負載夠大、夠穩定、夠平行,足以攤平這兩種成本時,加速器才值得。

為何這是本領域最重要的誠實檢驗:它正是大多數運算並不在自訂加速器上進行的原因。若工作負載很小、變化很快、或不平行,通用 CPU 才是對的工具——它的靈活性與零設計成本勝出。略過這項分析,你會得到一塊閒置的昂貴矽,或一次比直接用 CPU 還慢的卸載——因為資料搬移開銷淹沒了一個微小任務。整個專用化趨勢,仰賴的是那些恰好龐大、長久、平行的工作負載(如深度學習)——正是攤提算得過來的條件。當這些條件不成立時,「適才適所」指的就是那謙遜的通用處理器。

Google 打造 TPU,是因為每天數十億次推論請求是個龐大、穩定、平行的工作負載——設計成本攤分到天文數字般的使用次數上。一家工作負載每幾個月就變、又只偶爾跑的小新創,去流片一顆 ASIC 就太傻了;對他們而言,FPGA、GPU、或乾脆 CPU,攤提得好得多。

唯有當工作負載夠大、夠穩定、夠平行、足以償還其成本時,加速器才值得。

加速器不是免費升級。若工作負載小、變化快、或屬序列,攤提就不成立,通用 CPU 才真的是更好的選擇——光是每次使用的資料搬移開銷,就可能讓一個小型卸載比根本不卸載還慢。

又稱
amortizing accelerator costwhen an accelerator is worth it加速器成本攤平