OpenAI披露最新研究成果:AI訓練如何擴充套件到更大規模?
我們發現,梯度噪聲尺度(gradient noise scale),作為一種簡單的統計量,可以預測神經網路訓練在諸多工上的並行性。由於複雜的任務往往具有更強噪聲的梯度,因此增長的大批次規模可能在未來變得更加有用,也消除了AI系統進一步發展的一個潛在限制。更廣泛地說,這些結果表明,神經網路訓練並不需要被看成一門神祕的藝術,而是可以得到嚴格的規範化和系統化。
在過去幾年內,AI研究人員採用資料並行化技術——將大批次資料分散到很多臺機器上,在加速神經網路訓練方面不斷取得成功。研究人員成功地使用成千上萬個批次進行影像分類和語言建模,甚至使用數百萬個批次訓練RL代理來玩Dota2遊戲。這些大批次使單個模型的訓練中能夠具有越來越多的計算量,成為AI訓練計算快速增長的重要推動者。然而,過大的批次規模呈現出演算法回報快速降低的情況,而且不清楚為什麼對某些任務來說這些限制過大,而對其他任務來說這些限制又過小[1]。
我們發現,通過測量梯度噪聲尺度——一個可用於量化網路梯度訊雜比[2]的簡單統計量,我們可以近似預測最有效的批次大小。受其啟發,噪聲尺度度量了資料中能夠被模型觀測到的變化(在給定的訓練階段)。當噪聲尺度小時,快速地並行檢視大量資料變得冗餘;而當噪聲尺度大時,我們仍能夠從大批次的資料中學到很多資訊。
這種型別的統計量被廣泛應用於樣本大小選擇,並被提出用於深度學習,但是還沒有被系統地度量或應用於現代模型訓練執行。我們在上圖所示各種機器學習任務上驗證了這種預測,包括影像識別、Atari遊戲和Dota。具體來說,我們在這些任務中採用各種批次大小進行訓練(每個任務單獨調整學習率),並將訓練加速與噪聲尺度預測出來的結果進行比較。由於大批量通常需要仔細昂貴的調整或特殊的學習率規劃才能有效,因此提前預知上限給訓練新模型提供了重大的實踐價值。
我們發現,訓練的掛鐘時間和用於訓練的總體計算量(與美元成本成比例)之間的折中對比,有助於視覺化這些實驗結果。在非常小的批次大小情形中,增大一倍的批次大小能減半訓練時間的同時不帶來額外的計算(用一半的時長跑兩倍的資料)。在非常大的批次大小情形中,更多的並行化並不會導致更快的訓練。曲線的中間有一個“拐彎”,而梯度噪聲尺度預測了拐彎發生的位置。
我們通過設定效能水平(如Beam Rider的Atari遊戲中的得分為1000),製作了這些曲線,檢視不同批次大小下訓練達到該效能所需要的時間。這些結果與我們的模型預測結果,在大量不同效能目標值情況下,都匹配地相當好。
達到給定分數所需的經驗和訓練時間之間的折中是可以預測的。
梯度噪聲尺度中的模式
在梯度噪聲尺度中,我們觀測到了幾種模式,從而為AI訓練未來可能有的樣子提供了一些線索。
首先,在我們的實驗中,噪聲尺度通常在訓練過程中增加一個數量級或更多。直觀地說,這意味著,網路在訓練早期會從任務中學習更“明顯”的特徵,而在後期學習更加複雜的特徵。例如,在影像分類情形中,網路首先可能學習識別小尺度的特徵,如大多數影像中呈現的邊緣或紋理;而在後期才將這些片段組合成更一般的概念,如貓和狗。為了看到全量的邊緣或紋理,網路只需要看少量的影像,因此噪聲尺度更小;一旦網路對更大的物件有了更多的理解,它就能夠處理更多的影像而不需要看重複的資料。
一些初步跡象表明,這樣的效果也發生在同一資料集上的不同模型上:更強大的模型有著更高的梯度噪聲尺度,而這僅僅是因為它們進一步減少了損失。因此,有證據表明,訓練過程中增加的噪聲尺度不只是一個人為收斂假象,而是由於模型變得更好導致的。如果這是真的,那麼我們期望,未來更強大的模型具有更高的噪聲尺度,因而也更加可並行化。
其次,主觀上更困難的任務也更易於並行化。在有監督學習場景中,從MNIST到SVHN,到ImageNet都有明顯的進步。在強化學習場景中,從Atari Pong到Dota 1v1,到Dota 5v5也有明顯的進步,其中最優批次大小相差10,000倍以上。因此,隨著AI發展至處理新的和更困難的任務,我們期望模型能夠容忍更高的批次大小。
啟發
資料並行度顯著影響了AI能力的前進速度。更快的訓練使得構建更強大的模型成為可能,並通過更快的迭代來加速研究。
在更早的AI和計算的研究中,我們觀察到,用於訓練最大的機器學習模型的計算,每3.5個月翻一番;這種趨勢是由經濟學(肯花多少錢用於計算)以及演算法並行訓練的能力共同驅動的。後一個因素(演算法的可並行化能力)更難以預測,其限制也沒有得到很好地理解,而我們當前的研究成果則是朝著系統化和量化它前進了一步。特別是,我們有證據表明,更加複雜的任務和相同任務上更加強大的模型,將容許比我們迄今所看到的更激進的資料並行性,從而為訓練計算的持續快速指數級增長提供關鍵的驅動力(這甚至還沒有考慮最近模型並行化的進展,它有可能在資料並行化之上考慮更進一步的並行化)。
訓練計算的持續增長以及可預測的演算法基礎,進一步突出了未來幾年AI能力快速增長的可能性,也強調了研究確保AI系統的安全性以及負責任地使用它們的緊迫性。AI政策的一個核心挑戰是,如何使用像這樣的度量來預測未來AI系統的特點,並使用這些知識來構思相應的政策讓社會最大化AI技術的正面影響和最小化它們的負面影響。
OpenAI致力於,繼續嚴格分析使我們對AI的未來有所預見,並採取措施解決分析出來的問題。
如果你想學習“AI科學”,並幫助我們實現更加資料驅動的神經網路訓練,請考慮申請OpenAI的工作。
[1] 與本文平行的一份補充研究,對大批次訓練進行了細緻的實驗測試,並對之前的文獻進行了全面的回顧,清理了早期工作中諸多不一致的地方。他們發現,潛在的並行性在任務之間存在顯著差異,我們的工作似乎解釋了這種差異的主要部分。他們的工作也建議,大批次訓練不會影響泛化能力。我們相信本文和其他研究中的系統調研對這個領域非常有價值,我們也會致力於繼續研究“AI科學”。
[2] 訓練神經網路的時候,我們通常每次只處理一小批資料,給出真實網路梯度的有噪估計。我們發現,梯度噪聲尺度Bnoise = E[|G-Gtrue|^2] / |Gtrue|^2(其中,期望是基於單個資料點),估計了最有效的批次大小。當基於批次大小B計算梯度時,估計梯度和真實梯度之間的歸一化距離是E[|GB - Gtrue|^2 / |Gtrue|^2] = Bnoise / B。不斷增加B,梯度噪聲停止下降的點顯著發生在B=Bnoise附近,而這個點也是訓練速度增益逐漸減小的點。
檢視英文原文:How AI Training Scales(https://blog.openai.com/science-of-ai/)
更多內容,請關注 AI前線
相關文章
- 擴充訓練
- 【IDL】 DICOM擴充套件模組套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 練習安裝Python擴充套件庫Python套件
- if-else擴充套件結構練習套件
- 如何擴充套件Kubernetes API?套件API
- 如何兩年內擴充套件至1800多人?英雄遊戲的規模效應分享套件遊戲
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- SpringMVC 擴充套件SpringMVC套件
- Mybatis擴充套件MyBatis套件
- 擴充套件工具套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- Java 中模擬 C# 的擴充套件方法JavaC#套件
- (PHP7核心剖析-11) 模組擴充套件PHP套件
- 【PHP】Mcrypt 擴充套件模組安裝及使用PHP套件
- 大規模圖訓練調優指南
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- 為擴充套件《英雄聯盟》IP規模 拳頭成立遊戲發行部門套件遊戲
- OpenAI擊敗Dota 2世界冠軍後記:如何訓練你的AIOpenAI
- MySQL到TiDB:Hive Metastore橫向擴充套件之路MySqlTiDBHiveAST套件
- 提高擴充套件性套件
- LINQ擴充套件方法套件
- HttpContext擴充套件類HTTPContext套件
- Json擴充套件方法JSON套件
- 擴充套件BSGS/exBSGS套件
- 擴充套件包上傳套件
- Flask 自建擴充套件Flask套件
- Nmap 擴充套件(四)套件
- 分類擴充套件套件
- 擴充套件表示式套件
- 新增php擴充套件PHP套件
- 可擴充套件性套件
- 19-擴充套件套件