1. 程式人生 > 其它 >【感悟】關於分散式機器學習

【感悟】關於分散式機器學習

近年來,機器學習的作用越來越大,開始在各行各業扮演者重要的角色。而隨著大資料浪潮的出現,機器學習的資料和模型的規模也越來越大。大規模的資料和模型就會帶來很多的問題,一是非常容易過擬合,從而要求更符合實際、更大規模的資料和模型。二是對計算和儲存能力提出了新的要求,單機往往不能在可接受的時間範圍內滿足訓練的要求,因此,我們不得不使用計算機叢集和分散式儲存來完成訓練任務。而擁有更強並行度和計算能力的GPU顯然是比CPU更適合完成這項任務的,GPU叢集也成了分散式機器學習的最佳選擇。

但是當單機式機器學習模型遷移到分散式叢集上時,計算速度和叢集機器數量不呈線性相關。這是因為計算並行、資料並行和模型並行時,GPU之間的通訊佔據了很多資源,且GPU的利用率並不高。即便是我們的計算機也往往會出現“一核有難,八核圍觀”的問題,更別說更加複雜的GPU叢集。因此,通訊問題成為了分散式機器學習發展的瓶頸之一。

相比較而言,機器學習這個領域本身是比較單純的領域,其模型和演算法都不會涉及到底層,因此機器學習以往通常是計算機專業研究的問題。而分散式機器學習則更像是一個系統工程,涉及到資料、模型、演算法、網路、通訊、硬體等許多方面,這就更增加了這個領域的難度。正如一句話所說,“顛覆一個行業的往往是另一個行業”。確實是這樣的,引起一個行業崛起的往往是另一個行業的技術革新,阻礙一個行業發展的往往是另一個行業的技術缺陷。正是通訊問題阻礙了機器學習領域的進一步發展。所以這就要求我們在能力允許的範圍內,儘可能地去了解多領域的知識。