摘要:本圖中的數(shù)據(jù)收集自利用數(shù)據(jù)集在英偉達(dá)上對進行訓(xùn)練的實際流程。據(jù)我所知,人們之前還無法有效利用諸如神威太湖之光的超級計算機完成神經(jīng)網(wǎng)絡(luò)訓(xùn)練。最終,我們用分鐘完成了的訓(xùn)練據(jù)我們所知,這是使用進行訓(xùn)練的世界最快紀(jì)錄。
圖 1,Google Brain 科學(xué)家 Jonathan Hseu 闡述加速神經(jīng)網(wǎng)絡(luò)訓(xùn)練的重要意義
近年來,深度學(xué)習(xí)的一個瓶頸主要體現(xiàn)在計算上。比如,在一個英偉達(dá)的 M40 GPU 上用 ResNet50 去訓(xùn)練 ImageNet 需要 14 天;如果用一個串行程序在單核 CPU 上訓(xùn)練可能需要幾十年才能完成。這個問題大大限制了科技的發(fā)展。為了設(shè)計新的模型,研究人員往往需要不斷調(diào)整模型,再去做實驗,每次實驗結(jié)果都要等一天是無法接受的。所以,在半小時之內(nèi)完成大型神經(jīng)網(wǎng)絡(luò)的訓(xùn)練對科技的進步意義重大,交互式研究能大大提高研發(fā)效率。
利用參數(shù)服務(wù)器實現(xiàn)的異構(gòu)方法無法保證在大型系統(tǒng)之上穩(wěn)定起效。而正如 Goyal 等人于 2017 年得出的結(jié)論,數(shù)據(jù)并行同步方法對于超大規(guī)模深度神經(jīng)網(wǎng)絡(luò)(簡稱 DNN)訓(xùn)練而言表現(xiàn)得更為穩(wěn)定。其基本思路非常簡單——在 SGD 中使用更大的 batch size,確保每一次迭代皆可被輕松分布至多處理器處。這里我們考慮以下理想條件。ResNet-50 在處理一張 225x225 像素圖片時,需要進行 77.2 億次單精度運算。如果我們?yōu)?ImageNet 數(shù)據(jù)集運行 90 epochs 的運算,則運算總量為 90x128 萬 x77.2 億(1018)。其實,現(xiàn)在世界上最快的計算機(中國的神威太湖之光)理論上可以每秒完成 2*10^17 個單精度浮點數(shù)計算。所以,如果我們有一個足夠好的算法,允許我們充分利用這臺超級計算機,應(yīng)該能夠在 5 秒內(nèi)完成 ResNet-50 的訓(xùn)練。
為了實現(xiàn)這一目標(biāo),我們需要確保該算法能夠使用更多處理器并在每次迭代時加載更多數(shù)據(jù)——也就是說,要在 SGD 采用更大的 batch size。這里我們用單一英偉達(dá) M40 GPU 來假定單機器用例。在特定范圍內(nèi),batch size 越大,則單一 GPU 的速度就越快(如圖 2 所示)。其原因在于,低級矩陣計算庫在這種情況下?lián)碛懈叩膱?zhí)行效率。在利用 ImageNet 訓(xùn)練 AlexNet 模型時,其中每 GPU 的最優(yōu)批量大小為 512。如果我們希望使用大量 GPU 并保證每 GPU 皆擁有理想的執(zhí)行效率,則應(yīng)當(dāng)將批量大小設(shè)定為 16 x 512 = 8192。
圖 2,在特定范圍內(nèi),批量處理方式能夠顯著提升系統(tǒng)性能(例如 GPU)。本圖中的數(shù)據(jù)收集自利用 ImageNet 數(shù)據(jù)集在英偉達(dá) M40 GPU 上對 AlexNet 進行訓(xùn)練的實際流程。其中 batch size 為每 GPU 512 時,處理速度最快;batch size 為每 GPU 1024 時會發(fā)生內(nèi)存不足。
在理想情況下,如果我們固定數(shù)據(jù)整體訪問量并根據(jù)處理器數(shù)量線性增加 batch size,每次迭代的 batch size 越大,所需要的迭代次數(shù)就越少。在增大 batch size 的同時,我們可以使用更多處理器以保持單次迭代時間基本維持恒定。如此一來,我們就可以獲得線性加速比(如表 1 所示)。
表 1,comp 表示計算,comm 表示機器之間的通訊, t 表示單次迭代時間。只要我們在增大 batch size 的同時使用更多機器,就可以將迭代次數(shù)維持到基本恒定。這樣總時間就能夠以線性速度大大減少。
可惜,SGD 算法的 batch size 并不能無限制地增大。SGD 采用較大的 batch size 時,如果還是使用同樣的 epochs 數(shù)量進行運算,則準(zhǔn)確度往往低于 batch size 較小的場景 ; 而且目前還不存在特定算法方案能夠幫助我們高效利用較大的 batch size。表 2 所示為基準(zhǔn)測試下的目標(biāo)準(zhǔn)確度。舉例來說,如果我們將 AlexNet 的 batch size 設(shè)置為 1024 以上或者將 ResNet-50 的 batch size 設(shè)置為 8192 以上,則準(zhǔn)確度的測試結(jié)果將嚴(yán)重下降(如表 4 與圖 3 所示)。
表 2,未配合數(shù)據(jù)增強情況下的 ImageNet 訓(xùn)練基準(zhǔn)結(jié)果
對于大批量訓(xùn)練場景,我們需要確保使用較大的 batch size 訓(xùn)練能夠在相同 epochs 前提下獲得與較小的 batch size 相近的測試準(zhǔn)確度。這里我們之所以保持 epochs 數(shù)量不變,是因為從統(tǒng)計學(xué)角度來講,一個 epoch 代表著算法與整體數(shù)據(jù)集接觸一次 ; 而從計算角度來講,固定 epochs 數(shù)量意味著保證浮點運算次數(shù)不變。目前業(yè)界領(lǐng)先的大批量訓(xùn)練方案包含以下兩種技術(shù)手段:
(1) ? ?線性縮放(Krizhevsky 于 2014 年提出):如果我們將 batch size 由 B 增加至 kB,我們亦需要將學(xué)習(xí)率由η增加至 kη(其中 k 為倍數(shù))。
(2) ? ?預(yù)熱模式(Goyal 等人于 2017 年提出):如果我們使用高學(xué)習(xí)率(η),則應(yīng)以較小的η作為起點,而后在前幾次 epochs 中逐步將其遞增至較大η。
這里我們使用 B、η以及 I 來分別表示 batch size、學(xué)習(xí)率與迭代次數(shù)。如果我們將 batch size 由 B 增加到 kB,那么迭代次數(shù)將由 I 降低至 I/k。這意味著權(quán)重的更新頻率減少為原本的 k 分之一。因此,我們可以通過將學(xué)習(xí)率提升 k 倍使每一次迭代的更新效率同樣提升 k 倍。預(yù)熱模式的目標(biāo)在于避免算法在初始階段因為使用基于線性縮放的高學(xué)習(xí)率而無法收斂。利用這些技術(shù)手段,研究人員們能夠在特定范圍之內(nèi)使用相對較大的 batch size(如表 3 所示)。
表 3,業(yè)界領(lǐng)先的大批量訓(xùn)練方案與準(zhǔn)確度測試結(jié)果
圖 3:batch size 為 256 并配合 poly policy(乘方為 2)的基準(zhǔn)學(xué)習(xí)率為 0.2。而在未使用 LARS 的版本中,我們使用業(yè)界領(lǐng)先的方法(由 Goyal 等人制定,2017 年):使用 5-epoch 進行預(yù)熱并對 LR 進行線性擴展。對于使用 LARS 的版本,我們亦同樣使用 5-epoch 進行預(yù)熱??梢悦黠@看到,現(xiàn)有方法無法處理 batch size 超過 8000 的任務(wù);而 LARS 算法則能夠配合 epoch 數(shù)量等同的基準(zhǔn)確保大規(guī)模批量任務(wù)獲得同樣的準(zhǔn)確度。
然而,我們亦觀察到目前業(yè)界領(lǐng)先的各類方案的 batch szie 區(qū)間仍然比較有限,其中 AlexNet 為 1024,而 ResNet-50 為 8192。如果我們在 AlexNet 模型訓(xùn)練當(dāng)中將 batch size 增加至 4096,則 100 epochs 情況下的準(zhǔn)確度僅能達(dá)到 53.1%(如表 4 所示)。我們的目標(biāo)是在使用更大 batch size 的情況下至少達(dá)到 58% 的準(zhǔn)確度。
表 4,現(xiàn)有方法(線性縮放 + 預(yù)熱)對于 batch size 大于 1024 的 AlexNet 無法正常工作。我們將預(yù)熱時間從 0 調(diào)整到 10epoch,并從中選擇較高準(zhǔn)確度?;诰€性縮放方法,當(dāng) batch size 為 4096 時,最優(yōu)學(xué)習(xí)率(LR)應(yīng)為 0.16。
據(jù)我所知,人們之前還無法有效利用諸如神威太湖之光的超級計算機完成神經(jīng)網(wǎng)絡(luò)訓(xùn)練。正如姚期智教授所說的那樣,AI 的突破口在算法。這個問題的瓶頸就在算法層。我們有足夠的計算能力,卻無法充分利用。
為了解決大批量訓(xùn)練的準(zhǔn)確度問題,我們設(shè)計了 LARS 算法(https://arxiv.org/pdf/1708.03888.pdf),允許我們將 AlexNet 的 batch size 提升到 32k(原來只有 1024),將 ResNet50 的 batch size 也提高到 32k。一旦我們完成了 batch size 的提升,用超級計算機加速神經(jīng)網(wǎng)絡(luò)就變得非常簡單了。
只需把數(shù)據(jù)均分到各個機器上,每次迭代完成一次對所有機器上參數(shù)的均值操作即可。最終,我們用 24 分鐘完成了 AlexNet 的訓(xùn)練(據(jù)我們所知,這是使用 AlexaNet 進行 ImageNet 訓(xùn)練的世界最快紀(jì)錄)。從下面的兩個圖表可以看出,我們同樣可以在一小時內(nèi)完成 ResNet-50 的訓(xùn)練。由于 LARS 使我們得以把 batch size 擴展到了 32k,我們可以使用更為廉價的芯片進行計算。我們選擇了 Intel KNL(其實就是一種高端 CPU),最終總共用了 512 個 KNL,按照市場價的花費是 120 萬美金,遠(yuǎn)遠(yuǎn)低于之前 Facebook 的 410 萬美金 (32 臺 NVIDIA DGX station)。正是大的 batch size 使我們大大降低了成本。
LARS 算法目前已經(jīng)被用在 NVIDIA Caffe 和 Google Tensorflow 之中,NVIDIA Caffe 的 LARS 實現(xiàn)版本已經(jīng)開源。當(dāng)然,如果用更大的超級計算機,訓(xùn)練時間還會進一步縮短。
其實一年前,吳恩達(dá)教授在國際超算大會上 (ISC2016) 演講時就預(yù)言,超級計算機將來對 AI 會非常重要。筆者認(rèn)為,如果算法的擴展性足夠好,超級計算機可以很快完成神經(jīng)網(wǎng)絡(luò)訓(xùn)練。那么,神經(jīng)網(wǎng)絡(luò)對單機 server 的需求可能會下降。相反,人們可能會去買超算中心的 computational hour。這樣,普通人也可以廉價地用上 1000 臺機器。并且超算中心會把這些機器維護好,普通用戶不需要自己浪費大量的時間去管理機器和系統(tǒng)軟件。當(dāng)然這對 Intel 和 NVIDIA 的芯片廠家是沒有影響的,因為他們可以將芯片大批量賣給超算中心。
作者介紹:尤洋,UC Berkeley 計算機科學(xué)博士在讀,LARS 算法開發(fā)者之一。
http://www.cs.berkeley.edu/~youyang/
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價值的辦法,實際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報表系統(tǒng)等全方位知識
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/4633.html
摘要:年月,騰訊機智機器學(xué)習(xí)平臺團隊在數(shù)據(jù)集上僅用分鐘就訓(xùn)練好,創(chuàng)造了訓(xùn)練世界紀(jì)錄。訓(xùn)練期間采用預(yù)定的批量變化方案。如此,我們也不難理解騰訊之后提出的層級的思想了。你可能覺得這對于索尼大法而言不算什么,但考慮到維護成本和占地,這就很不經(jīng)濟了。 隨著技術(shù)、算力的發(fā)展,在 ImageNet 上訓(xùn)練 ResNet-50 的速度被不斷刷新。2018 年 7 月,騰訊機智機器學(xué)習(xí)平臺團隊在 ImageNet...
摘要:最近,富士通實驗室的一項研究刷新了一項紀(jì)錄論文地址這項研究在秒內(nèi)完成了上訓(xùn)練網(wǎng)絡(luò),使用個,準(zhǔn)確率為,刷新了此前谷歌分鐘的記錄。準(zhǔn)確性改良這部分采用了通常用于深度學(xué)習(xí)優(yōu)化器的隨機梯度下降。使用,我們的訓(xùn)練結(jié)果在秒內(nèi)訓(xùn)練完,驗證精度達(dá)到。 在過去兩年中,深度學(xué)習(xí)的速度加速了 30 倍。但是人們還是對 快速執(zhí)行機器學(xué)習(xí)算法 有著強烈的需求。Large mini-batch 分布式深度學(xué)習(xí)是滿足需求...
摘要:在飛車類游戲中,開始狀態(tài)和結(jié)束狀態(tài)的標(biāo)志如圖所示。動作設(shè)計我們目前在設(shè)計飛車類游戲動作時,使用離散的動作,包括三種動作左轉(zhuǎn)右轉(zhuǎn)和。圖訓(xùn)練過程中激勵的趨勢圖總結(jié)本文介紹了如何使用在分鐘內(nèi)讓玩飛車類游戲。 作者:WeTest小編商業(yè)轉(zhuǎn)載請聯(lián)系騰訊WeTest獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。原文鏈接:https://wetest.qq.com/lab/view/440.html WeTest...
閱讀 2086·2023-04-25 19:03
閱讀 1236·2021-10-14 09:42
閱讀 3419·2021-09-22 15:16
閱讀 1002·2021-09-10 10:51
閱讀 1585·2021-09-06 15:00
閱讀 2411·2019-08-30 15:55
閱讀 492·2019-08-29 16:22
閱讀 901·2019-08-26 13:49