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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Felix Chern Felix Chern
December 14, 2023
450

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

科技界的快速演變令人瞠目結舌。過去十年,我們見證從手機應用、巨量資料 (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 對人工智慧技術的尖端發展做出亮眼的研究貢獻,也熱衷於閒暇時間分享資訊技術的最新動態,並熱心協助志同道合的朋友深入電腦科學領域。

Avatar for Felix Chern

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.