谷歌開源 GPipe,訓練更大模型、不調整超參擴充套件效能
谷歌開源了一個分散式機器學習庫 GPipe,這是一個用於高效訓練大規模神經網路模型的庫。
GPipe 使用同步隨機梯度下降和管道並行進行訓練,適用於由多個連續層組成的任何 DNN。重要的是,GPipe 允許研究人員輕鬆部署更多加速器來訓練更大的模型,並在不調整超引數的情況下擴充套件效能。
開發團隊在 Google Cloud TPUv2s 上訓練了 AmoebaNet-B,其具有 5.57 億個模型引數和 480 x 480 的輸入影象尺寸。該模型在多個流行資料集上表現良好,包括將 single-crop ImageNet 精度推至 84.3%,將 CIFAR-10 精度推至 99%,將 CIFAR-100 精度推至 91.3%。
GPipe 可以最大化模型引數的記憶體分配。團隊在 Google Cloud TPUv2上進行了實驗,每個 TPUv2 都有 8 個加速器核心和 64 GB 記憶體(每個加速器 8 GB)。如果沒有 GPipe,由於記憶體限制,單個加速器可以訓練 8200 萬個模型引數。由於在反向傳播和批量分割中重新計算,GPipe 將中間啟用記憶體從 6.26 GB 減少到 3.46GB,在單個加速器上實現了 3.18 億個引數。此外,通過管道並行,最大模型大小與預期分割槽數成正比。通過 GPipe,AmoebaNet 能夠在 TPUv2 的 8 個加速器上加入 18 億個引數,比沒有 GPipe 的情況下多 25 倍。
核心 GPipe 庫目前開源在 Lingvo 框架下 。
具體原理可以檢視谷歌的 釋出公告 。