LDA中Gibbs採樣算法和並行化

    最近在用topic model跑一些數據,算法採用了LDA和PLSA進行對比,由於數據量稍大,採用了LDA的並行化版本,對其並行化方法很感興趣,查看了相關資料後先總結如下,有時間可以繼續琢磨。Gibbs Sampling用來逼近LDA中的隱式變量,是一種較爲簡單的實現方式。

    Gibbs 方法

    傳統的實現方法是串行的,主要流程如下:

    步驟4中,每一個word都需要對全局進行更新,很容易造成網絡擁堵,是並行化主要優化的地方,一種並行化方案如下:

    

    上面的方法一方面可以進行異步網絡傳輸,另一方面設置cache進行批量更新可以減少同步帶來的加鎖操作。

    在採用的LDA並行化版本里面,基本是採用方法二的思路進行優化,即用MPI集羣的多個計算節點分別進行計算部分文檔集合,在每臺計算節點,採用多線程的方法進行加速,在每臺計算節點計算完成之後,更新全局的p(word|topic),然後進行下一輪的迭代。在程序運行的過程中發現在單臺計算節點採用多線程的方法不一定能提高效率,甚至會降低運行速度,需要進一步觀察和實驗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章