谷歌新研究對神經網路資料並行性提出質疑

2021-09-16 19:14:04 字數 2443 閱讀 7079

在訓練神經網路時,平行計算和模型並行是很常用的方法,以最大限度地利用有限的算力。然而,谷歌的一項新研究表明,資料並行並不一定總能加快模型訓練速度。這是為什麼呢?

過去十年多中,神經網路已經在各種**任務中實現了最先進的結果,包括影象分類、機器翻譯和語音識別等。這些成果的取得至少部分應該歸功於軟硬體的改進加速了神經網路訓練。更快的訓練速度直接使得模型質量顯著提高,可以處理更多的訓練資料,也讓研究人員可以更快地嘗試新的想法和配置。今天,像雲tpu pod這樣的硬體開發商都在迅速提高神經網路訓練的計算力,這既提高了利用額外計算的可能性,使神經網路訓練速度更快,還促進模型質量得到更大改進。但是,我們究竟應該如何利用這空前強大的計算力,更大的算力是否一定意味著訓練速度更快呢?

利用巨大算力最常用方法,是把算力分配到多個處理器上並同時執行計算。在訓練神經網路時,實現這一目標的主要方法是模型並行,在不同處理器上分布神經網路;資料並行是指在不同處理上分發訓練樣例,並且並行地計算神經網路的更新。雖然模型並行使得訓練大於單個處理器可支援的神經網路成為可能,但通常需要根據硬體需求定製模型架構。相比之下,資料並行是模型不可知的,且適用於所有神經網路體系結構,它是用於並行神經網路訓練的最簡單、最廣為採用的技術。對於最常見的神經網路訓練演算法(同步隨機梯度下降及其變體),資料並行的規模和樣本大小、用於計算神經網路的每次更新的訓練樣本的數量相對應。但是,平行計算有什麼限制?我們什麼時候才能實現大幅度的訓練加速?

在《測量資料並行在神經網路訓練中的作用》一文中,我們在實驗中使用三種不同的優化演算法(「優化器」)在七個不同資料集上執行六種不同型別的神經網路,來研究樣本大小和訓練時間之間的關係。總的來說,我們在約450個工作負載上訓練了超過100k的單個模型,發現了我們測試的所有工作負載中樣本大小和訓練時間之間看似普遍的關係。我們還研究了這種關係如何隨資料集、神經網路架構和優化器而變化,結果我們發現,工作負載之間的差異非常大。此外,我們很開心地把原始資料分享出來,供研究界進一步分析。這些資料報括超過71m的模型評估,組成我們訓練的所有100k +單個模型的訓練曲線,並可用於復現我們**中提到的所有24個圖。

在理想的資料並行系統中,處理器之間的時間同步可以忽略不計,訓練時間可以通過訓練步驟來計量(神經網路引數的更新)。在此假設下,我們在樣本大小和訓練時間之間的關係中觀察到三種不同的縮放模式:「完美縮放」模式,其中樣本加倍,達到目標樣本外錯誤所需的訓練步驟數減半;其次是「收益遞減」模式;最後是「最大資料並行」制度,即使在理想的硬體環境中,進一步增加樣本也不會減少訓練時間。

(對於我們測試的所有工作負載,我們觀察到樣本大小和訓練速度之間的普遍關係具有三種不同的模式:完美縮放(沿著虛線),收益遞減(從虛線偏離)和最大資料並行(趨近平行)。各模式之間的過渡點在不同的工作量上變化很大。)

雖然樣本大小和訓練時間之間的這些基本關係看似普遍,但我們發現,在不同神經網路架構和資料集上,三種縮放模式之間的轉換點變化很大。這意味著,在當今的硬體條件下(如雲tpu pod,),雖然簡單的資料並行可以大大加速某些工作負載,但是另一些工作負載需要的不僅僅是簡單的資料並行。例如,在上圖中,cifar-10上的resnet-8無法從大於1,024的樣本中受益,而imagenet上的resnet-50只有當樣本至少增加到65,536才可能繼續受益。

如果可以**哪些工作負載可以最大化地從資料並行訓練中受益,那麼我們就可以定製工作負載,以最大限度地利用可用硬體。但是,我們的結果表明這不一定行的通,因為最大化利用有用的樣本在某種程度上取決於工作負載的方方面面:神經網路架構、資料集和優化器。例如,某些神經網路架構可以從比其他架構更大的樣本中受益,即使在使用相同優化器對相同資料集進行訓練時也是如此。雖然這種影響有時取決於網路的寬度和深度,但它在不同型別的網路之間是不一致的,並且一些網路甚至沒有明顯的「寬度」和「深度」概念。

雖然我們發現某些資料集可以從比其他資料集更大的樣本中受益,但這些差異並不總是因為資料集的大小引起的,有時對於較大的樣本,較小的資料集也可能比較大的資料集受益更多。

(左圖: 在lm1b資料集上,transformer 神經網路比lstm神經網路擴充套件到更大樣本的樣本。右圖:common scrawl資料集並不比lm1b資料集受益更多,儘管前者大小是後者的1,000倍。)

也許最讓人鼓舞的發現是,即使是優化演算法的微小變化,如隨機梯度下降的momentum ,也可以隨著樣本擴大顯著改善訓練。這讓新優化器或測試優化器縮放屬性的可能性變大,以找到可以最大限度地利用大規模資料並行的優化器。

通過增加樣本數量,利用額外的資料並行是一種加速工作負載的簡單方法,但是,我們的實驗顯示工作負載加速的優勢由於硬體限制在逐漸減小。但另一方面,我們的結果表明,一些優化演算法可能可以在許多模型和資料集中擴充套件完美的縮放模式。未來,我們可以用相同的方法測試其他優化器,看看現在是否存在可以將完美模式拓展應用到所有問題中的優化器。

谷歌神經網路位址

昨天,google發布了tensorflow遊樂場。tensorflow是google今年推出的機器學習開源平台。而有了tensorflow遊樂場,我們在瀏覽器中就可以訓練自己的神經網路,還有酷酷的影象讓我們更直觀地了解神經網路的工作原理。今天,就讓矽谷周邊帶你一起去tensorflow遊樂場快樂地...

卷積神經網路學習研究(一)

結論 卷積層 1.增加網路的深度能夠提高準確率 2.增加特徵面數也能提高準確率 3.增加乙個卷積層比增加乙個全連線層更能獲得乙個更高的準確率 4.採用較小的卷積核代替較大的卷積核,同時增加網路深度來增加複雜度,試驗表明網路深度比卷積核大小更為重要 5.試驗表明,更小的卷積核且更深的cnn結構能夠獲得...

免費使用谷歌GPU訓練神經網路

完全雲端執行 免費使用谷歌gpu訓練神經網路 背景對,你沒有聽錯,高大上的 現在不花錢也能用上了。這是google的一項免費雲端機器學習服務,全名colaboratory。colaboratory 是乙個 google 研究專案,旨在幫助傳播機器學習培訓和研究成果。它是乙個 jupyter 筆記本環...