日前,騰訊工程師以2分31秒的成績,成功打破128卡訓練ImageNet的世界紀錄。與以前保持的記錄相比,快了整整7秒。「咱們的實力尚未徹底發揮,若是改用RoCE,這個成績能夠進一步提高到2分2秒」參與其中的騰訊工程師這樣說。
web
Tips:ImageNet在圖像處理領域很是有名,它是一個已完成標註的海量數據集,也是公認的圖像處理算法試金石:誰的算法用了更少的訓練資源、在更短的時間內訓練完ImageNet,還能獲得更高的準確率,誰的算法就能排名靠前。算法
具體點說,騰訊工程師們在25Gbps的VPC網絡環境下、使用了128塊型號爲V100的GPU(業內稱爲128卡),並藉助最新研製的Light大規模分佈式多機多卡訓練框架,僅耗時2分31秒訓練28個epoch就能識別出ImageNet內的128萬張圖片內容,且TOP5精度達到93%。緩存
那麼,騰訊工程師們爲何要去攻破訓練ImageNet的世界紀錄呢?網絡
一個明顯的感知:AI模型愈來愈複雜了app
隨着AI的普遍應用,AI模型愈來愈複雜了:框架
數據量大:號稱史上最大的AI模型GPT-3光訓練就使用了高達45TB的數據量,這讓它在多輪訓練時的數據讀取成爲很是耗時的環節。
機器學習
計算模型複雜:深度網絡的層次究竟要多深?這要看AI想要表達的特徵有多豐富。當前應用普遍的CNN特徵提取網絡ResNet-1000,其深度已達1202層。分佈式
參數量大:深度神經網絡因爲層次不少,參數量也每每大得驚人,GPT-3的參數量高達1750億個,這勢必會給調參工做帶來難度。ide
超參數範圍普遍:隨着模型複雜度的提高,模型中可供調節的超參數數量及數值範圍也在增多。當多數超參數的取值爲連續域的狀況下,即便只有少許的超參數仍然可能形成組合爆炸。函數
訓練時間長:模型越複雜對算力的需求勢必越高。從2012年到2018年,業界對算力的需求增加超過2000倍 ,算力緊缺就會致使訓練時間拉長。
爲了縮短訓練時間,各大廠商不惜堆設備增長算力,隨之而來的是高額的訓練成本。根據估測,訓練一個GPT-3大概須要1300萬美圓,以致於其研究者在論文中說「咱們發現了一個bug,但沒錢再去從新訓練,因此就先算了吧。」
AI模型訓練難道只是「氪金遊戲」?
騰訊想作的,
是突破AI模型訓練框架性能極限
正是在這樣的背景下,騰訊雲聯合騰訊機智團隊、騰訊雲智能鈦團隊、騰訊優圖實驗室、騰訊大數據團隊和香港浸會大學計算機科學系褚曉文教授團隊,以ImageNet爲訓練的標杆,研發出了Light大規模分佈式多機多卡訓練框架,這套全新的訓練解決方案,在單機訓練速度、多機多卡通信優化、batch收斂等方面的多個細節上都進行了優化,可讓AI模型訓練更加高效:
單機訓練速度
在單機訓練速度方面,騰訊工程師主要解決了1.分佈式系統中訪問遠端存儲的數據較慢 2.大量線程相互搶佔資源致使CPU效率低下 3.JPEG小圖片解碼制約性能等問題,提高了總體訓練的速度。通過優化後,單機訓練每卡速度有了明顯提高,以96*96*3圖片大小爲例,訓練速度對好比下圖所示:
具體技術細節以下:
①分佈式系統中訪問遠端存儲的數據較慢 :AI訓練數據通常以分佈式形態進行存儲,而分佈式存儲機器和訓練機器並不在一個集羣,這會致使訪問遠端存儲的數據較慢。爲此,騰訊工程師利用GPU母機的SSD盤/內存,在訓練過程當中爲訓練程序提供數據預取和緩存。
②大量線程相互搶佔資源致使CPU效率低下:數據預處理時,每一個進程分配的線程數是驚人的(好比,單機8卡在數據預處理時就會分配數百個線程)。大量的線程相互搶佔資源會致使CPU運行效率低下等問題。因而騰訊工程師根據運行的實時信息和過往經驗,自動設置最優數據預處理線程數,下降CPU切換負擔,同時也讓數據預處理與GPU計算並行。
③JPEG小圖片解碼制約性能:每一個小圖片雖然計算時間少,但單位時間內須要處理的數量多,也會致使CPU負載過大。通過分析後發現,其中制約性能的環節爲JPEG圖片解碼。所以,騰訊工程師預先將數據集中的JPEG圖片解碼,並緩存於內存中,計算時直接加載解碼數據從而加快計算。
多機多卡通信優化
在多機擴展訓練方面,以往在TCP環境下,跨機通訊的數據須要從顯存拷到主存,再經過CPU收發,每次計算時間短但通訊時間長。爲此,騰訊展開了多機多卡通信優化,充分利用通訊時的網絡帶寬,縮短跨機通訊的時間。通過測算,優化後騰訊將訓練速度上升至3100樣本/秒,業界其它相似的算法速度是2608樣本/秒。
具體技術細節以下:
①自適應梯度融合技術優化通訊時間:將小數據塊融合成大數據塊,減小通訊次數從而下降通訊延遲、提高通訊效率的方式能夠減小通訊時間。但在某些狀況下,通訊需等待全部編譯優化所融合的計算完成。所以,騰訊提出了自適應梯度融合技術,根據編譯優化的結果自適應的選擇梯度融合的閾值,解決了這個問題。
②2D通訊+多流提高帶寬利用率:TCP網絡下全局規約操做有很大的額外延時。針對這個問題,騰訊使用了2D通訊和多流來提高網絡帶寬利用率。以單機有8塊卡的機型爲例:
2D通訊在TCP網絡下,8塊卡能夠同時作跨機通訊,帶寬空閒的時間少,並且每塊卡作跨機通訊的次數比全局規約時少得多。
多流又使得多個梯度的2D通訊能夠造成流水線,某個梯度在作單機內通訊沒有利用到網絡帶寬時,其它梯度的跨機通訊能夠填補網絡帶寬的間隙。
③梯度壓縮通訊技術減小通訊量,突破帶寬瓶頸:網絡帶寬獲得充分利用以後,爲進一步提升擴展性,騰訊引入了梯度壓縮通訊技術。減小通訊量,突破帶寬瓶頸。
梯度壓縮通訊技術流程
batch收斂問題
爲了在最大程度提高訓練速度的同時,最小化對精度的影響,騰訊增長了batch size,並使用了大batch調參策略、梯度壓縮精度補償、AutoML調參等方法,結果證實:騰訊工程師僅需訓練 ImageNet 28個epoch,TOP5精度就能達到93%,而業界其它算法須要訓練90個epoch才能達到相近的結果。
具體細節以下:
①大batch調參策略:綜合考慮性能和收斂性,騰訊工程師使用了變分辨率的多階訓練:訓練前期利用多個epoch的低分辨率樣本快速收斂,而在訓練後期使用少許epoch的高分辨率調高精度。此外,騰訊工程師還在模型、優化器、實際超參選擇、損失函數上進行了諸多優化。
②梯度壓縮精度補償:在整個訓練過程中,圖片大小爲96*96*3時通訊的時間佔比最大,所以騰訊只在此時採用梯度壓縮通訊,對訓練速度的提高最好且對精度的影響也最小。
③AutoML調參:目前,利用業界開源框架研發自動機器學習算法難、集成自研訓練平臺工做量大、在大規模長任務訓練場景優化效果差。爲此,騰訊研發了天風 (TianFeng)自動機器學習框架。它高度抽象出了自動機器學習的通用過程,能最大程度地將人力從繁瑣的手工調參工做中解放。在同一模型下,工程師僅需指定搜索的超參數及其範圍,便可對超參數空間進行探索並對調參思路進行快速驗證。
以上多重優化點相結合,騰訊最終打破了128卡訓練ImageNet的世界記錄。不得不提的是,這個世界記錄是基於騰訊公有云環境下創造的,目前,相關能力已集成到騰訊雲智能鈦機器學習平臺,並普遍應用在騰訊內外部的業務。
智能鈦是爲 AI 工程師打造的一站式機器學習服務平臺,可提供從數據預處理、模型構建、模型訓練、模型評估到模型服務的全流程開發支持。它內置豐富的算法組件,支持多種算法框架,知足多種AI應用場景的需求。其自動化建模(AutoML)的支持與拖拽式任務流設計讓 AI 初學者也能輕鬆上手。
總結
下一次挑戰ImageNet榜首的算法,會有多快?還沒有可知。
能夠肯定的是,騰訊工程師們將進一步提高機器學習平臺易用性、訓練和推理性能,爲廣大從業者提供更有力的機器學習工具。