天天看點

微軟亞洲研究院霍強:實作并行訓練的線性增長,突破資料處理極限

微軟亞洲研究院霍強:實作并行訓練的線性增長,突破資料處理極限

微軟亞洲研究院首席研究員霍強博士

近年來,深度學習的爆發在很大程度上取決于大資料和與之相比對的計算能力,深度學習的特性決定了它需要更多的資料進行學習,進而得出模型來完成特定任務,比如說用龐大的語料庫去訓練語音模型;伴随出現的 CPU 和 GPU 叢集也保障了計算能力,使得算法和資料能夠完美結合起來,進而帶來了深度學習的大發展,特别是語音和圖像識别精度的顯著提升。

但是,計算能力和訓練速度的提升并非計算資源的簡單堆砌,這裡有一個「魚與熊掌不可兼得」的沖突——如何在增加CPU 或 GPU 數量的同時,保證訓練的線性加速以及性能。如果把深度學習的實施比作蓋房子的話,那房子是需要建立的模型,勞工則可以看做是 CPU 和 GPU,建築材料就是資料。為保證房子的品質,我們需要保證一定的建築材料,同時需要組織勞工用最高效的方式去完成建造過程。但由于勞工之間存在溝通成本和資源浪費,是以無法實作工作成果随勞工數量的增多呈線性增長。這對應到機器學習領域就是如何在擴大并行訓練(parallel training)規模的情況下,在保證模型性能的同時實作訓練速度線性增長。而最近,微軟亞洲研究院首席研究員霍強博士的研究團隊在 ICASSP 2016 大會上送出的論文《Scalable Training of Deep Learning Machines by Incremental Block Training with Intra-Block Parallel Optimization and Blockwise Model-Update Filtering》就較好地解決了這個經典的兩難問題,讓大規模并行訓練在增加GPU的條件下幾乎實作了線性加速并保證了模型性能,這一突破對大資料機器學習的效率提升意義重大。 

這篇論文中的實驗結果顯示,該技術對語音識别中神經網絡模型的訓練提升十分顯著,在保證模型性能的前提下,當使用16 塊 GPU 卡時,訓練速度提高了 15 倍,而當使用 64 塊卡時,訓練速度提高到了 56 倍。在對手寫識别所采用的雙向長短期記憶遞歸神經網絡的 CTC (Connectionist Temporal Classification)訓練過程中,該并行訓練算法的有效性也得到了證明。霍強及團隊也與微軟産品部門合作驗證了該方案的有效性,霍強表示,正在将該并行訓練算法用于卷積神經網絡。

在霍強的團隊提出該方法之前,業内普遍有三種方法來解決并行計算問題:

最知名的方法是 ASGD(異步随機梯度下降,Asynchronous stochastic gradient descent),通過大量 GPU 做異步計算,這是 Google 從 2012 年起就在采用的方法。但這個方法的問題在于,增加 GPU 時需要的通信代價很高,增加了系統設計優化和維護成本,同時基于同樣資料的兩次訓練結果也會不同。

第二種方法是 ASGD 加模型平均,在對大資料做并行處理時,将資料配置設定給每塊GPU去處理,之後把計算結果取一個平均值生成新的模型,再給GPU配置設定資料進行處理,以此類推。這種方法很簡單,但壞處在于卡數上去時模型性能會下降。

第三種方法是1-bit SGD,該方法由微軟一位研究員提出,通過梯度量化和壓縮技術減少通信代價,實作了 Geoffrey Hinton 30 年前提出的單機訓練經典方法 mini-batch SGD 的并行化。它的主要缺點是, 在保證訓練模型性能的情況下,卡數增加時無法做到訓練線性加速。

霍強博士的團隊此次提出的解決方案是在模型平均的基礎上增加了一個模型更新濾波步驟,将每一輪模型更新的資訊收集起來,結合曆史資訊和目前資訊進行學習,這樣一來能夠保證每一輪的更新更為平滑,不會出現巨大波動,最終生成模型的性能也大大提升。霍強博士認為,和模型平均法相比,這種全新的解決方案有兩個優勢,第一是将曆史資訊考慮進來,模型平均方法每一輪疊代隻利用目前獲得的資訊更新模型,曆史更新資訊被忽略了。「就像我們在學習新東西時,大部分過去的經驗教訓你都忘掉了,從某一個新的起點開始,有時候是好事情,但更多時候是壞事情,少了吸取經驗教訓這個環節嘛。」霍強說到。第二個優勢是資料塊層級的訓練,即每個 GPU 處理的是子任務,把所有的子任務資料合在一起就是一個資料塊,子任務加起來是更大的任務。整個訓練過程稱為 Incremental Block Training,每次隻關心一個資料塊,依次處理。「這樣設計的最大好處就是對處理的資料量沒有限制,」霍強解釋到,「因為不管資料有多少,每次都是看一個資料塊,處理完一個資料塊以後,看下一個資料塊。是以,有多少計算能力,就能處理多大資料。」

這次研究突破看似是靈光一現,但實際上是水到渠成的結果,和霍強及研究小組的長期研究積澱密不可分,而更重要的則是他們把過去幾種方法研究到極緻的理念,「我們覺得每一個優秀的研究人員都能做到這一點,因為他要做創造發明,一定要尋根究底,否則你怎麼能想出新方法來,要不然你想出來的方法還不如一個舊方法。」霍強說到。比如說,他發現 Geoffrey Hinton 30 年前的方法有一個細節在很長一段時間内被很多人忽略了,它不是标準的 SGD,而是帶有沖量(momentum)的 SGD,即在做 mini-batch SGD 的時候,也會考慮曆史資訊,基于上一個模型的變動情況去更新新模型。這個沖量讓訓練過程變得平滑,進而帶來了更好的學習效果,其實這是保證這個方法有長久生命力的重要原因之一。

正是這種研究理念促使霍強及團隊對曆史上的各類方法都有透徹了解,弄清楚了各種方法的優缺點,進而提出了完全創新的方法。由于這種新方案能夠在保證模型性能的同時實作并行訓練的線性加速,而且對處理資料量沒有上限,是以具有很強的通用性。除了在微軟内部的使用之外,更重要的影響還在于讓更多的研究者可以使用。「我覺得這個方法最大的影響就是降低門檻,讓中小規模的研究組,或者沒有系統專門知識的人也可以利用大資料去做大規模的深度學習,去利用現在越來越便宜的GPU卡。」霍強表示。

并行訓練效率的提升可以繼續提高語音識别和圖像識别的精度,或者處理更加複雜的應用場景。比如說遠場及噪音環境下的語音識别還是一個沒有完全解決的問題,需要開發新模型,而利用大資料的深度學習在其中可以發揮重要作用,這也凸顯了并行訓練的重要性。

「現在所謂的人工智能,很重要的一個環節,也是進步最快的部分,就是如何用大量有用的資料學到一些比較有價值的資訊去解決實際問題。」霍強說到。而實作大規模并行訓練的線性加速為我們帶來了更好的利用資料的工具。

繼續閱讀