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