筆記
GPUs in depth
Compute Scaling
語言模型的效能提升(predictable perf)很大程度上直接受益於運算能力的增加。更快的硬體、更好的利用率與平行運算技術是推動模型進步的主力。

早期 CPU 單一 thread 效能的提升(被稱為 Dennard scaling,透過縮小電晶體來提升時脈速度)在 1980 到 2000 年代已達到物理極限。
為了滿足大型語言模型對算力的無底洞需求,現代運算完全仰賴 GPU 的平行運算能力,這種能力在過去 10 年內成長了超過 1000 倍。可以說「沒有 GPU 的平行擴展,就沒有現在的 LLM」
CPU 與 GPU 的核心設計差異
- CPU (優化低延遲,Low Latency):
- 專為少數且快速的 thread 設計。
- 內部花費大量空間用於控制單元(control)與快取(cache),非常擅長處理複雜的分支預測與條件邏輯。
- 目標是讓單一任務盡快完成(低延遲)。
- GPU (優化高吞吐量,High Throughput):
- 專為數量極其龐大的執行緒設計。
- 移除了大部分的控制與快取邏輯,將晶片面積塞滿了微小的運算單元 (ALUs)。
- 目標是最大化整體的資料處理量。GPU 不在乎單一 thread 是否需要等待資料,它透過讓大量 threads 交替工作(某些睡眠等待資料、某些醒著運算),來達成極高的整體吞吐量

解剖GPU
Execution units
- SM (Streaming Multiprocessors, 串流多處理器): GPU 內部包含非常多個 SM(例如 A100 有 108 個 SM)。我們可以把它們想像成獨立的「工作站」,負責接收並執行「區塊(blocks)」的任務。
- SP (Streaming Processors, 串流處理器 / CUDA Cores): 每個 SM 內部又包含許多更小的 SP。這些 SP 負責在同一時間內,平行執行大量的 threads。

Memory
在 GPU 中,物理距離直接決定了記憶體的存取速度。資料離 SM 越近,存取就越快。
- L1 Cache 與 Shared Memory: 位於 SM 的內部,速度極快。存取大約只需要 19~33 個時鐘週期。