谷歌開源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框架下。
具體原理可以查看谷歌的發佈公告。