只用了 224 秒!索尼在 ImageNet 上訓練出了 ResNet-50
近日,索尼公司的研究人員宣佈,他們在 ImageNet 上只花了 224 秒就訓練出了一個 ResNet 50 架構。
得到的網路在 ImageNet 的驗證集上具有 75% 的 top-1 準確率。他們通過使用 NVIDIA 的 2.100 Tesla V100 Tensor Core GPU 實現了這一記錄。除了這個記錄,他們還使用 1.088 Tesla V100 Tensor Core GPU 獲得了 90% 的 GPU 伸縮效率。
將神經網路訓練成多臺機器有兩個主要的挑戰:要訓練的批大小和梯度的同步。
為了減少訓練神經網路的時間,可以使用一個小規模批處理來快速地將網路權重“推到正確的方向”。為了更新權重,錯誤會給出一個梯度,指示需要更新權重的“方向”。當使用小規模批處理時,您可以非常快速頻繁地確定這個方向。
然而,小規模微批處理使得神經網路傾向於找到區域性效能的最小值。索尼使用批處理大小控制解決了這個問題,這是一種最近被越來越多地使用的技術。通過對批處理尺寸的控制,逐漸增大小規模批處理的尺寸,避免區域性最小的損失情況。通過觀察更多的影象,神經網路對需要改進的平均誤差方向有了更好的認識,而不是僅僅根據幾個小樣本確定誤差方向。索尼將前 5 個輪次視為熱身輪次,批大小較低,而之後的輪使用了較大規模的批處理。索尼還使用了混合精度訓練,在 FP16 中進行向前 / 向後計算。
第二個問題是,在機器之間梯度的同步可能很慢。對於不同 GPU 之間的通訊,需要大量的頻寬。索尼的研究人員採用了 2D-Torus all reduce 演算法來減少通訊開銷。在這種通訊演算法中,GPU 被放置在一個虛擬網格中。首先,梯度水平傳遞,然後垂直地傳遞到所有列,然後在最後一次傳遞中再次水平傳遞。這意味著,如果 X 是水平方向上的 GPU 數量,則需要 2(X-1) GPU 到 GPU 的操作。
索尼的研究人員使用工具神經網路庫 (NLL) 及其 CUDA 擴充套件作為 DNN 培訓框架。對於 GPU 之間的通訊,他們使用了 NVIDIA Collective Communications Library (NCCL) version 2。
去年,多個團隊試圖在儘可能短的時間內訓練 ResNet 50 架構。在 2017 年 9 月,ofollow,noindex">InfoQ 報道 IBM 在 50 分鐘內培訓了相同的神經網路架構 。當時,IBM 實現了更高的可伸縮性效率,但只使用了 256 個 GPU。在問答中,Hillery Hunter 說批處理的大小是最具挑戰性的事情之一,但是他們希望他們的方法可以擴充套件到更多的 GPU。在本文中,他們研究了多個 GPU 的 GPU 伸縮效率,在使用 3264 GPU 進行訓練時,效率為 52.47%。
索尼公司的研究人員將他們的研究結果發表在《ImageNet/ResNet-50 Training in 224 Seconds》上,您可以在 arXiv 上找到這篇論文 。