Upgrade to Pro — share decks privately, control downloads, hide ads and more …

達到硬體極限的演算法設計

Felix Chern
December 14, 2023
360

 達到硬體極限的演算法設計

科技界的快速演變令人瞠目結舌。過去十年,我們見證從手機應用、巨量資料 (Big Data),和Web 2.0 開發框架的變遷,如 Ruby on Rails 及其衍生產品。技術從 Hadoop 到 Spark 的轉變,雲端容器技術和 AI 處理框架 (如Tensorflow 和 PyTorch) 的興起,都顯示了這一變化。昔日的 OpenCV、libsvm, word2vec, LSTM 和 GAN 等技術,如今已由 LLM / StableDiffusion 等技術所替代。

本演講由 Google AI 團隊的底層技術開發者主講,探討如何在技術迅速迭代的時代中,建立並保持關鍵技能。我們將深入分析現代演算法,探討如何與最新硬體技術同步,並兼顧理論與應用,以最大化 AI 時代的硬體利益。除了介紹核心概念,講者還將透過實例展示新世代軟體開發的機遇與挑戰。

主講人簡介
Felix Chern 是 Google Research 的資深工程師,專注於開發 Google Tensor Processing Unit (TPU) 編譯器和設計創新演算法。擁有台大機械工程學士學位的他,自學電腦科學,專精於底層技術。在Google Research這個充滿頂尖電腦科學碩博士的環境中,Felix 憑藉對演算法和現代計算硬體架構的深入了解,成為該領域的佼佼者。他不僅在 Google 對人工智慧技術的尖端發展做出亮眼的研究貢獻,也熱衷於閒暇時間分享資訊技術的最新動態,並熱心協助志同道合的朋友深入電腦科學領域。

Felix Chern

December 14, 2023
Tweet

Transcript

  1. About me 2011 台 大 機械系畢業 2011-2012 中研院資訊所 + 開放原始碼社群

    2013-2014 SupplyFrame 大 數據 工 程師 2014-2016 OpenX廣告平台 大 數據 工 程師 2016-2017 Google Cloud 工 程師 2018-2023 Google Research 資深 工 程師 Publications 2019 ICLR, New Loss Functions for Fast Maximum Inner Product Search 2020 ICML Accelerating large-scale inference with anisotropic vector quantization 2022 NeurIPS, TPU-KNN: K Nearest Neighbor Search at Peak FLOP/s 2022 NeurIPS, On the Emergence of Sparse Activation in Trained Transformer Models 2023 ICLR, The Lazy Neuron Phenomenon: On Emergence of Activation Sparsity in Transformers
  2. 大 綱 • 歷久彌新的基礎 • 回顧硬體發展史 • 計算 力 的科學

    - 與硬體耦合的計算複雜度 • 範例:矩陣與數值演算法 • 範例:近似搜尋演算法 • 產業新機會 • 學習管道
  3. 什麼是基礎? • 基礎不等於簡單 • 演算法、資料結構、作業系統、編譯器等都能歸類為基礎 • 基礎不隨應 用 變化,是共通的成分 •

    未來流 行 的應 用 ,多半也是基礎的延伸 • 基礎相關 工 作 門 檻 高 ,但很搶 手 也難找 人 • 願意 面 對困難,就在「內捲戰爭」中贏 一 半!
  4. David Patterson - A New Golden Age for Computer Architecture:

    History, Challenges and Opportunities (youtube) 單核 心 衝 高 頻脈 衝 高 多核 心 多核 心 高 原期
  5. Intel Pentium 4 Intel Sapphire Rapids Nvidia H100 Launched Nov

    2000 Jan 2023 Sep 2022 Frequency 1.3 GHz to 3.8 GHz 1.9 GHz to 3.5 GHz 1.5 GHz to 1.9GHz Cores 1 56 80 SM 640 TC Memory Bandwidth 1.6 GB/s 223 GB/s (139x) 3 TB/s (1578x) Peak FLOPs (SP) 12 GFLOP/s 17.92 TFLOP/s (1493x) 494 TFLOP/s (41166x) 單核 心 程式 多核 心 平 行 化 高 浮點數運算 AI/數值演算法 二 十 年的硬體紅利
  6. 軟硬體耦合 木 桶理論 • 傳統時間複雜度 • 視計算與讀寫記憶體都為O(1) • 與現代硬體 大

    不相同 • Roo f line analysis • 列出演算法所需硬體資源,如 • 總浮點數計算量 • 總記憶體傳輸量 • 需求量/硬體能 力 => 程式運算速度 記憶體傳輸/記憶體頻寬 浮點數計算量/硬體浮點數能 力 單核 心 計算/頻脈 整數計算/ 整數計算硬體
  7. 簡化版 Roo f line Model I = arithmetic intensity =

    program f lops / program mem 範例: 矩陣向量乘法 矩陣矩陣乘法 P = min { γ β × I FLOP/s O(N2) f lops O(N2) mem = O(1) O(N3) f lops O(N2) mem = O(N) 𝛾 (GFLOP/s) β (GB/s) Pentium 4 12 1.6 Sapphire Rapid 17920 223 Nvidia H100 TF32 acc, FP16 mul dense only 494,700 3000 TPU V5 FP32 acc, BF16 mul 406,200 1525.8
  8. 0.1 1 10 100 1000 10000 100000 1 × 106

    0.1 1 10 100 1000 10000 β = 1.6 GB/s β = 223 GB/s β = 1144 GB/s β = 1555 GB/s π = 12 GFLOP/s π = 17.92 TFLOP/s π = 494 TFLOP/s π = 406 TFLOP/s Performance (flops) Operaiontl Intensity (flops/byte) Pentium 4 Sapphire Rapid Nvidia H100 TPU V5
  9. 容易加速的數值演算法 • LU: 求解多元 一 次 方 程式 • QR:

    最 小 平 方 法 • Cholesky: A為對稱正定,求解 常 見 於多元 二 次 方 程的微分 Ax = b, LUx = b, x = U−1L−1b arg min x ∥Ax − b∥2 = arg min x ∥QRx − b∥2 = arg min x ∥Rx − QTb∥2 Ax = b, LLTx = b, x = L−TL−1b
  10. 三種演算法都能以矩陣運作 1. 2. 3. 4. A11 = L11 U11 U12

    = L−1 11 A12 L21 = A21 U−1 11 A22 − L21 U12 = L22 U22 [ L11 0 L21 L22 ] [ U11 U12 0 U22 ] [ L11 U11 L11 U12 L21 U11 L21 U12 + L22 U22 ] = [ A11 A12 A21 A22 ] • 策略 一 : • 累積 足 夠多向量 (I=O(1)) • 再使 用 矩陣乘法 (I=O(block)) • 策略 二 : • 使 用 遞迴 • 最 大 化矩陣操作量
  11. Pivot LU (4096x4096) 2/3 N^3 Cholesky (8192x8192) 1/3 N^3 QR

    (8192x8192) 4/3 N^3 Matrix-Vector SGETF2: 116.340554s SPOTF2 30.142348s SGEQR2 41.821598s Blocked SGETRF: 0.104188s SPOTRF 0.300700s SGEQRF 4.520529s Recursive-Blocked SGETRF2: 0.103017s SPOTRF2 0.301998s SGEQRT 2.298510s OURS 1.074826s gap too large
  12. • Eigenvector, singular vector 的計算存在非矩陣類 O(N^2) 算法,即便有硬體加速,矩陣 類作法還是難以與之拼搏。 • 稀疏-稠密矩陣乘法

    I = O(1),必須重新排列才有加速的可能 • 對稱稀疏矩陣重新排列成帶寬矩陣就有利於硬體 • Matlab sparse reordering is quite heuristic (Cuthill McKee etc.) • 將稀疏矩陣視為graph,我們就能寫出以下優化 目 標 (non-convex) • min V ∑ (u,v)∈E : u∈V,v∈V ∥u − v∥ + λ ∑ (u,v)∉E : u∈V,v∈V 1 ∥u − v∥
  13. 近似搜尋演算法 • 深度學習能將 文 件及搜尋字串轉 換為向量 • 訓練時,最 小 化搜尋字串向量與

    目 標 文 件向量的距離 • 上線時,將搜尋字串轉為向量, 並找出其最接近的 文 件向量 • 可實現模糊搜尋,以及非傳統 文 字搜尋如影 音 、廣告等 AI 時代的搜尋引擎
  14. 近似搜尋演算法 • 傳統近似搜尋資料結構,其宗旨 為不要讓query搜全部的 文 件 • 每條query搜尋的 文 件量愈少,速

    度就愈快 • 不同query搜尋的 文 件重複量低, I = O(1) • 記憶體頻寬為瓶頸,壓縮 文 件向 量是研究主流 AI 時代的搜尋引擎
  15. 近似搜尋演算法 • 反向思考:設計 一 個最 大 化硬體 效率的近似搜尋演算法 • 初估計算複雜度:

    • M queries, N docs, D vec dim • f lops for distance • mem • for topk 2MND O(MN + MD + ND) O(MN log(K)) AI 時代的搜尋引擎
  16. 近似搜尋演算法 • 反向思考:設計 一 個最 大 化硬體 效率的近似搜尋演算法 • 初估計算複雜度:

    • M queries, N docs, D vec dim • f lops for distance • mem • for topk 2MND O(MN + MD + ND) O(MN log(K)) AI 時代的搜尋引擎 非矩陣計算單元算會成為瓶頸 佔 用 過多頻寬
  17. 近似搜尋演算法 • Top-1 遠比 Top-K 容易算 • 只需三步指令 (cmp, vselect

    x2) • 將輸入分割為等寬窗 口 ,每個窗 口 只計算 Top-1。 • 如果有多於 一 個 目 標 Top-K 落在 同 一 窗 口 內,就會產 生 誤差 • 丟球於窗 口 ,可 用生日 悖論來估 計誤差 AI 時代的搜尋引擎
  18. 產業新機會 除了跟風訓練LLM外,還有哪些計算可以吃硬體紅利? • GPT 模型本質單純,甚 至 可以 用 60 行

    numpy來寫成 (GPT in 60 Lines of NumPy) • GPT-2 論 文 主旨為只要模型及資料量夠 大 ,就無須下游訓練 • 近代所有LLM,其核 心 模型都雷同 • 模型好壞單看有沒有 大 量的硬體及資料讓你訓練 • LLM 及 GPT 門 檻在於錢及資料, 而 非演算法及計算理論
  19. 產業新機會 除了跟風訓練LLM外,還有哪些計算可以吃硬體紅利? • 凸優化 (Convex Optimization) • 可為優化 目 標設定硬條件,例如投資預算上限、物流上下限、電腦記憶體容量等

    • 機器 人 學與 自 動控制 • 物理模擬 • 材料 力 學、流體 力 學、 大 氣科學等需要遵循物理定律的計算 • 可考慮物理模擬與Reenforcement Learning共構 • 以上計算多為稀疏矩陣 (I=O(1)),重新排列使其縝密化就能吃硬體紅利會是突破重點
  20. 產業新機會 除了跟風訓練LLM外,還有哪些計算可以吃硬體紅利? • 台灣在哪些領域還有機會在產業當中領先? • AI還沒有進入 工 業系統 • 以AI來產出傳統

    工 業無法設計或製造的產品,會對市場產 生 不可逆的衝擊 • AI善於模仿其訓練資料,卻不擅於遵守在現實中需要遵守的物理定律 • 數值模擬正好相反,能遵守物理定律卻沒有記憶 • 如何兼顧兩者,是發展下 一 波產業實值得思考的課題 • 國外還沒深入看這 一 塊,所以我們還有機會
  21. 數值線性代數 • ALAFF (Advanced Linear Algebra: Foundations to Frontiers) •

    免費線上課程,可以學得相當深入 • Golub and Van Loan - Matrix Computation (4th edition) • 比ALAFF更完整的數值線性代數 • LAPACK 原始碼 • 涵蓋最新的數值演算法,遠勝其他競爭者(Eigen, Armadillo, etc.) • 最近網站架構翻新,更容易區分不同種類的演算法
  22. 低階 高 效能程式設計 (1) • 最好的學習管道是看別 人 的程式碼,以及 自 己

    做實驗 • CPU 程式 • 請使 用 C/C++,Fortran無法 用 來寫最 高 效能的程式 • OpenBLAS 老牌的BLAS (Basic Linear Algebra Subroutines) • BLIS (BLAS-like Library Instantiation Software) • 由ALAFF作者群撰寫及維護,效能應該比OpenBLAS好 • Intel OneAPI (MKL, TBB, DNN) 也開源了 • GPU 程式 • cuBLAS, cuDNN閉源,但是CUTLASS開源 • OpenAI triton也是開源,值得參考
  23. 低階 高 效能程式設計 (2) • 需要懂電腦架構 • 可以讀Modern Microprocessors, A

    90-Minute Guide! • 知道Pipeline, super-scalar, VLIW等指令架構的差異 • 知道現代CPU有port,同個時脈內所有port可以同步執 行 指令 • SIMD指令如何換算成FLOPs (throughput x freq x cores) • 以Intel skylake為例:_mm_fmadd_ps Throughput (CPI) = 0.5 • 1/0.5 x 2 FLOPs per FMA x 2.4 Ghz x 12 cores = 115 GFLOP/s • 基本上,看到指令集就能 大 致換算出 一 個系統的頂峰效能 • 多核 心 快取結構 (Cache coherency protocol) • 有MESI, MOESI等等 • atomic read-only可以很快, 一 旦有write就會變得非常慢 (read-write mix, write-only)
  24. ML理論及凸優化 • Stephen P. Boyd, Convex Optimization • 數學部分很硬,從書本靠後的演算法開始讀相對容易 •

    Ahmad Bazzi, Convex Optimization (youtube series) • convex optimization數學部分我覺得他講得最容易學 • Justin Johnson, Deep Learning for Computer Vision (youtube series) • Michigan Online 2020 的課程,有講義 • 可以弄清楚CNN, RNN, Attention, Transformer等等的由來 • GPT in 60 Lines of NumPy 對GPT/LLM有興趣可讀這篇
  25. 結語 • AI 的成功與 高 效能硬體紅利息息相關 • 硬體紅利如何運 用 ,可以

    用 簡單的算式 (roo f line model) 來分析 • AI 之外,還有不少種類的計算可以運 用 硬體紅利 • 運 用 硬體能 力 需要跨領域的 人 才 • 低階 高 效能程式設計 • 數值線性代數 • ML及優化理論 • 物理模型與數值分析 • 多數 人 排斥跨領域學習,才有了這個機會之窗
  26. G.H. Hardy. In a good proof … there is a

    very high degree of unexpectedness, combined with inevitability and economy.