教材:10710周志遠教授平行程式 https://www.youtube.com/playlist?list=PLS0SUwlYe8cxqw70UHOE5n4Lm-mXFXbZT 20250918 筆記 內容可能有錯僅供參考 在這個章節開始投影片和10710周志遠教授平行程式有差異,接下來以 NTHU-PP-2021 (Chinese) 為主 [NTHU-PP-Chap12-Distributed Training-Part1](https://www.youtube.com/watch?v=yOZYl_hVnvM&list=PLQTDfc8kgjhMKtgumyK0gmEelnTtqJGsp&index=28) 進入到分散式深度學習部分,這部分是新的並沒有包含在 2018 年的影片 今日大綱 1.深度學習基礎概念 2.深度學習的特性與挑戰 3.深度學習的硬體加速 4.通訊瓶頸與解決方案 5.深度學習的軟體堆疊 6.深度學習系統與伺服器 #### **深度學習的分散式與平行計算 (Distributing and Computing for Deep Learning)** 本章節是課程的最後一個部分,將探討分散式平行計算如何影響和應用於深度學習(Deep Learning)這一熱門領域。課程會從計算效能的角度來看深度學習,特別著重於**分散式深度學習 (Distributed Deep Learning)**,尤其是模型訓練(training)部分的概念、實現方式及相關函式庫(library)。我們將介紹如 TensorFlow 等框架如何利用這些工具,其中 **Horovod** 是 Uber 開發的知名平行模型訓練函式庫。本章也會涵蓋 ML system、AutoML、AI 晶片,以及不同計算環境下的效能與系統相關知識,並介紹 **聯邦式學習 (Federated Learning)** 與傳統分散式學習的差異。 **一、 深度學習基礎概念** * **人工智慧 (AI)**:目標是讓電腦系統或機器實現像人一樣的行為。圖靈測試 (Turing Test) 是一個判斷機器是否具有人工智慧的著名標準。 * **機器學習 (Machine Learning)**:AI 的一種實現方法,讓機器或電腦能夠自我學習,並從資料中做出決策或預測。在資料充足且計算能力夠強的情況下,機器學習能夠訓練出強大的模型或演算法。 * **深度學習 (Deep Learning)**:機器學習的一個分支,**透過人工類神經網路 (Artificial Neural Network, ANN)** 作為模型進行學習的方法。之所以稱為「深度」,是因為這些神經網路通常堆疊了許多層(數十甚至上百層)。 * **深度學習的強大之處**: * **通用函數逼近器 (Universal Function Approximator)**:從理論角度看,神經網路建立的模型可以描述世界上任何函數。這表示模型本身不會限制其學習能力。 * **複雜模型與參數**:神經網路可以有非常多層,使其模型變得非常複雜,擁有大量參數,從而能夠學習更複雜的問題。 * **自動特徵擷取 (Automatic Feature Extraction)**:相較於傳統機器學習需要手動設定特徵,深度學習(特別是前幾層)能自動從資料中學習並提取特徵,例如人臉辨識中的線條、眼睛部位等。 * **深度學習模型訓練**: * **訓練目的**:調整神經網路中的係數或參數 (parameter),使其能夠適配所有輸入資料。 * **監督式學習 (Supervised Learning)**:常見的訓練方式,每個輸入資料都有對應的標籤 (label),模型輸出與標籤比較,計算誤差 (error)。 * **梯度下降 (Gradient Descent)**:主要用於修正參數的方法,目標是找到使誤差(loss)最小的參數設定。透過計算梯度 (gradient),模型可以朝著誤差降低的方向調整參數。 * **計算流程**: 1. **前向傳播 (Forward Propagation)**:資料輸入,經過各層函數計算,產生輸出和誤差。 2. **反向傳播 (Backpropagation)**:根據誤差計算梯度,回頭修正模型參數。 * **計算特性**:深度學習的計算過程(前向傳播、梯度計算、反向傳播)**非常規律**,使其非常適合**平行計算**。 **二、 深度學習的特性與挑戰** * **廣泛適用性**:能應用於各式各樣的資料和問題,因為任何問題都可以數位化、資料化,任何決策都可以量化為模型輸出。 * **易於應用與彈性**:相較於傳統機器學習,深度學習在應用或微調時,不一定需要深入的數學或統計學知識,常透過增加層數、調整參數或資料前處理來改善結果。模型具有模組化特性,可以像積木一樣組合,容易建構出表現良好的模型。 * **資料驅動 (Data-driven)**:資料量越多,越有機會得到更好的結果,即使模型沒有大的改變,它也能從資料中自我學習。這也是深度學習超越傳統機器學習的關鍵原因之一。 * **計算需求快速增長**: * **模型複雜度增加**:模型越來越複雜,層數和參數越來越多。 * **資料集規模擴大**:通常資料集越大,結果越好。 * **訓練時間延長**:需要更長時間的迭代訓練才能收斂或獲得更好的結果。 * **超參數調優空間巨大 (Hyperparameter Tuning)**:除了模型參數外,還有學習率、Dropout 率等超參數,其組合空間龐大,找到最佳參數需要花費大量時間。 * **OpenAI 的研究顯示,AI 模型的計算需求呈指數級增長,甚至超過摩爾定律 (Moore's Law) 的速度**。早期成功的模型如 AlexNet,其突破性表現很大程度上歸因於計算能力的提升。 **三、 深度學習的硬體加速** * **GPU (Graphics Processing Unit)**: * GPU 是推動深度學習發展的關鍵力量,其計算能力遠超 CPU。 * 採用 **SIMD (Single Instruction, Multiple Data) 架構** 和 **大量平行處理 (Massive Parallel Processing)**,能有效處理規律且大量的計算任務。 * **AI 晶片與 Tensor Core**: * 深度學習中的神經網路計算常涉及 **捲積 (Convolution)** 運算,本質上是**矩陣乘加 (Matrix Multiply-Add, MMA)** 運算(A\*B+C)。 * **Tensor Core** (張量核心) 是專門針對此類二維矩陣計算設計的加速器,能將整個運算硬體化 (hardware),大幅提升效能。例如,NVIDIA V100 GPU 內含 640 個 Tensor Core,其計算能力(120 TFLOPS)遠高於傳統 GPU 核心。 * 這反映了當前趨勢:**應用特定 (Application-Specific) 或專用 (Purpose-Built) 硬體**的效能遠超通用型解決方案。 **四、 通訊瓶頸與解決方案** * **通訊挑戰**:真正的難點通常不在計算,而在於**溝通 (Communication)**,包括記憶體和多個 GPU 之間資料的傳輸。在多 GPU 系統中,GPU 間的通訊通道頻寬不足是主要瓶頸,例如透過 PCI-e 傳輸的頻寬遠低於 GPU 內部或計算能力。 * **NVIDIA NVLink**: * NVIDIA 開發的硬體解決方案,是一種專為 GPU 之間(也可 CPU-GPU 間,但需 CPU 廠商支援)設計的高速匯流排 (bus)。 * 提供極高的頻寬(早期 300GB/s,現已達 600-900GB/s),遠超 PCI-e。 * **實施方式**: 1. GPU 直接整合 NVLink 介面,通常為 SXM (Server Module) 模組形式。 2. 一般 GPU 卡透過額外附加的 NVLink 匯流排連接到主機板。 * **拓撲 (Topology)**:GPU 之間的連接方式(拓撲)非常重要,它會影響通訊效能。較新的 GPU 伺服器會採用全連接 (fully-connected) 的 NVLink 拓撲,提供更均勻的通訊效能。 * **CPU Socket 影響**:跨 CPU Socket 的 GPU 通訊可能需要透過 CPU,導致效能下降,因此研究者常優化網路拓撲以避免此情況。 **五、 深度學習的軟體堆疊** * **CUDA**:NVIDIA GPU 的基本程式設計模型。 * **NVIDIA 加速函式庫**: * **cuBLAS (CUDA Basic Linear Algebra Subprograms)**:負責基本的線性代數計算。 * **cuDNN (CUDA Deep Neural Network library)**:專門針對深度學習神經網路計算(如卷積、活化函數等)優化的函式庫,與硬體緊密整合,效能極佳。 * **NCCL (NVIDIA Collective Communications Library)**:NVIDIA 的集體通訊 (Collective Communication) 函式庫,提供高度優化的集體通訊操作(如 all-reduce),尤其針對 GPU 和 NVLink 環境設計。它在 GPU 上實現了類似 MPI 的通訊操作,對分散式訓練至關重要。NCCL 2.0 之後甚至可以支援跨節點的多 GPU 通訊。 * **深度學習框架 (Deep Learning Frameworks)**:如 PyTorch 和 TensorFlow 等,在底層都會呼叫這些 NVIDIA 函式庫來實現高效能計算。 * **軟硬體整合**:NVIDIA 透過封閉的軟體環境和底層程式碼,實現軟硬體的高度整合,以提供最大的加速和效率。 **六、 深度學習系統與伺服器** * **整合式解決方案**:高性能的深度學習機器或伺服器,通常整合了多個 GPU、NVLink、高速 SSD 儲存、高速網路 (如 InfiniBand) 等技術。 * **NVIDIA DGX 系列**:NVIDIA 推出的整合式深度學習伺服器 (如 DGX-1, DGX-2),其造價昂貴(數百萬台幣),塞滿了高性能硬體,類似於超級電腦等級的配備。 * **資源共享與利用**:由於這些資源昂貴,如何有效共享和分配 GPU 伺服器或叢集給不同使用者,是一個重要的系統計算議題。 * **台灣 AI 超級電腦 (Taiwania 2)**:台灣建置的 AI 超級電腦,整合了前述的 DGX 伺服器,將其連接成超級電腦。雖然與傳統超級電腦的基準測試和應用不同,但其設計針對 AI 訓練優化。 --- 其他課程連結 [平行程式1C~2B Introduction parallel programming](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/Syxh3H7Kxe) [平行程式3A~3D The Latest Developments and Applications Using Parallel Programming](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJh7QFVKle) [平行程式4A~4B IO Parallel IO and Program Analysis](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJLMsuHFgg) [平行程式5A~5B The Latest Developments and Applications Using Parallel Programming](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/SJh57hIFle) [平行程式6A~6B Communication Routines and Parallel Function Code](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/r1X9kX_Fle) [平行程式 6C~6D Communication Routines and Parallel Function Code](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/S1DPjoYFlx) [平行程式 7A~8A Pthread:Synchronization Problem & Tools](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJu-_0tKge) [平行程式 8B~8D Synchronization Tools & Open Multi-Processing(OpenMP)](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/H1ki4E2Fee) [平行程式 9A~9B Synchronization Construct](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BJTYMrpKlx) [平行程式 10A~10B Synchronization Tools & Open Multi-Processing Synchronization Construct](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/B1cY6M1qee) [平行程式 10C~10D Synchronization Tools & Open Multi-Processing Synchronization Construct](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BkgFaNg5gg) [平行程式 11A~11B Parallel Work Pool and Termination / Parallel Sorting](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/H1hfOw-5xl) [平行程式 12A~12B Parallel Sorting and Pipelined Computations](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/Symo-zQ9eg) [平行程式 12C~12D Parallel Sorting and Pipelined Computations](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BJYNKDVceg) [平行程式 13A-13B Sychronous Parallelism](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HJ2UJ2Bqex) [平行程式 14A~14B Heterogeneous Computing](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BksS4yP5eg) [平行程式 14C~14D Heterogeneous Computing](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/BJrfTUd9xx) [平行程式 15A~15B Parallel Programming Model on GPU](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/ByWnl-t5gg) [平行程式 16A~16B What is Compute Unified Device Architecture(CUDA)?](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/HyYpsjcqgl) [平行程式 17A~18A 平行運算的CUDA](https://hackmd.io/@6FOC2dvARe-Vz0kVSyajew/H1dUeBT5lg) [平行程式 18B~19A 記憶體層級 / CUDA的優化](https://hackmd.io/@JuitingChen/HyF44e1jge) [平行程式 19B~19D 記憶體層級 / CUDA的優化 ](https://hackmd.io/@JuitingChen/ryPEu4lieg) [平行程式 20A~20B CUDA優化全域和區域記憶體/共享記憶體](https://hackmd.io/@JuitingChen/r1X659Zoxl) [平行程式 21A~21B Parallel Reduction / Distributed Computing Framework](https://hackmd.io/@JuitingChen/HyiOpozjxl) [平行程式 NTHU-PP-Chap10-Big Data-Part1 ](https://hackmd.io/@JuitingChen/Hyc-e3Golx) [平行程式 NTHU-PP-Chap10-Big Data-Part2 ](https://hackmd.io/@JuitingChen/ryC_QTXoxl) [平行程式 NTHU-PP-Chap11-MapReduce](https://hackmd.io/@JuitingChen/HJgBXJOsge) [平行程式 NTHU-PP-Chap12-Distributed Training-Part1](https://hackmd.io/@JuitingChen/ryh5hBtsge) [平行程式 NTHU-PP-Chap12-Distributed Training-Part2](https://hackmd.io/@JuitingChen/rJ2G7kdjxg) [平行程式 NTHU-PP-Chap12-Distributed Training-Part3](https://hackmd.io/@JuitingChen/HkA471dilx) [平行程式 NTHU-PP-Chap13-UCX-Part1](https://hackmd.io/@JuitingChen/rJbq103ieg) [平行程式 NTHU-PP-Chap13-UCX-Part2](https://hackmd.io/@JuitingChen/SJpNmk_ixl) [平行程式 NTHU-PP-Chap13-UCX-Part3](https://hackmd.io/@JuitingChen/HkIUYa13xe)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up