--- tags: Session TWO --- # Distributed AI(葉鎮邦) 讓多個節點分工進行計算,可以大量且快速的處理資料。 基本上分為兩種方式,model Parallelism和data Parallelism ## model Parallelism - 將模型分成好幾份,每份皆由不同的節點負責。 - 由於更部分會互相依賴,運算效率不高,只有當模組過於龐大時使用。 ![](https://i.imgur.com/kZJBa6g.png) ## Data Parallelism - 將數據分組後,交由各個有相同模組的節點去做運算,最後在依資料權重去做整合 **高效率的網路是不可或缺的** ![](https://i.imgur.com/mgrRZuF.jpg) ### Synchronous(同步) - workers 以相同的網路參數開始訓練,訓練是一個迭代(iteration)的過程。 - 每個 worker 用自己的數據(mini batch)去計算參數的梯度(gradients) - 所有worker之間是同步的。 - 把所有worker計算過後的梯度做平均,並用以更新參數。 - 開始新的一輪。 ::: info worker:包含 CPU 和一個或多個 GPU 的單獨機器 [gradients](https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E6%95%B8%E5%AD%B8-%E4%BA%8C-%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95-gradient-descent-406e1fd001f):為一個與函數相切的向量,指向此函數最大增量的方向,用以找出最佳解。 ::: ### Asynchronous(異步) - 每個worker獨立獲取參數。 - 當計算好自己的梯度後便會更新參數,不像同步時會等待其他worker計算完成。 - 過程非常隨機 - 每個worker獲取的參數值不一定相同,有可能更新到舊的參數。 ## Overlapping communications and computation - 在運算同時也能夠做資料的交換 - TCP/IP無法做到 ## Typical application flow - 開始: - 讀入input file - 分解問題 - 工作過程: - 計算 - 交換數據 - 結束: - 寫output file ## The secret sauce of RDMA - 低延遲 - 高頻寬 - 可擴展的計算引擎 - Os bypass - 遠端直接記憶體存取 - offloads - 低記憶體占用 - performance portable APIs ## Peer to Peer communication[(對等式網路)](https://zh.wikipedia.org/wiki/%E5%B0%8D%E7%AD%89%E7%B6%B2%E8%B7%AF) - 資料傳遞不需要使用CPU,只需要使用PCI Express, - 用戶端可以自行尋找其他用戶端,直接在兩台電腦之間傳輸,加速資料傳輸的速度。 - 減低以往網路傳輸中的節點,以降低資料遺失的風險 :::info **PCI Express**:是電腦主機板上的一種匯流排規格。 **匯流排**:是用來連結主機版南橋、北橋與CPU等晶片,並提供資料傳輸的功能。一般常見的網路卡、IDE硬碟、SATA、顯示卡…等等周邊裝置,都是透過匯流排的連接與資料傳遞才有辦法正常運作。 :::