一、強化相關函式庫
- NVDA
- CUDA compute unified device architecture
- 處理矩陣運算
- MKL math kernel library
- cuDNN cuda deep neural network library 加速用
- Apex a pytorch extension
- DALI data loading library
- CPU預處理跑不動時
- 把一部分操作移到GPU去
- 挪动的比例得当的话,刚好可以实现CPU和GPU的延时同步
- AMD
- OpenCL open compute language
- 為異構平台編寫程式的框架,此異構平台可由CPU、GPU、DSP、FPGA或其他類型的處理器與硬體加速器所組成。
- 由一門用於編寫kernels(在OpenCL裝置上執行的函式)的語言(基於C99)和一組用於定義並控制平台的API組成
- OpenCL提供了基於任務分割和資料分割的平行計算機制。
二、常見強化場景
效能瓶頸通常發生處
- 數據導入操作太複雜
- 模型太複雜,數據流傳遞費時
- loss函數計算複雜
- 推論速度
數據導入環節
- 大量磁碟I/O拖慢速度
三、分布式訓練
- Distributed computing is a kind of Parallel Computing
- Scenario
- 單機多卡
- 多機單卡
- 多機多卡
- Model Parallel
- Data Parallel
- Speedup ratio = time using 1 node / time using m node
- 應該要是線性的 ⇒ m 倍
- 但因為通信成本的關係通常都不會