專利名稱:一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及以下所述的關(guān)鍵要素 一)適應(yīng)不同計算環(huán)境的多粒度并行數(shù)據(jù)處理方案 本發(fā)明針對不同硬件計算環(huán)境(單機(jī)計算環(huán)境和多機(jī)計算環(huán)境)設(shè)計了三種粒度的并行數(shù)據(jù)處理方案,分別是多進(jìn)程并行方案、多線程并行方案、復(fù)合并行方案,對應(yīng)關(guān)系如下表所示
1.多進(jìn)程并行方案是最容易實現(xiàn)的方案。該方案中每個計算進(jìn)程自身都是串行的,所以直接使用已有的串行算法即可,只需在控制進(jìn)程中通過數(shù)據(jù)分配即可實現(xiàn)多個計算進(jìn)程并行,該方案的可以較好適應(yīng)于單機(jī)、多機(jī)兩種計算環(huán)境。但是從最終的計算效率上不及其他兩種方案,而且由于單個計算節(jié)點上需要運(yùn)行多個程序而導(dǎo)致管理成本較高。
2.對于單機(jī)環(huán)境而言,最優(yōu)方案是多線程并行方案,因為線程的調(diào)度消耗和資源消耗都比進(jìn)程小,而且單一程序便于在運(yùn)行時管理。
3.對于多機(jī)環(huán)境而言,最優(yōu)方案是復(fù)合并行方案,因為首先可以通過多進(jìn)程實現(xiàn)了跨越機(jī)器的并行計算,每個計算節(jié)點上只需一個計算進(jìn)程,降低了運(yùn)行時的管理成本;而且,計算節(jié)點上采用多線程并行,發(fā)揮了線程的調(diào)度消耗和資源消耗小的優(yōu)勢。所以復(fù)合并行方案能夠同時利用單機(jī)上的多內(nèi)核并行架構(gòu)和多機(jī)上的機(jī)群大規(guī)模并行這兩種計算能力。
二)基于動態(tài)分配數(shù)據(jù)片段的負(fù)載均衡的方法 本發(fā)明的動態(tài)分配的負(fù)載均衡算法是將數(shù)據(jù)集分成很小的片段(Segment)對每個并行計算單元(進(jìn)程/線程)進(jìn)行分配 (1)多進(jìn)程并行方案中記片段的長度為L(L遠(yuǎn)小于數(shù)據(jù)集中包含的文檔數(shù)M,可以將靜態(tài)等分看成一種特例,此時L=M/P)。注意到當(dāng)一個計算進(jìn)程處理完一個片段后,立即申請下一個片段,而且每個進(jìn)程都進(jìn)行這樣申請和計算,直到所有的文檔被處理完畢。如果數(shù)據(jù)集中還有等于或超過L個文檔存在,那么就不會有任何一條計算進(jìn)程結(jié)束。也就是說所有計算進(jìn)程至少可以一直運(yùn)行到還有小于L個未處理的文檔的時候。又由于L可以選擇很小,所以可以說“幾乎”全部計算資源都被并行計算過程利用,即便是在最極端的情形下,最多只會有L個文檔的計算量不能被并發(fā)處理。通過給L不同的值,可以非常方便地實現(xiàn)對并發(fā)粒度的控制,一般要選擇一個遠(yuǎn)小于文檔數(shù)M的值。通過控制每個計算進(jìn)程每次只申請和處理少量數(shù)據(jù)保證所有的計算進(jìn)程接近同時結(jié)束,這樣的動態(tài)數(shù)據(jù)分配方法就實現(xiàn)了良好的進(jìn)程間負(fù)載均衡。
(2)多線程并行方案中記片段的長度為l(l遠(yuǎn)小于數(shù)據(jù)集中包含的文檔數(shù)M,可以將靜態(tài)等分看成一種特例,此時l=M/P)。注意到當(dāng)一個計算線程處理完一個片段后,立即申請下一個片段,而且每個線程都進(jìn)行這樣申請和計算,直到所有的文檔被處理完畢。如果數(shù)據(jù)集中還有等于或超過l個文檔存在,那么就不會有任何一條計算線程結(jié)束。也就是說所有計算線程至少可以一直運(yùn)行到還有小于l個未處理的文檔的時候。又由于L可以選擇很小,所以可以說“幾乎”全部計算資源都被并行計算過程利用,即便是在最極端的情形下,最多只會有l(wèi)個文檔的計算量不能被并發(fā)處理。一般要選擇l=1實現(xiàn)最大的并發(fā)度。通過控制每條計算線程每次只申請和處理少量數(shù)據(jù)保證所有的計算線程接近同時結(jié)束,這樣的動態(tài)數(shù)據(jù)分配方法就實現(xiàn)了良好的線程間負(fù)載均衡。
(3)復(fù)合并行方案中存在2級動態(tài)負(fù)載均衡過程,首先通過要在進(jìn)程之間動態(tài)份分配數(shù)據(jù)片段,然后將進(jìn)程分得的數(shù)據(jù)片段在該進(jìn)程的多個線程之間進(jìn)一步動態(tài)分配。進(jìn)程分配數(shù)據(jù)片段長度Lp的取值原則是要遠(yuǎn)小于文檔數(shù)量M,即1≤Lp<<M;另外由于每個進(jìn)程所在計算機(jī)的硬件并發(fā)規(guī)模(如CPU數(shù)量、內(nèi)核數(shù)量)不同,所以應(yīng)該讓Lp的取值同該進(jìn)程所在計算機(jī)的硬件并發(fā)規(guī)模成正比。線程分配數(shù)據(jù)片段長度l的取值原則是盡可能小,所以一般取l=1即可。第一級,通過控制每個計算進(jìn)程每次只申請和處理少量數(shù)據(jù)保證所有的計算進(jìn)程接近同時結(jié)束,這樣的動態(tài)數(shù)據(jù)分配方法就實現(xiàn)了良好的進(jìn)程間負(fù)載均衡;第二級,通過控制每條計算線程每次只申請和處理少量數(shù)據(jù)保證所有的計算線程接近同時結(jié)束,這樣的動態(tài)數(shù)據(jù)分配方法就實現(xiàn)了良好的線程間負(fù)載均衡。并且這兩級負(fù)載均衡方法是相互促進(jìn)的。
本發(fā)明的基于動態(tài)分配數(shù)據(jù)片段的負(fù)載均衡的方法可以克服靜態(tài)數(shù)據(jù)分配對并行計算的有負(fù)面影響的不利特性 (1)首先看文檔長度和變分算法復(fù)雜度這兩個特性文檔長度不定會導(dǎo)致不同文檔的計算量不等;進(jìn)一步變分推斷算法的計算量與文檔長度的平方成正比加劇了不同文檔計算量的差距。但是,動態(tài)分配算法并不以計算量為計算資源調(diào)度的判斷依據(jù),而是僅需看是否還有未處理的文檔,如果有就分配線程上去。這就避免了將線程和某個數(shù)據(jù)集綁定而導(dǎo)致先行運(yùn)算完畢的線程的計算資源的浪費(fèi)。當(dāng)然可以通過再分配的策略從未完成的線程中分出部分文檔到已經(jīng)完成的線程中,但是這會增大系統(tǒng)同步控制的復(fù)雜性,而且調(diào)度也會耗費(fèi)一定的時間。
(2)再看線程調(diào)度的特性由于操作系統(tǒng)對線程的調(diào)度并不是嚴(yán)格公平的,經(jīng)過長時間的運(yùn)行后不同線程被操作系統(tǒng)分配的總運(yùn)行時間的差距拉大。但是,由于動態(tài)分配算法能保證了所有線程同時運(yùn)行到最后,這樣從硬件層面看,所有計算線程消耗的硬件計算資源的總和是一樣的,不同的僅僅是每個線程獲得的量。
(3)當(dāng)在多機(jī)機(jī)群環(huán)境中,可能存在性能差異非常大的計算機(jī),此時等分文檔集的靜態(tài)數(shù)據(jù)分配顯然不合理;進(jìn)一步由于多機(jī)機(jī)群上其他計算任務(wù)的存在會引起部分計算機(jī)計算資源隨機(jī)變化,靜態(tài)數(shù)據(jù)分配喪失了根據(jù)這種變化調(diào)整計算的機(jī)會,而本發(fā)明的動態(tài)負(fù)載均衡方法可以將計算量根據(jù)硬件性能和計算資源的實時情況進(jìn)行調(diào)配。
三)并行計算單元內(nèi)存使用的優(yōu)化方法 本發(fā)明的兩種方案對原來的方法中計算單元內(nèi)存使用進(jìn)行了優(yōu)化 (1)多線程并行方案中僅使用了一個全局充分統(tǒng)計量矩陣(sufficient statisticsmatrix),供所有計算線程共享。
(2)復(fù)合并行方案中也自然繼承了多線程并行方案的優(yōu)點,每個計算節(jié)點上只需一個計算進(jìn)程,進(jìn)程中所有線程共用一個局部充分統(tǒng)計量矩陣(sufficient statistics matrix)。
本發(fā)明避免了以往方法的問題首先,以往方法為每個線程設(shè)計獨立的充分統(tǒng)計量矩陣(sufficient statistics matrix),將對內(nèi)存需求造成很大壓力;另外,必須等所有線程運(yùn)行完畢后才統(tǒng)一對充分統(tǒng)計量進(jìn)行聚合,這樣這部分運(yùn)算就成了串行運(yùn)算,降低了算法的并行程度。
四)基于索引請求的數(shù)據(jù)片段分配方法 本發(fā)明采用一種高效的基于索引請求的數(shù)據(jù)片段分配方法,即不需要將數(shù)據(jù)實體在計算單元(進(jìn)程/線程)之間進(jìn)行分配和傳遞,而僅需分配和傳遞索引,每個數(shù)據(jù)片段有其對應(yīng)的索引,每篇文檔有其對應(yīng)的索引號,用整數(shù)表示即可,所占的空間遠(yuǎn)小于文檔實體本身,計算單元可以根據(jù)獲得的索引來定位和處理數(shù)據(jù)實體,因而分配和傳遞的速度提高和相應(yīng)程序的復(fù)雜度下降。
五)基于數(shù)據(jù)復(fù)制的跨機(jī)器數(shù)據(jù)訪問方法 本發(fā)明的兩種方案對原來的方法中,在多機(jī)機(jī)群計算環(huán)境下的數(shù)據(jù)訪問方法進(jìn)行了優(yōu)化 (1)多進(jìn)程并行方案中在每個計算節(jié)點上復(fù)制且僅一份數(shù)據(jù)集DM,該計算節(jié)點上的所有計算進(jìn)程共享這個數(shù)據(jù)集,計算進(jìn)程從總控進(jìn)程獲得數(shù)據(jù)片段的索引后,依據(jù)索引訪問并處理DM中相應(yīng)的文檔即可。
(2)復(fù)合并行方案中在每個計算節(jié)點上復(fù)制且僅一份數(shù)據(jù)集DM供該計算節(jié)點上的計算進(jìn)程訪問。計算進(jìn)程從總控進(jìn)程獲得數(shù)據(jù)片段的索引后,由計算線程進(jìn)一步細(xì)分這些索引,最后各個計算線程依據(jù)索引訪問并處理DM中相應(yīng)的文檔。
六)軟件并行單元數(shù)量的自動確定方法 軟件并行單元(即線程和進(jìn)程)數(shù)量要和硬件并行單元(處理器、內(nèi)核、超線程)數(shù)量一致才可以有效發(fā)揮硬件平臺的并行計算能力如果軟件并行單元數(shù)量小于硬件的并行單元數(shù)量,則不能完全利用硬件平臺的并行計算能力;反之,如果軟件并行單元數(shù)量大于硬件的并行單元數(shù)量,則并行計算能力不再提高而且由于調(diào)度對資源的需求而降低有效計算能力。所以一般需要根據(jù)具體計算機(jī)的硬件并發(fā)規(guī)模手工配置軟件并行單元的數(shù)量,但這樣做不方便,特別是在多機(jī)機(jī)群環(huán)境下。
本發(fā)明通過獲得每個節(jié)點計算機(jī)的處理器的數(shù)量和每個處理器所含的內(nèi)核數(shù)量或支持的超線程數(shù)量來自動確定該節(jié)點的軟件并行單元的適宜數(shù)量在windows平臺上利用匯編指令直接獲得硬件系統(tǒng)的處理器信息,在linux平臺上通過對硬件抽象層HAL的功能調(diào)用獲得硬件系統(tǒng)的處理器信息。這樣在采用集群分布式計算的環(huán)境下避免了手工配置每個節(jié)點的軟件并行單元數(shù)量的繁瑣。對于多進(jìn)程并行方案,利用該方法可以自動確定每個參與的計算節(jié)點所需的進(jìn)程數(shù)量;對于多線程并行方案,利用該方法可以自動確定所在計算機(jī)的計算線程的數(shù)量;對于混合方案,利用該方法可以自動確定每個參與的計算節(jié)點所需的線程數(shù)量(由于每個計算節(jié)點只需一個進(jìn)程,所以不需考慮進(jìn)程數(shù)量問題)。
另外,軟件并行單元數(shù)量確定方法不會排斥手工調(diào)整軟件并行單元數(shù)量,這使得在某些需要控制軟件并行單元使用的情形下也是可行的。
七)計算進(jìn)程數(shù)據(jù)片段長度的自適應(yīng)確定方法 復(fù)合并行方案需要兩級數(shù)據(jù)動態(tài)分配,即首先通過要在進(jìn)程之間動態(tài)分配數(shù)據(jù)片段,然后將進(jìn)程分得的數(shù)據(jù)片段在該進(jìn)程的多個線程之間進(jìn)一步動態(tài)分配。線程分配數(shù)據(jù)片段的長度一般取l=1即可獲得線程級別的最大并行度;而對于多機(jī)機(jī)群計算環(huán)境下進(jìn)程之間的數(shù)據(jù)片段動態(tài)分配,所有計算節(jié)點不宜使用相同的數(shù)據(jù)片段長度L,每個計算進(jìn)程需要根據(jù)自身所在節(jié)點的并行度分別決定Lp。由于程序可以自動確定自身所在節(jié)點的并行度(即CPU數(shù)量、內(nèi)核數(shù)量、超線程數(shù)量等),進(jìn)而就可以確定該進(jìn)程的數(shù)據(jù)片段長度Lp,即應(yīng)符合——計算進(jìn)程p的數(shù)據(jù)片段長度Lp>計算進(jìn)程p所在節(jié)點的并行度這一原則,這樣每次進(jìn)程分配的數(shù)據(jù)片段可以讓所有計算線程都運(yùn)行發(fā)揮了計算節(jié)點的最大計算效率。
八)計算進(jìn)程數(shù)據(jù)片段預(yù)取方法 在多進(jìn)程并行方案和復(fù)合并行方案中,計算進(jìn)程向總控進(jìn)程申請數(shù)據(jù)片段并進(jìn)一步處理。為了避免兩次申請之間的時間間隙造成的計算資源浪費(fèi),采用提前預(yù)取數(shù)據(jù)片段的方法,即在處理前一個數(shù)據(jù)片段的時候就同時再預(yù)取一個數(shù)據(jù)片段,這樣當(dāng)上一個數(shù)據(jù)片段被計算進(jìn)程/計算線程取完之后可以立刻處理新的片段,從而保證了數(shù)據(jù)處理過程的連續(xù)性,讓計算節(jié)點上的整個數(shù)據(jù)處理過程發(fā)揮了最大計算效率。
與現(xiàn)有技術(shù)相比,本發(fā)明的方法一方面能夠充分利用單機(jī)上的多內(nèi)核并行架構(gòu)和多機(jī)上的機(jī)群大規(guī)模并行能力,進(jìn)而實現(xiàn)對大規(guī)模文本集合的高速處理;另一方面,該方法能有效降低并行處理過程中內(nèi)存的使用量。本發(fā)明將隱含狄利克雷分配模型文本數(shù)據(jù)挖掘方法推向?qū)嵱没?br>
圖1為本發(fā)明的多進(jìn)程并行方案多機(jī)環(huán)境示意圖; 圖2為本發(fā)明的多進(jìn)程并行方案單機(jī)環(huán)境示意圖; 圖3為本發(fā)明的多線程并行方案(單機(jī)環(huán)境)示意圖; 圖4為本發(fā)明的復(fù)合并行方案多機(jī)環(huán)境示意圖; 圖5為本發(fā)明的復(fù)合并行方案單機(jī)環(huán)境示意圖; 圖6為多機(jī)機(jī)群計算環(huán)境示意圖; 其中,K即每個方案中的“主題數(shù)”,V是指詞表的大小。K和V則確定了矩陣的大小。
具體實施例方式 本發(fā)明設(shè)計的三種并行數(shù)據(jù)處理方案針對兩種使用最廣范的高性能計算環(huán)境,即,第一種是單機(jī)上的多核(包括多處理器)并行架構(gòu)和多機(jī)上的機(jī)群并行架構(gòu)。多內(nèi)核設(shè)計和實現(xiàn)已經(jīng)在當(dāng)前的各種類型的計算機(jī)中被普遍采用,可以將本發(fā)明直接用在這類機(jī)器上;本發(fā)明對多機(jī)機(jī)群的使用如網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖6所示,它由2個基本的組成部分構(gòu)成的,分別是一個主控節(jié)點和若干個計算節(jié)點。主控節(jié)點只需一個,主要負(fù)責(zé)界面交互、數(shù)據(jù)分發(fā)、結(jié)果匯總等功能。計算節(jié)點有多個(原則上沒有數(shù)量限制)而且可以選用不同類型的計算機(jī),計算節(jié)點承擔(dān)求解任務(wù)的主要計算工作負(fù)荷。主控節(jié)點和計算節(jié)點通過網(wǎng)絡(luò)連接起來。
本發(fā)明根據(jù)計算環(huán)境和并行數(shù)據(jù)處理方案的不同而有不同的具體實施方式
,現(xiàn)分別說明如下 第一種計算環(huán)境——單機(jī)上的多核并行架構(gòu) 在單機(jī)上的多核并行架構(gòu)上,三種并行數(shù)據(jù)處理方案都可以實施。
方案一、多進(jìn)程并行方案的具體實施方式
,如圖2所示 1.準(zhǔn)備階段 1.1.啟動一個總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.啟動多個計算進(jìn)程(計算進(jìn)程的數(shù)量可以由程序自動確定); 2.計算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β,將全局充分統(tǒng)計量S清零,對于每個計算進(jìn)程p∈{1,…,P},P為計算進(jìn)程數(shù); 2.1.1每個計算進(jìn)程循環(huán)向總控進(jìn)程申請長為L的數(shù)據(jù)片段DLp的索引,如此一直到DLp中所有數(shù)據(jù)處理完畢; 2.1.2對DLp中的每個文檔d∈{1,…,L},L為進(jìn)程分配的數(shù)據(jù)片段長度; 2.1.2.1.基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息; 2.1.2.2.利用推斷結(jié)果計算文檔d的局部充分統(tǒng)計量Spd; 2.1.2.3.聚合局部充分統(tǒng)計量Sp=Sp+Spd; 2.2.總控進(jìn)程歸并局部充分統(tǒng)計量得到全局充分統(tǒng)計量S=S+Sp,進(jìn)而估計新的模型參數(shù)α,β得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計算,否則再進(jìn)行下一輪循環(huán)。
方案二、多線程并行方案的具體實施方式
,如圖3所示 1.1.啟動程序,程序自動確定計算線程的數(shù)量,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 2.計算階段(循環(huán)) 2.1隨機(jī)初始化模型參數(shù)α,β;將全局充分統(tǒng)計量S清零,對于每條計算線程t∈{1,…,T},T為計算線程數(shù); 2.1.1.從DM中申請一個長為l的數(shù)據(jù)片段Dlt的索引; 2.1.2.對Dlt對應(yīng)的每個文檔d∈{1,…,l},l為線程分配的數(shù)據(jù)長度; 2.1.2.1.基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息; 2.1.2.2.利用推斷結(jié)果計算文檔d的局部充分統(tǒng)計量Std; 2.1.2.3.聚合全局充分統(tǒng)計量S=S+Std; 2.2.用全局充分統(tǒng)計量S估計新的模型參數(shù)α,β得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.判斷模型Mi是否收斂,收斂則完成計算,否則再進(jìn)行下一輪循環(huán)。
方案三、復(fù)合并行方案的具體實施方式
,如圖5所示 1.準(zhǔn)備階段 1.1.啟動一個總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.啟動一個計算進(jìn)程(計算進(jìn)程的線程數(shù)量Tp由程序自動確定); 2.計算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β;將全局充分統(tǒng)計量S清零,對于計算進(jìn)程p; 2.1.1.向控制進(jìn)程申請一個長為Lp的數(shù)據(jù)片段
的索引,LP為進(jìn)程P分配的數(shù)據(jù)片段長度; 2.1.2.對于該進(jìn)程的每條計算線程t∈{1,…,Tp},Tp為進(jìn)程P的計算線程數(shù); 2.1.2.1從
中申請一個為l的數(shù)據(jù)片段Dlpt的索引; 2.1.2.2對Dlpt對應(yīng)的每個文檔d∈{1,…,l} 2.1.2.2.1基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息 2.1.2.2.2利用推斷結(jié)果計算文檔d的充分統(tǒng)計量Std 2.1.2.2.3聚合局部充分統(tǒng)計量Sp=Sp+Std 2.2.總控進(jìn)程歸并局部充分統(tǒng)計量得到全局充分統(tǒng)計量S=S+Sp,進(jìn)而估計新的模型參數(shù)得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計算,否則進(jìn)行下一輪循環(huán)。
第二種計算環(huán)境——多機(jī)上的機(jī)群并行架構(gòu) 在多機(jī)上的機(jī)群并行架構(gòu)上,可以實施兩種并行數(shù)據(jù)處理方案,即多進(jìn)程并行方案和復(fù)合并行方案,由于單一進(jìn)程不能跨越計算機(jī)所以運(yùn)行在單一進(jìn)程空間中的多線程并行方案不能在多機(jī)上的機(jī)群并行架構(gòu)上實施。
方案一、多進(jìn)程并行方案的具體實施方式
,如圖1所示 1.準(zhǔn)備階段 1.1.在主控節(jié)點的計算機(jī)上啟動一個總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.在每個計算節(jié)點的計算機(jī)上啟動多個計算進(jìn)程(計算進(jìn)程的數(shù)量由程序自動確定); 1.3.在每個計算節(jié)點的計算機(jī)上復(fù)制一份要處理的數(shù)據(jù)DM; 2.計算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β,將全局充分統(tǒng)計量S清零,對于每個計算進(jìn)程p∈{1,…,P},P為計算進(jìn)程數(shù); 2.1.1每個計算進(jìn)程循環(huán)向總控進(jìn)程申請長為L的數(shù)據(jù)片段DLp的索引,如此一直到DM中所有數(shù)據(jù)處理完畢; 2.1.2對DLp中的每個文檔d∈{1,…,L},L為進(jìn)程分配的數(shù)據(jù)片段長度; 2.1.2.1.基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息; 2.1.2.2.利用推斷結(jié)果計算文檔d的局部充分統(tǒng)計量Spd; 2.1.2.3.聚合局部充分統(tǒng)計量Sp=Sp+Spd; 2.2.總控進(jìn)程歸并局部充分統(tǒng)計量得到全局充分統(tǒng)計量S=S+Sp,進(jìn)而估計新的模型參數(shù)α,β得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計算,否則再進(jìn)行下一輪循環(huán)。
方案二、復(fù)合并行方案的具體實施方式
,如圖4所示 1.準(zhǔn)備階段 1.1.在主控節(jié)點的計算機(jī)上啟動一個總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.在每個計算節(jié)點的計算機(jī)上啟動一個計算進(jìn)程(計算進(jìn)程的線程數(shù)量由程序自動確定); 1.3.在每個計算節(jié)點的計算機(jī)上復(fù)制一份要處理的數(shù)據(jù)DM; 2.計算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β;將全局充分統(tǒng)計量S清零,對于每個計算進(jìn)程p∈{1,…,P},P為計算進(jìn)程數(shù); 2.1.1.向控制進(jìn)程申請一個長為Lp的數(shù)據(jù)片段
的索引,LP為進(jìn)程P分配的數(shù)據(jù)片段長度; 2.1.2.對于該進(jìn)程的每條計算線程t∈{1,…,Tp},Tp為進(jìn)程P的計算線程數(shù); 2.1.2.1從
中申請一個為l的數(shù)據(jù)片段Dlpt的索引; 2.1.2.2對Dlpt對應(yīng)的每個文檔d∈{1,…,l} 2.1.2.2.1基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息 2.1.2.2.2利用推斷結(jié)果計算文檔d的充分統(tǒng)計量Std 2.1.2.2.3聚合局部充分統(tǒng)計量Sp=Sp+Std 2.2.總控進(jìn)程歸并局部充分統(tǒng)計量得到全局充分統(tǒng)計量S=S+Sp,進(jìn)而估計新的模型參數(shù)得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計算,否則進(jìn)行下一輪循環(huán)。
下面結(jié)合文檔聚類這一具體的應(yīng)用,對本發(fā)明在多機(jī)機(jī)群(如圖6所示)這一具有最大伸縮性計算環(huán)境下使用復(fù)合并行方案的組合的應(yīng)用情景進(jìn)行描述(關(guān)于其他的計算環(huán)境和并行方案的組合的描述略去) 文檔聚類是指將文檔集合中的文檔進(jìn)行分組,使得在同一個組中的文檔內(nèi)容具有較高的相似度,而不同組中的文檔內(nèi)容差別較大。經(jīng)過這樣的處理后,由于文檔集合具有合理分組的結(jié)構(gòu),使得文檔集合更便于管理;更重要的是通過將大的文檔集合細(xì)分可以極大地減輕用戶查找特定文檔的工作量,提高了文檔使用效率。在信息檢索中文檔聚類技術(shù)具有重要用途,最典型的就是對檢索結(jié)果依據(jù)主題進(jìn)行分組,這樣用戶就可以集中在自己關(guān)心的主題方面的網(wǎng)頁,也就是自動過濾掉了大量無關(guān)的查詢結(jié)果,所以文檔聚類可以進(jìn)一步提高通用搜索引擎的可用性。
相同的技術(shù)還可以應(yīng)用在商品推薦中,基本方法是將商品購買記錄當(dāng)作“文檔”、所購商品當(dāng)作“詞”,通過文檔聚類可以實現(xiàn)購買興趣相近的客戶的發(fā)現(xiàn)和分組,進(jìn)而可以根據(jù)新客戶的購買行為向其推薦商品。
用本發(fā)明在多機(jī)機(jī)群計算環(huán)境下做文檔聚類的具體實施方式
是 一)將搜索引擎的檢索結(jié)果組織成文檔集合(詞向量形式),其中每個文檔就對應(yīng)一條搜索結(jié)果的標(biāo)題和摘要的內(nèi)容。
二)用本發(fā)明(高效的隱含狄利克雷分配數(shù)據(jù)處理方法)對該文檔全集進(jìn)行處理,以獲得到每個文本所屬的主題,具體過程如下 1.任務(wù)初始化 1.1.在每個計算節(jié)點上 1.1.1.根據(jù)該節(jié)點的硬件并發(fā)能力自動生成具有相應(yīng)數(shù)量計算線程的計算服務(wù); 1.1.2.為該節(jié)點復(fù)制一份需要處理的文檔集合; 1.2.在主控節(jié)點上 1.2.1.利用隨機(jī)過程給出初始模型M0; 1.2.2.并將M0復(fù)制到所有的計算節(jié)點上; 2.任務(wù)的迭代執(zhí)行(記本輪迭代次數(shù)為第i次迭代) 2.1.在每個計算節(jié)點上 2.1.1.計算進(jìn)程p向控制節(jié)點上的總控進(jìn)程(循環(huán)地)動態(tài)申請一個長度為Lp的數(shù)據(jù)段
的索引(供步驟2.1.2.進(jìn)一步處理); 2.1.2.計算進(jìn)程p的每條計算線程t 2.1.2.1.從
中(循環(huán)地)動態(tài)申請一個為l的數(shù)據(jù)片段Dlpt的索引(供步驟2.1.2.2.和步驟2.1.2.3.進(jìn)一步處理); 2.1.2.2.計算獲得數(shù)據(jù)片段Dlpt中每篇文檔的充分統(tǒng)計量; 2.1.2.3.更新計算進(jìn)程p的局部充分統(tǒng)計量; 2.1.3.將該計算節(jié)點的局部充分統(tǒng)計量傳送到主控節(jié)點; 2.2.在主控節(jié)點上 2.2.1.聚合所有計算節(jié)點的局部充分統(tǒng)計量得到全局充分充分統(tǒng)計量; 2.2.2.利用全局充分充分統(tǒng)計量估計本次迭代的模型Mi。
2.2.3.判斷模型是否收斂如果沒有收斂,則將Mi復(fù)制到所有的計算節(jié)點上進(jìn)行下一輪計算和模型迭代;否則終止數(shù)據(jù)處理過程,得到最終版本的模型Mlast及數(shù)據(jù)集DM每一篇文檔的主題信息; 三)從每篇文檔的主題分布中可以得到該文檔包含的最大主題(也即該文檔最集中論述的主題),進(jìn)而就將該篇文檔分配到相應(yīng)主題的那個組去,這樣就得到了搜索引擎的檢索結(jié)果的依據(jù)主題的分組。當(dāng)然,也可以根據(jù)所有文檔的主題分布采用K-Means等通用的文檔聚類方法進(jìn)行分組。
權(quán)利要求
1、一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,對于多進(jìn)程并行處理,其步驟包括
1)根據(jù)節(jié)點計算機(jī)的硬件并發(fā)能力自動生成具有相應(yīng)數(shù)量計算進(jìn)程;
2)輸入要處理的數(shù)據(jù)集,隨機(jī)給出初始模型M0;
3)將數(shù)據(jù)集分成若干數(shù)據(jù)片段,每個數(shù)據(jù)片段包含若干文檔,且有一個索引;
4)每個計算進(jìn)程申請一個索引處理相應(yīng)數(shù)據(jù)片段,并計算生成局部充分統(tǒng)計量;
5)歸并局部充分統(tǒng)計量,得到全局充分統(tǒng)計量,進(jìn)而估計得到當(dāng)前模型Mi;
6)判斷模型Mi是否收斂,收斂則完成計算,否則從步驟3)開始循環(huán)。
2、如權(quán)利要求1所述的方法,其特征在于,用于多機(jī)機(jī)群計算環(huán)境時,每個節(jié)點計算機(jī)上復(fù)制一份數(shù)據(jù)集,該節(jié)點計算機(jī)上的所有進(jìn)程共享數(shù)據(jù)集。
3、如權(quán)利要求1所述的方法,其特征在于,所述步驟3)數(shù)據(jù)片段的長度遠(yuǎn)小于文檔數(shù)。
4、一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,對于多線程并行處理,其步驟包括
1)根據(jù)節(jié)點計算機(jī)的硬件并發(fā)能力自動生成具有相應(yīng)數(shù)量計算線程;
2)輸入要處理的數(shù)據(jù)集,隨機(jī)給出初始模型M0;
3)將數(shù)據(jù)集分成若干數(shù)據(jù)片段,每個數(shù)據(jù)片段包含若干文檔,且有一個索引;
4)每個計算線程申請一個索引處理相應(yīng)數(shù)據(jù)片段,并計算生成局部充分統(tǒng)計量;
5)歸并局部充分統(tǒng)計量,得到全局充分統(tǒng)計量,進(jìn)而估計得到當(dāng)前模型Mi;
6)判斷模型Mi是否收斂,收斂則完成計算,否則從步驟3)開始循環(huán)。
5、如權(quán)利要求4所述的方法,其特征在于,所述步驟3)的數(shù)據(jù)片段長度為1個文檔。
6、如權(quán)利要求4所述的方法,其特征在于,所述步驟4)每個計算線程處理完一個數(shù)據(jù)片段后,立即申請下一個數(shù)據(jù)片段。
7、如權(quán)利要求4所述的方法,其特征在于,所述步驟5)所有計算線程共享一個全局充分統(tǒng)計量。
8、一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,對于復(fù)合并行處理,其步驟包括
1)根據(jù)節(jié)點計算機(jī)的硬件并發(fā)能力自動生成具有相應(yīng)數(shù)量計算線程;
2)輸入要處理的數(shù)據(jù)集,隨機(jī)給出初始模型M0;
3)將數(shù)據(jù)集分成若干數(shù)據(jù)片段,每個數(shù)據(jù)片段包含若干文檔,且有一個索引;
4)計算進(jìn)程申請一個索引處理相應(yīng)數(shù)據(jù)片段;
5)將步驟4)中的數(shù)據(jù)片段再分為若干片段,且有一個索引,進(jìn)程中的每個計算線程申請?zhí)幚硪粋€索引處理數(shù)據(jù)片段,并計算生成局部充分統(tǒng)計量;
6)歸并局部充分統(tǒng)計量,得到全局充分統(tǒng)計量,進(jìn)而估計得到當(dāng)前模型Mi;
7)判斷模型Mi是否收斂,收斂則完成計算,否則從步驟3)開始循環(huán)。
9、如權(quán)利要求8所述的方法,其特征在于,用于多機(jī)機(jī)群計算環(huán)境時,所述每個節(jié)點計算機(jī)上復(fù)制一份數(shù)據(jù)集,供該節(jié)點計算機(jī)上的進(jìn)程訪問數(shù)據(jù)集。
10、如權(quán)利要求8所述的方法,其特征在于,用于多機(jī)機(jī)群計算環(huán)境時,所述每個節(jié)點計算機(jī)進(jìn)程申請的數(shù)據(jù)片段長度大于計算進(jìn)程所在節(jié)點的并行度。
11、如權(quán)利要求8所述的方法,其特征在于,用于多機(jī)機(jī)群計算環(huán)境時,每個計算節(jié)點上只需一個計算進(jìn)程,進(jìn)程中所有線程共用一個充分統(tǒng)計量矩陣。
12、如權(quán)利要求8所述的方法,其特征在于,所述步驟4)計算進(jìn)程申請的數(shù)據(jù)片段長度遠(yuǎn)小于文檔數(shù)。
13、如權(quán)利要求8所述的方法,其特征在于,所述步驟5)計算線程申請的數(shù)據(jù)片段長度為一個文檔。
14、如權(quán)利要求1或4或8所述的方法,其特征在于,所述步驟1)通過獲得每個計算機(jī)的處理器的數(shù)量和每個處理器所含的內(nèi)核數(shù)量或支持的超線程數(shù)量來自動確定進(jìn)程/線程的數(shù)量
在windows平臺上利用匯編指令直接獲得硬件系統(tǒng)的處理器信息;
在linux平臺上通過對硬件抽象層HAL的功能調(diào)用獲得硬件系統(tǒng)的處理器信息。
15、如權(quán)利要求1或8所述的方法,其特征在于,所述步驟4)每個進(jìn)程在處理前一個數(shù)據(jù)片段的同時再預(yù)取一個數(shù)據(jù)片段,便于立刻處理新的數(shù)據(jù)片段。
16、如權(quán)利要求1或4或8所述的方法,其特征在于,所述步驟3)數(shù)據(jù)集中的每個數(shù)據(jù)片段都有一個索引,每個文檔都有一個索引號,用整數(shù)來表示,進(jìn)程/線程根據(jù)申請的索引來定位和處理數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,屬于數(shù)據(jù)挖掘領(lǐng)域,該方法包含了多進(jìn)程并行處理、多線程并行處理和復(fù)合多進(jìn)程多線程處理三種方案,在這三種方案中都將要處理的數(shù)據(jù)DM分成長度為等長或不等長的數(shù)據(jù)片段,每個數(shù)據(jù)片段都有一個索引,每個計算進(jìn)程/線程通過申請索引來處理對應(yīng)的數(shù)據(jù)片段,進(jìn)而獲得每個數(shù)據(jù)項的主題信息并生成局部充分統(tǒng)計量;處理完整個DM后,通過歸并局部充分統(tǒng)計量,得到全局充分統(tǒng)計量,即可估計得到當(dāng)前模型Mi,直到該模型收斂。該方法能夠充分利用單機(jī)上的多內(nèi)核并行架構(gòu)和多機(jī)上的機(jī)群大規(guī)模并行能力,進(jìn)而實現(xiàn)對大規(guī)模文本集合的高速處理,并能有效降低并行處理過程中內(nèi)存的使用量。
文檔編號G06F17/30GK101359333SQ200810126728
公開日2009年2月4日 申請日期2008年6月20日 優(yōu)先權(quán)日2008年5月23日
發(fā)明者李文波, 樂 孫 申請人:中國科學(xué)院軟件研究所