欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法

文檔序號(hào):6465266閱讀:198來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法
技術(shù)領(lǐng)域
本發(fā)明涉及以下所述的關(guān)鍵要素 一)適應(yīng)不同計(jì)算環(huán)境的多粒度并行數(shù)據(jù)處理方案 本發(fā)明針對(duì)不同硬件計(jì)算環(huán)境(單機(jī)計(jì)算環(huán)境和多機(jī)計(jì)算環(huán)境)設(shè)計(jì)了三種粒度的并行數(shù)據(jù)處理方案,分別是多進(jìn)程并行方案、多線程并行方案、復(fù)合并行方案,對(duì)應(yīng)關(guān)系如下表所示
1.多進(jìn)程并行方案是最容易實(shí)現(xiàn)的方案。該方案中每個(gè)計(jì)算進(jìn)程自身都是串行的,所以直接使用已有的串行算法即可,只需在控制進(jìn)程中通過(guò)數(shù)據(jù)分配即可實(shí)現(xiàn)多個(gè)計(jì)算進(jìn)程并行,該方案的可以較好適應(yīng)于單機(jī)、多機(jī)兩種計(jì)算環(huán)境。但是從最終的計(jì)算效率上不及其他兩種方案,而且由于單個(gè)計(jì)算節(jié)點(diǎn)上需要運(yùn)行多個(gè)程序而導(dǎo)致管理成本較高。
2.對(duì)于單機(jī)環(huán)境而言,最優(yōu)方案是多線程并行方案,因?yàn)榫€程的調(diào)度消耗和資源消耗都比進(jìn)程小,而且單一程序便于在運(yùn)行時(shí)管理。
3.對(duì)于多機(jī)環(huán)境而言,最優(yōu)方案是復(fù)合并行方案,因?yàn)槭紫瓤梢酝ㄟ^(guò)多進(jìn)程實(shí)現(xiàn)了跨越機(jī)器的并行計(jì)算,每個(gè)計(jì)算節(jié)點(diǎn)上只需一個(gè)計(jì)算進(jìn)程,降低了運(yùn)行時(shí)的管理成本;而且,計(jì)算節(jié)點(diǎn)上采用多線程并行,發(fā)揮了線程的調(diào)度消耗和資源消耗小的優(yōu)勢(shì)。所以復(fù)合并行方案能夠同時(shí)利用單機(jī)上的多內(nèi)核并行架構(gòu)和多機(jī)上的機(jī)群大規(guī)模并行這兩種計(jì)算能力。
二)基于動(dòng)態(tài)分配數(shù)據(jù)片段的負(fù)載均衡的方法 本發(fā)明的動(dòng)態(tài)分配的負(fù)載均衡算法是將數(shù)據(jù)集分成很小的片段(Segment)對(duì)每個(gè)并行計(jì)算單元(進(jìn)程/線程)進(jìn)行分配 (1)多進(jìn)程并行方案中記片段的長(zhǎng)度為L(zhǎng)(L遠(yuǎn)小于數(shù)據(jù)集中包含的文檔數(shù)M,可以將靜態(tài)等分看成一種特例,此時(shí)L=M/P)。注意到當(dāng)一個(gè)計(jì)算進(jìn)程處理完一個(gè)片段后,立即申請(qǐng)下一個(gè)片段,而且每個(gè)進(jìn)程都進(jìn)行這樣申請(qǐng)和計(jì)算,直到所有的文檔被處理完畢。如果數(shù)據(jù)集中還有等于或超過(guò)L個(gè)文檔存在,那么就不會(huì)有任何一條計(jì)算進(jìn)程結(jié)束。也就是說(shuō)所有計(jì)算進(jìn)程至少可以一直運(yùn)行到還有小于L個(gè)未處理的文檔的時(shí)候。又由于L可以選擇很小,所以可以說(shuō)“幾乎”全部計(jì)算資源都被并行計(jì)算過(guò)程利用,即便是在最極端的情形下,最多只會(huì)有L個(gè)文檔的計(jì)算量不能被并發(fā)處理。通過(guò)給L不同的值,可以非常方便地實(shí)現(xiàn)對(duì)并發(fā)粒度的控制,一般要選擇一個(gè)遠(yuǎn)小于文檔數(shù)M的值。通過(guò)控制每個(gè)計(jì)算進(jìn)程每次只申請(qǐng)和處理少量數(shù)據(jù)保證所有的計(jì)算進(jìn)程接近同時(shí)結(jié)束,這樣的動(dòng)態(tài)數(shù)據(jù)分配方法就實(shí)現(xiàn)了良好的進(jìn)程間負(fù)載均衡。
(2)多線程并行方案中記片段的長(zhǎng)度為l(l遠(yuǎn)小于數(shù)據(jù)集中包含的文檔數(shù)M,可以將靜態(tài)等分看成一種特例,此時(shí)l=M/P)。注意到當(dāng)一個(gè)計(jì)算線程處理完一個(gè)片段后,立即申請(qǐng)下一個(gè)片段,而且每個(gè)線程都進(jìn)行這樣申請(qǐng)和計(jì)算,直到所有的文檔被處理完畢。如果數(shù)據(jù)集中還有等于或超過(guò)l個(gè)文檔存在,那么就不會(huì)有任何一條計(jì)算線程結(jié)束。也就是說(shuō)所有計(jì)算線程至少可以一直運(yùn)行到還有小于l個(gè)未處理的文檔的時(shí)候。又由于L可以選擇很小,所以可以說(shuō)“幾乎”全部計(jì)算資源都被并行計(jì)算過(guò)程利用,即便是在最極端的情形下,最多只會(huì)有l(wèi)個(gè)文檔的計(jì)算量不能被并發(fā)處理。一般要選擇l=1實(shí)現(xiàn)最大的并發(fā)度。通過(guò)控制每條計(jì)算線程每次只申請(qǐng)和處理少量數(shù)據(jù)保證所有的計(jì)算線程接近同時(shí)結(jié)束,這樣的動(dòng)態(tài)數(shù)據(jù)分配方法就實(shí)現(xiàn)了良好的線程間負(fù)載均衡。
(3)復(fù)合并行方案中存在2級(jí)動(dòng)態(tài)負(fù)載均衡過(guò)程,首先通過(guò)要在進(jìn)程之間動(dòng)態(tài)份分配數(shù)據(jù)片段,然后將進(jìn)程分得的數(shù)據(jù)片段在該進(jìn)程的多個(gè)線程之間進(jìn)一步動(dòng)態(tài)分配。進(jìn)程分配數(shù)據(jù)片段長(zhǎng)度Lp的取值原則是要遠(yuǎn)小于文檔數(shù)量M,即1≤Lp<<M;另外由于每個(gè)進(jìn)程所在計(jì)算機(jī)的硬件并發(fā)規(guī)模(如CPU數(shù)量、內(nèi)核數(shù)量)不同,所以應(yīng)該讓Lp的取值同該進(jìn)程所在計(jì)算機(jī)的硬件并發(fā)規(guī)模成正比。線程分配數(shù)據(jù)片段長(zhǎng)度l的取值原則是盡可能小,所以一般取l=1即可。第一級(jí),通過(guò)控制每個(gè)計(jì)算進(jìn)程每次只申請(qǐng)和處理少量數(shù)據(jù)保證所有的計(jì)算進(jìn)程接近同時(shí)結(jié)束,這樣的動(dòng)態(tài)數(shù)據(jù)分配方法就實(shí)現(xiàn)了良好的進(jìn)程間負(fù)載均衡;第二級(jí),通過(guò)控制每條計(jì)算線程每次只申請(qǐng)和處理少量數(shù)據(jù)保證所有的計(jì)算線程接近同時(shí)結(jié)束,這樣的動(dòng)態(tài)數(shù)據(jù)分配方法就實(shí)現(xiàn)了良好的線程間負(fù)載均衡。并且這兩級(jí)負(fù)載均衡方法是相互促進(jìn)的。
本發(fā)明的基于動(dòng)態(tài)分配數(shù)據(jù)片段的負(fù)載均衡的方法可以克服靜態(tài)數(shù)據(jù)分配對(duì)并行計(jì)算的有負(fù)面影響的不利特性 (1)首先看文檔長(zhǎng)度和變分算法復(fù)雜度這兩個(gè)特性文檔長(zhǎng)度不定會(huì)導(dǎo)致不同文檔的計(jì)算量不等;進(jìn)一步變分推斷算法的計(jì)算量與文檔長(zhǎng)度的平方成正比加劇了不同文檔計(jì)算量的差距。但是,動(dòng)態(tài)分配算法并不以計(jì)算量為計(jì)算資源調(diào)度的判斷依據(jù),而是僅需看是否還有未處理的文檔,如果有就分配線程上去。這就避免了將線程和某個(gè)數(shù)據(jù)集綁定而導(dǎo)致先行運(yùn)算完畢的線程的計(jì)算資源的浪費(fèi)。當(dāng)然可以通過(guò)再分配的策略從未完成的線程中分出部分文檔到已經(jīng)完成的線程中,但是這會(huì)增大系統(tǒng)同步控制的復(fù)雜性,而且調(diào)度也會(huì)耗費(fèi)一定的時(shí)間。
(2)再看線程調(diào)度的特性由于操作系統(tǒng)對(duì)線程的調(diào)度并不是嚴(yán)格公平的,經(jīng)過(guò)長(zhǎng)時(shí)間的運(yùn)行后不同線程被操作系統(tǒng)分配的總運(yùn)行時(shí)間的差距拉大。但是,由于動(dòng)態(tài)分配算法能保證了所有線程同時(shí)運(yùn)行到最后,這樣從硬件層面看,所有計(jì)算線程消耗的硬件計(jì)算資源的總和是一樣的,不同的僅僅是每個(gè)線程獲得的量。
(3)當(dāng)在多機(jī)機(jī)群環(huán)境中,可能存在性能差異非常大的計(jì)算機(jī),此時(shí)等分文檔集的靜態(tài)數(shù)據(jù)分配顯然不合理;進(jìn)一步由于多機(jī)機(jī)群上其他計(jì)算任務(wù)的存在會(huì)引起部分計(jì)算機(jī)計(jì)算資源隨機(jī)變化,靜態(tài)數(shù)據(jù)分配喪失了根據(jù)這種變化調(diào)整計(jì)算的機(jī)會(huì),而本發(fā)明的動(dòng)態(tài)負(fù)載均衡方法可以將計(jì)算量根據(jù)硬件性能和計(jì)算資源的實(shí)時(shí)情況進(jìn)行調(diào)配。
三)并行計(jì)算單元內(nèi)存使用的優(yōu)化方法 本發(fā)明的兩種方案對(duì)原來(lái)的方法中計(jì)算單元內(nèi)存使用進(jìn)行了優(yōu)化 (1)多線程并行方案中僅使用了一個(gè)全局充分統(tǒng)計(jì)量矩陣(sufficient statisticsmatrix),供所有計(jì)算線程共享。
(2)復(fù)合并行方案中也自然繼承了多線程并行方案的優(yōu)點(diǎn),每個(gè)計(jì)算節(jié)點(diǎn)上只需一個(gè)計(jì)算進(jìn)程,進(jìn)程中所有線程共用一個(gè)局部充分統(tǒng)計(jì)量矩陣(sufficient statistics matrix)。
本發(fā)明避免了以往方法的問(wèn)題首先,以往方法為每個(gè)線程設(shè)計(jì)獨(dú)立的充分統(tǒng)計(jì)量矩陣(sufficient statistics matrix),將對(duì)內(nèi)存需求造成很大壓力;另外,必須等所有線程運(yùn)行完畢后才統(tǒng)一對(duì)充分統(tǒng)計(jì)量進(jìn)行聚合,這樣這部分運(yùn)算就成了串行運(yùn)算,降低了算法的并行程度。
四)基于索引請(qǐng)求的數(shù)據(jù)片段分配方法 本發(fā)明采用一種高效的基于索引請(qǐng)求的數(shù)據(jù)片段分配方法,即不需要將數(shù)據(jù)實(shí)體在計(jì)算單元(進(jìn)程/線程)之間進(jìn)行分配和傳遞,而僅需分配和傳遞索引,每個(gè)數(shù)據(jù)片段有其對(duì)應(yīng)的索引,每篇文檔有其對(duì)應(yīng)的索引號(hào),用整數(shù)表示即可,所占的空間遠(yuǎn)小于文檔實(shí)體本身,計(jì)算單元可以根據(jù)獲得的索引來(lái)定位和處理數(shù)據(jù)實(shí)體,因而分配和傳遞的速度提高和相應(yīng)程序的復(fù)雜度下降。
五)基于數(shù)據(jù)復(fù)制的跨機(jī)器數(shù)據(jù)訪問(wèn)方法 本發(fā)明的兩種方案對(duì)原來(lái)的方法中,在多機(jī)機(jī)群計(jì)算環(huán)境下的數(shù)據(jù)訪問(wèn)方法進(jìn)行了優(yōu)化 (1)多進(jìn)程并行方案中在每個(gè)計(jì)算節(jié)點(diǎn)上復(fù)制且僅一份數(shù)據(jù)集DM,該計(jì)算節(jié)點(diǎn)上的所有計(jì)算進(jìn)程共享這個(gè)數(shù)據(jù)集,計(jì)算進(jìn)程從總控進(jìn)程獲得數(shù)據(jù)片段的索引后,依據(jù)索引訪問(wèn)并處理DM中相應(yīng)的文檔即可。
(2)復(fù)合并行方案中在每個(gè)計(jì)算節(jié)點(diǎn)上復(fù)制且僅一份數(shù)據(jù)集DM供該計(jì)算節(jié)點(diǎn)上的計(jì)算進(jìn)程訪問(wèn)。計(jì)算進(jìn)程從總控進(jìn)程獲得數(shù)據(jù)片段的索引后,由計(jì)算線程進(jìn)一步細(xì)分這些索引,最后各個(gè)計(jì)算線程依據(jù)索引訪問(wèn)并處理DM中相應(yīng)的文檔。
六)軟件并行單元數(shù)量的自動(dòng)確定方法 軟件并行單元(即線程和進(jìn)程)數(shù)量要和硬件并行單元(處理器、內(nèi)核、超線程)數(shù)量一致才可以有效發(fā)揮硬件平臺(tái)的并行計(jì)算能力如果軟件并行單元數(shù)量小于硬件的并行單元數(shù)量,則不能完全利用硬件平臺(tái)的并行計(jì)算能力;反之,如果軟件并行單元數(shù)量大于硬件的并行單元數(shù)量,則并行計(jì)算能力不再提高而且由于調(diào)度對(duì)資源的需求而降低有效計(jì)算能力。所以一般需要根據(jù)具體計(jì)算機(jī)的硬件并發(fā)規(guī)模手工配置軟件并行單元的數(shù)量,但這樣做不方便,特別是在多機(jī)機(jī)群環(huán)境下。
本發(fā)明通過(guò)獲得每個(gè)節(jié)點(diǎn)計(jì)算機(jī)的處理器的數(shù)量和每個(gè)處理器所含的內(nèi)核數(shù)量或支持的超線程數(shù)量來(lái)自動(dòng)確定該節(jié)點(diǎn)的軟件并行單元的適宜數(shù)量在windows平臺(tái)上利用匯編指令直接獲得硬件系統(tǒng)的處理器信息,在linux平臺(tái)上通過(guò)對(duì)硬件抽象層HAL的功能調(diào)用獲得硬件系統(tǒng)的處理器信息。這樣在采用集群分布式計(jì)算的環(huán)境下避免了手工配置每個(gè)節(jié)點(diǎn)的軟件并行單元數(shù)量的繁瑣。對(duì)于多進(jìn)程并行方案,利用該方法可以自動(dòng)確定每個(gè)參與的計(jì)算節(jié)點(diǎn)所需的進(jìn)程數(shù)量;對(duì)于多線程并行方案,利用該方法可以自動(dòng)確定所在計(jì)算機(jī)的計(jì)算線程的數(shù)量;對(duì)于混合方案,利用該方法可以自動(dòng)確定每個(gè)參與的計(jì)算節(jié)點(diǎn)所需的線程數(shù)量(由于每個(gè)計(jì)算節(jié)點(diǎn)只需一個(gè)進(jìn)程,所以不需考慮進(jìn)程數(shù)量問(wèn)題)。
另外,軟件并行單元數(shù)量確定方法不會(huì)排斥手工調(diào)整軟件并行單元數(shù)量,這使得在某些需要控制軟件并行單元使用的情形下也是可行的。
七)計(jì)算進(jìn)程數(shù)據(jù)片段長(zhǎng)度的自適應(yīng)確定方法 復(fù)合并行方案需要兩級(jí)數(shù)據(jù)動(dòng)態(tài)分配,即首先通過(guò)要在進(jìn)程之間動(dòng)態(tài)分配數(shù)據(jù)片段,然后將進(jìn)程分得的數(shù)據(jù)片段在該進(jìn)程的多個(gè)線程之間進(jìn)一步動(dòng)態(tài)分配。線程分配數(shù)據(jù)片段的長(zhǎng)度一般取l=1即可獲得線程級(jí)別的最大并行度;而對(duì)于多機(jī)機(jī)群計(jì)算環(huán)境下進(jìn)程之間的數(shù)據(jù)片段動(dòng)態(tài)分配,所有計(jì)算節(jié)點(diǎn)不宜使用相同的數(shù)據(jù)片段長(zhǎng)度L,每個(gè)計(jì)算進(jìn)程需要根據(jù)自身所在節(jié)點(diǎn)的并行度分別決定Lp。由于程序可以自動(dòng)確定自身所在節(jié)點(diǎn)的并行度(即CPU數(shù)量、內(nèi)核數(shù)量、超線程數(shù)量等),進(jìn)而就可以確定該進(jìn)程的數(shù)據(jù)片段長(zhǎng)度Lp,即應(yīng)符合——計(jì)算進(jìn)程p的數(shù)據(jù)片段長(zhǎng)度Lp>計(jì)算進(jìn)程p所在節(jié)點(diǎn)的并行度這一原則,這樣每次進(jìn)程分配的數(shù)據(jù)片段可以讓所有計(jì)算線程都運(yùn)行發(fā)揮了計(jì)算節(jié)點(diǎn)的最大計(jì)算效率。
八)計(jì)算進(jìn)程數(shù)據(jù)片段預(yù)取方法 在多進(jìn)程并行方案和復(fù)合并行方案中,計(jì)算進(jìn)程向總控進(jìn)程申請(qǐng)數(shù)據(jù)片段并進(jìn)一步處理。為了避免兩次申請(qǐng)之間的時(shí)間間隙造成的計(jì)算資源浪費(fèi),采用提前預(yù)取數(shù)據(jù)片段的方法,即在處理前一個(gè)數(shù)據(jù)片段的時(shí)候就同時(shí)再預(yù)取一個(gè)數(shù)據(jù)片段,這樣當(dāng)上一個(gè)數(shù)據(jù)片段被計(jì)算進(jìn)程/計(jì)算線程取完之后可以立刻處理新的片段,從而保證了數(shù)據(jù)處理過(guò)程的連續(xù)性,讓計(jì)算節(jié)點(diǎn)上的整個(gè)數(shù)據(jù)處理過(guò)程發(fā)揮了最大計(jì)算效率。
與現(xiàn)有技術(shù)相比,本發(fā)明的方法一方面能夠充分利用單機(jī)上的多內(nèi)核并行架構(gòu)和多機(jī)上的機(jī)群大規(guī)模并行能力,進(jìn)而實(shí)現(xiàn)對(duì)大規(guī)模文本集合的高速處理;另一方面,該方法能有效降低并行處理過(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ī)群計(jì)算環(huán)境示意圖; 其中,K即每個(gè)方案中的“主題數(shù)”,V是指詞表的大小。K和V則確定了矩陣的大小。

具體實(shí)施例方式 本發(fā)明設(shè)計(jì)的三種并行數(shù)據(jù)處理方案針對(duì)兩種使用最廣范的高性能計(jì)算環(huán)境,即,第一種是單機(jī)上的多核(包括多處理器)并行架構(gòu)和多機(jī)上的機(jī)群并行架構(gòu)。多內(nèi)核設(shè)計(jì)和實(shí)現(xiàn)已經(jīng)在當(dāng)前的各種類(lèi)型的計(jì)算機(jī)中被普遍采用,可以將本發(fā)明直接用在這類(lèi)機(jī)器上;本發(fā)明對(duì)多機(jī)機(jī)群的使用如網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖6所示,它由2個(gè)基本的組成部分構(gòu)成的,分別是一個(gè)主控節(jié)點(diǎn)和若干個(gè)計(jì)算節(jié)點(diǎn)。主控節(jié)點(diǎn)只需一個(gè),主要負(fù)責(zé)界面交互、數(shù)據(jù)分發(fā)、結(jié)果匯總等功能。計(jì)算節(jié)點(diǎn)有多個(gè)(原則上沒(méi)有數(shù)量限制)而且可以選用不同類(lèi)型的計(jì)算機(jī),計(jì)算節(jié)點(diǎn)承擔(dān)求解任務(wù)的主要計(jì)算工作負(fù)荷。主控節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)連接起來(lái)。
本發(fā)明根據(jù)計(jì)算環(huán)境和并行數(shù)據(jù)處理方案的不同而有不同的具體實(shí)施方式
,現(xiàn)分別說(shuō)明如下 第一種計(jì)算環(huán)境——單機(jī)上的多核并行架構(gòu) 在單機(jī)上的多核并行架構(gòu)上,三種并行數(shù)據(jù)處理方案都可以實(shí)施。
方案一、多進(jìn)程并行方案的具體實(shí)施方式
,如圖2所示 1.準(zhǔn)備階段 1.1.啟動(dòng)一個(gè)總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.啟動(dòng)多個(gè)計(jì)算進(jìn)程(計(jì)算進(jìn)程的數(shù)量可以由程序自動(dòng)確定); 2.計(jì)算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β,將全局充分統(tǒng)計(jì)量S清零,對(duì)于每個(gè)計(jì)算進(jìn)程p∈{1,…,P},P為計(jì)算進(jìn)程數(shù); 2.1.1每個(gè)計(jì)算進(jìn)程循環(huán)向總控進(jìn)程申請(qǐng)長(zhǎng)為L(zhǎng)的數(shù)據(jù)片段DLp的索引,如此一直到DLp中所有數(shù)據(jù)處理完畢; 2.1.2對(duì)DLp中的每個(gè)文檔d∈{1,…,L},L為進(jìn)程分配的數(shù)據(jù)片段長(zhǎng)度; 2.1.2.1.基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息; 2.1.2.2.利用推斷結(jié)果計(jì)算文檔d的局部充分統(tǒng)計(jì)量Spd; 2.1.2.3.聚合局部充分統(tǒng)計(jì)量Sp=Sp+Spd; 2.2.總控進(jìn)程歸并局部充分統(tǒng)計(jì)量得到全局充分統(tǒng)計(jì)量S=S+Sp,進(jìn)而估計(jì)新的模型參數(shù)α,β得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計(jì)算,否則再進(jìn)行下一輪循環(huán)。
方案二、多線程并行方案的具體實(shí)施方式
,如圖3所示 1.1.啟動(dòng)程序,程序自動(dòng)確定計(jì)算線程的數(shù)量,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 2.計(jì)算階段(循環(huán)) 2.1隨機(jī)初始化模型參數(shù)α,β;將全局充分統(tǒng)計(jì)量S清零,對(duì)于每條計(jì)算線程t∈{1,…,T},T為計(jì)算線程數(shù); 2.1.1.從DM中申請(qǐng)一個(gè)長(zhǎng)為l的數(shù)據(jù)片段Dlt的索引; 2.1.2.對(duì)Dlt對(duì)應(yīng)的每個(gè)文檔d∈{1,…,l},l為線程分配的數(shù)據(jù)長(zhǎng)度; 2.1.2.1.基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息; 2.1.2.2.利用推斷結(jié)果計(jì)算文檔d的局部充分統(tǒng)計(jì)量Std; 2.1.2.3.聚合全局充分統(tǒng)計(jì)量S=S+Std; 2.2.用全局充分統(tǒng)計(jì)量S估計(jì)新的模型參數(shù)α,β得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.判斷模型Mi是否收斂,收斂則完成計(jì)算,否則再進(jìn)行下一輪循環(huán)。
方案三、復(fù)合并行方案的具體實(shí)施方式
,如圖5所示 1.準(zhǔn)備階段 1.1.啟動(dòng)一個(gè)總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.啟動(dòng)一個(gè)計(jì)算進(jìn)程(計(jì)算進(jìn)程的線程數(shù)量Tp由程序自動(dòng)確定); 2.計(jì)算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β;將全局充分統(tǒng)計(jì)量S清零,對(duì)于計(jì)算進(jìn)程p; 2.1.1.向控制進(jìn)程申請(qǐng)一個(gè)長(zhǎng)為L(zhǎng)p的數(shù)據(jù)片段

的索引,LP為進(jìn)程P分配的數(shù)據(jù)片段長(zhǎng)度; 2.1.2.對(duì)于該進(jìn)程的每條計(jì)算線程t∈{1,…,Tp},Tp為進(jìn)程P的計(jì)算線程數(shù); 2.1.2.1從

中申請(qǐng)一個(gè)為l的數(shù)據(jù)片段Dlpt的索引; 2.1.2.2對(duì)Dlpt對(duì)應(yīng)的每個(gè)文檔d∈{1,…,l} 2.1.2.2.1基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息 2.1.2.2.2利用推斷結(jié)果計(jì)算文檔d的充分統(tǒng)計(jì)量Std 2.1.2.2.3聚合局部充分統(tǒng)計(jì)量Sp=Sp+Std 2.2.總控進(jìn)程歸并局部充分統(tǒng)計(jì)量得到全局充分統(tǒng)計(jì)量S=S+Sp,進(jìn)而估計(jì)新的模型參數(shù)得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計(jì)算,否則進(jìn)行下一輪循環(huán)。
第二種計(jì)算環(huán)境——多機(jī)上的機(jī)群并行架構(gòu) 在多機(jī)上的機(jī)群并行架構(gòu)上,可以實(shí)施兩種并行數(shù)據(jù)處理方案,即多進(jìn)程并行方案和復(fù)合并行方案,由于單一進(jìn)程不能跨越計(jì)算機(jī)所以運(yùn)行在單一進(jìn)程空間中的多線程并行方案不能在多機(jī)上的機(jī)群并行架構(gòu)上實(shí)施。
方案一、多進(jìn)程并行方案的具體實(shí)施方式
,如圖1所示 1.準(zhǔn)備階段 1.1.在主控節(jié)點(diǎn)的計(jì)算機(jī)上啟動(dòng)一個(gè)總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.在每個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算機(jī)上啟動(dòng)多個(gè)計(jì)算進(jìn)程(計(jì)算進(jìn)程的數(shù)量由程序自動(dòng)確定); 1.3.在每個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算機(jī)上復(fù)制一份要處理的數(shù)據(jù)DM; 2.計(jì)算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β,將全局充分統(tǒng)計(jì)量S清零,對(duì)于每個(gè)計(jì)算進(jìn)程p∈{1,…,P},P為計(jì)算進(jìn)程數(shù); 2.1.1每個(gè)計(jì)算進(jìn)程循環(huán)向總控進(jìn)程申請(qǐng)長(zhǎng)為L(zhǎng)的數(shù)據(jù)片段DLp的索引,如此一直到DM中所有數(shù)據(jù)處理完畢; 2.1.2對(duì)DLp中的每個(gè)文檔d∈{1,…,L},L為進(jìn)程分配的數(shù)據(jù)片段長(zhǎng)度; 2.1.2.1.基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息; 2.1.2.2.利用推斷結(jié)果計(jì)算文檔d的局部充分統(tǒng)計(jì)量Spd; 2.1.2.3.聚合局部充分統(tǒng)計(jì)量Sp=Sp+Spd; 2.2.總控進(jìn)程歸并局部充分統(tǒng)計(jì)量得到全局充分統(tǒng)計(jì)量S=S+Sp,進(jìn)而估計(jì)新的模型參數(shù)α,β得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計(jì)算,否則再進(jìn)行下一輪循環(huán)。
方案二、復(fù)合并行方案的具體實(shí)施方式
,如圖4所示 1.準(zhǔn)備階段 1.1.在主控節(jié)點(diǎn)的計(jì)算機(jī)上啟動(dòng)一個(gè)總控進(jìn)程,準(zhǔn)備要處理的數(shù)據(jù)DM,隨機(jī)給出初始模型M0; 1.2.在每個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算機(jī)上啟動(dòng)一個(gè)計(jì)算進(jìn)程(計(jì)算進(jìn)程的線程數(shù)量由程序自動(dòng)確定); 1.3.在每個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算機(jī)上復(fù)制一份要處理的數(shù)據(jù)DM; 2.計(jì)算階段(循環(huán)) 2.1.隨機(jī)初始化模型參數(shù)α,β;將全局充分統(tǒng)計(jì)量S清零,對(duì)于每個(gè)計(jì)算進(jìn)程p∈{1,…,P},P為計(jì)算進(jìn)程數(shù); 2.1.1.向控制進(jìn)程申請(qǐng)一個(gè)長(zhǎng)為L(zhǎng)p的數(shù)據(jù)片段

的索引,LP為進(jìn)程P分配的數(shù)據(jù)片段長(zhǎng)度; 2.1.2.對(duì)于該進(jìn)程的每條計(jì)算線程t∈{1,…,Tp},Tp為進(jìn)程P的計(jì)算線程數(shù); 2.1.2.1從

中申請(qǐng)一個(gè)為l的數(shù)據(jù)片段Dlpt的索引; 2.1.2.2對(duì)Dlpt對(duì)應(yīng)的每個(gè)文檔d∈{1,…,l} 2.1.2.2.1基于當(dāng)前模型參數(shù)α,β進(jìn)行變分推斷,得到文檔d的主題信息 2.1.2.2.2利用推斷結(jié)果計(jì)算文檔d的充分統(tǒng)計(jì)量Std 2.1.2.2.3聚合局部充分統(tǒng)計(jì)量Sp=Sp+Std 2.2.總控進(jìn)程歸并局部充分統(tǒng)計(jì)量得到全局充分統(tǒng)計(jì)量S=S+Sp,進(jìn)而估計(jì)新的模型參數(shù)得到當(dāng)前階段的模型Mi及數(shù)據(jù)集DM每一篇文檔的主題信息; 2.3.總控進(jìn)程判斷模型Mi是否收斂,收斂則完成計(jì)算,否則進(jìn)行下一輪循環(huán)。
下面結(jié)合文檔聚類(lèi)這一具體的應(yīng)用,對(duì)本發(fā)明在多機(jī)機(jī)群(如圖6所示)這一具有最大伸縮性計(jì)算環(huán)境下使用復(fù)合并行方案的組合的應(yīng)用情景進(jìn)行描述(關(guān)于其他的計(jì)算環(huán)境和并行方案的組合的描述略去) 文檔聚類(lèi)是指將文檔集合中的文檔進(jìn)行分組,使得在同一個(gè)組中的文檔內(nèi)容具有較高的相似度,而不同組中的文檔內(nèi)容差別較大。經(jīng)過(guò)這樣的處理后,由于文檔集合具有合理分組的結(jié)構(gòu),使得文檔集合更便于管理;更重要的是通過(guò)將大的文檔集合細(xì)分可以極大地減輕用戶(hù)查找特定文檔的工作量,提高了文檔使用效率。在信息檢索中文檔聚類(lèi)技術(shù)具有重要用途,最典型的就是對(duì)檢索結(jié)果依據(jù)主題進(jìn)行分組,這樣用戶(hù)就可以集中在自己關(guān)心的主題方面的網(wǎng)頁(yè),也就是自動(dòng)過(guò)濾掉了大量無(wú)關(guān)的查詢(xún)結(jié)果,所以文檔聚類(lèi)可以進(jìn)一步提高通用搜索引擎的可用性。
相同的技術(shù)還可以應(yīng)用在商品推薦中,基本方法是將商品購(gòu)買(mǎi)記錄當(dāng)作“文檔”、所購(gòu)商品當(dāng)作“詞”,通過(guò)文檔聚類(lèi)可以實(shí)現(xiàn)購(gòu)買(mǎi)興趣相近的客戶(hù)的發(fā)現(xiàn)和分組,進(jìn)而可以根據(jù)新客戶(hù)的購(gòu)買(mǎi)行為向其推薦商品。
用本發(fā)明在多機(jī)機(jī)群計(jì)算環(huán)境下做文檔聚類(lèi)的具體實(shí)施方式
是 一)將搜索引擎的檢索結(jié)果組織成文檔集合(詞向量形式),其中每個(gè)文檔就對(duì)應(yīng)一條搜索結(jié)果的標(biāo)題和摘要的內(nèi)容。
二)用本發(fā)明(高效的隱含狄利克雷分配數(shù)據(jù)處理方法)對(duì)該文檔全集進(jìn)行處理,以獲得到每個(gè)文本所屬的主題,具體過(guò)程如下 1.任務(wù)初始化 1.1.在每個(gè)計(jì)算節(jié)點(diǎn)上 1.1.1.根據(jù)該節(jié)點(diǎn)的硬件并發(fā)能力自動(dòng)生成具有相應(yīng)數(shù)量計(jì)算線程的計(jì)算服務(wù); 1.1.2.為該節(jié)點(diǎn)復(fù)制一份需要處理的文檔集合; 1.2.在主控節(jié)點(diǎn)上 1.2.1.利用隨機(jī)過(guò)程給出初始模型M0; 1.2.2.并將M0復(fù)制到所有的計(jì)算節(jié)點(diǎn)上; 2.任務(wù)的迭代執(zhí)行(記本輪迭代次數(shù)為第i次迭代) 2.1.在每個(gè)計(jì)算節(jié)點(diǎn)上 2.1.1.計(jì)算進(jìn)程p向控制節(jié)點(diǎn)上的總控進(jìn)程(循環(huán)地)動(dòng)態(tài)申請(qǐng)一個(gè)長(zhǎng)度為L(zhǎng)p的數(shù)據(jù)段

的索引(供步驟2.1.2.進(jìn)一步處理); 2.1.2.計(jì)算進(jìn)程p的每條計(jì)算線程t 2.1.2.1.從

中(循環(huán)地)動(dòng)態(tài)申請(qǐng)一個(gè)為l的數(shù)據(jù)片段Dlpt的索引(供步驟2.1.2.2.和步驟2.1.2.3.進(jìn)一步處理); 2.1.2.2.計(jì)算獲得數(shù)據(jù)片段Dlpt中每篇文檔的充分統(tǒng)計(jì)量; 2.1.2.3.更新計(jì)算進(jìn)程p的局部充分統(tǒng)計(jì)量; 2.1.3.將該計(jì)算節(jié)點(diǎn)的局部充分統(tǒng)計(jì)量傳送到主控節(jié)點(diǎn); 2.2.在主控節(jié)點(diǎn)上 2.2.1.聚合所有計(jì)算節(jié)點(diǎn)的局部充分統(tǒng)計(jì)量得到全局充分充分統(tǒng)計(jì)量; 2.2.2.利用全局充分充分統(tǒng)計(jì)量估計(jì)本次迭代的模型Mi。
2.2.3.判斷模型是否收斂如果沒(méi)有收斂,則將Mi復(fù)制到所有的計(jì)算節(jié)點(diǎn)上進(jìn)行下一輪計(jì)算和模型迭代;否則終止數(shù)據(jù)處理過(guò)程,得到最終版本的模型Mlast及數(shù)據(jù)集DM每一篇文檔的主題信息; 三)從每篇文檔的主題分布中可以得到該文檔包含的最大主題(也即該文檔最集中論述的主題),進(jìn)而就將該篇文檔分配到相應(yīng)主題的那個(gè)組去,這樣就得到了搜索引擎的檢索結(jié)果的依據(jù)主題的分組。當(dāng)然,也可以根據(jù)所有文檔的主題分布采用K-Means等通用的文檔聚類(lèi)方法進(jìn)行分組。
權(quán)利要求
1、一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,對(duì)于多進(jìn)程并行處理,其步驟包括
1)根據(jù)節(jié)點(diǎn)計(jì)算機(jī)的硬件并發(fā)能力自動(dòng)生成具有相應(yīng)數(shù)量計(jì)算進(jìn)程;
2)輸入要處理的數(shù)據(jù)集,隨機(jī)給出初始模型M0;
3)將數(shù)據(jù)集分成若干數(shù)據(jù)片段,每個(gè)數(shù)據(jù)片段包含若干文檔,且有一個(gè)索引;
4)每個(gè)計(jì)算進(jìn)程申請(qǐng)一個(gè)索引處理相應(yīng)數(shù)據(jù)片段,并計(jì)算生成局部充分統(tǒng)計(jì)量;
5)歸并局部充分統(tǒng)計(jì)量,得到全局充分統(tǒng)計(jì)量,進(jìn)而估計(jì)得到當(dāng)前模型Mi;
6)判斷模型Mi是否收斂,收斂則完成計(jì)算,否則從步驟3)開(kāi)始循環(huán)。
2、如權(quán)利要求1所述的方法,其特征在于,用于多機(jī)機(jī)群計(jì)算環(huán)境時(shí),每個(gè)節(jié)點(diǎn)計(jì)算機(jī)上復(fù)制一份數(shù)據(jù)集,該節(jié)點(diǎn)計(jì)算機(jī)上的所有進(jìn)程共享數(shù)據(jù)集。
3、如權(quán)利要求1所述的方法,其特征在于,所述步驟3)數(shù)據(jù)片段的長(zhǎng)度遠(yuǎn)小于文檔數(shù)。
4、一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,對(duì)于多線程并行處理,其步驟包括
1)根據(jù)節(jié)點(diǎn)計(jì)算機(jī)的硬件并發(fā)能力自動(dòng)生成具有相應(yīng)數(shù)量計(jì)算線程;
2)輸入要處理的數(shù)據(jù)集,隨機(jī)給出初始模型M0;
3)將數(shù)據(jù)集分成若干數(shù)據(jù)片段,每個(gè)數(shù)據(jù)片段包含若干文檔,且有一個(gè)索引;
4)每個(gè)計(jì)算線程申請(qǐng)一個(gè)索引處理相應(yīng)數(shù)據(jù)片段,并計(jì)算生成局部充分統(tǒng)計(jì)量;
5)歸并局部充分統(tǒng)計(jì)量,得到全局充分統(tǒng)計(jì)量,進(jìn)而估計(jì)得到當(dāng)前模型Mi;
6)判斷模型Mi是否收斂,收斂則完成計(jì)算,否則從步驟3)開(kāi)始循環(huán)。
5、如權(quán)利要求4所述的方法,其特征在于,所述步驟3)的數(shù)據(jù)片段長(zhǎng)度為1個(gè)文檔。
6、如權(quán)利要求4所述的方法,其特征在于,所述步驟4)每個(gè)計(jì)算線程處理完一個(gè)數(shù)據(jù)片段后,立即申請(qǐng)下一個(gè)數(shù)據(jù)片段。
7、如權(quán)利要求4所述的方法,其特征在于,所述步驟5)所有計(jì)算線程共享一個(gè)全局充分統(tǒng)計(jì)量。
8、一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,對(duì)于復(fù)合并行處理,其步驟包括
1)根據(jù)節(jié)點(diǎn)計(jì)算機(jī)的硬件并發(fā)能力自動(dòng)生成具有相應(yīng)數(shù)量計(jì)算線程;
2)輸入要處理的數(shù)據(jù)集,隨機(jī)給出初始模型M0;
3)將數(shù)據(jù)集分成若干數(shù)據(jù)片段,每個(gè)數(shù)據(jù)片段包含若干文檔,且有一個(gè)索引;
4)計(jì)算進(jìn)程申請(qǐng)一個(gè)索引處理相應(yīng)數(shù)據(jù)片段;
5)將步驟4)中的數(shù)據(jù)片段再分為若干片段,且有一個(gè)索引,進(jìn)程中的每個(gè)計(jì)算線程申請(qǐng)?zhí)幚硪粋€(gè)索引處理數(shù)據(jù)片段,并計(jì)算生成局部充分統(tǒng)計(jì)量;
6)歸并局部充分統(tǒng)計(jì)量,得到全局充分統(tǒng)計(jì)量,進(jìn)而估計(jì)得到當(dāng)前模型Mi;
7)判斷模型Mi是否收斂,收斂則完成計(jì)算,否則從步驟3)開(kāi)始循環(huán)。
9、如權(quán)利要求8所述的方法,其特征在于,用于多機(jī)機(jī)群計(jì)算環(huán)境時(shí),所述每個(gè)節(jié)點(diǎn)計(jì)算機(jī)上復(fù)制一份數(shù)據(jù)集,供該節(jié)點(diǎn)計(jì)算機(jī)上的進(jìn)程訪問(wèn)數(shù)據(jù)集。
10、如權(quán)利要求8所述的方法,其特征在于,用于多機(jī)機(jī)群計(jì)算環(huán)境時(shí),所述每個(gè)節(jié)點(diǎn)計(jì)算機(jī)進(jìn)程申請(qǐng)的數(shù)據(jù)片段長(zhǎng)度大于計(jì)算進(jìn)程所在節(jié)點(diǎn)的并行度。
11、如權(quán)利要求8所述的方法,其特征在于,用于多機(jī)機(jī)群計(jì)算環(huán)境時(shí),每個(gè)計(jì)算節(jié)點(diǎn)上只需一個(gè)計(jì)算進(jìn)程,進(jìn)程中所有線程共用一個(gè)充分統(tǒng)計(jì)量矩陣。
12、如權(quán)利要求8所述的方法,其特征在于,所述步驟4)計(jì)算進(jìn)程申請(qǐng)的數(shù)據(jù)片段長(zhǎng)度遠(yuǎn)小于文檔數(shù)。
13、如權(quán)利要求8所述的方法,其特征在于,所述步驟5)計(jì)算線程申請(qǐng)的數(shù)據(jù)片段長(zhǎng)度為一個(gè)文檔。
14、如權(quán)利要求1或4或8所述的方法,其特征在于,所述步驟1)通過(guò)獲得每個(gè)計(jì)算機(jī)的處理器的數(shù)量和每個(gè)處理器所含的內(nèi)核數(shù)量或支持的超線程數(shù)量來(lái)自動(dòng)確定進(jìn)程/線程的數(shù)量
在windows平臺(tái)上利用匯編指令直接獲得硬件系統(tǒng)的處理器信息;
在linux平臺(tái)上通過(guò)對(duì)硬件抽象層HAL的功能調(diào)用獲得硬件系統(tǒng)的處理器信息。
15、如權(quán)利要求1或8所述的方法,其特征在于,所述步驟4)每個(gè)進(jìn)程在處理前一個(gè)數(shù)據(jù)片段的同時(shí)再預(yù)取一個(gè)數(shù)據(jù)片段,便于立刻處理新的數(shù)據(jù)片段。
16、如權(quán)利要求1或4或8所述的方法,其特征在于,所述步驟3)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)片段都有一個(gè)索引,每個(gè)文檔都有一個(gè)索引號(hào),用整數(shù)來(lái)表示,進(jìn)程/線程根據(jù)申請(qǐng)的索引來(lái)定位和處理數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種基于隱含狄利克雷分配模型的并行數(shù)據(jù)處理方法,屬于數(shù)據(jù)挖掘領(lǐng)域,該方法包含了多進(jìn)程并行處理、多線程并行處理和復(fù)合多進(jìn)程多線程處理三種方案,在這三種方案中都將要處理的數(shù)據(jù)DM分成長(zhǎng)度為等長(zhǎng)或不等長(zhǎng)的數(shù)據(jù)片段,每個(gè)數(shù)據(jù)片段都有一個(gè)索引,每個(gè)計(jì)算進(jìn)程/線程通過(guò)申請(qǐng)索引來(lái)處理對(duì)應(yīng)的數(shù)據(jù)片段,進(jìn)而獲得每個(gè)數(shù)據(jù)項(xiàng)的主題信息并生成局部充分統(tǒng)計(jì)量;處理完整個(gè)DM后,通過(guò)歸并局部充分統(tǒng)計(jì)量,得到全局充分統(tǒng)計(jì)量,即可估計(jì)得到當(dāng)前模型Mi,直到該模型收斂。該方法能夠充分利用單機(jī)上的多內(nèi)核并行架構(gòu)和多機(jī)上的機(jī)群大規(guī)模并行能力,進(jìn)而實(shí)現(xiàn)對(duì)大規(guī)模文本集合的高速處理,并能有效降低并行處理過(guò)程中內(nèi)存的使用量。
文檔編號(hào)G06F17/30GK101359333SQ200810126728
公開(kāi)日2009年2月4日 申請(qǐng)日期2008年6月20日 優(yōu)先權(quán)日2008年5月23日
發(fā)明者李文波, 樂(lè) 孫 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
潍坊市| 开江县| 开封县| 古蔺县| 新巴尔虎右旗| 固始县| 互助| 安达市| 东丰县| 兴隆县| 灯塔市| 防城港市| 彰化市| 满洲里市| 依兰县| 新津县| 阜康市| 清远市| 汝城县| 措美县| 二连浩特市| 马尔康县| 林甸县| 宣城市| 通榆县| 朝阳区| 镇巴县| 盱眙县| 子长县| 怀柔区| 扬中市| 花垣县| 东阳市| 新兴县| 辉南县| 漠河县| 安庆市| 龙井市| 正镶白旗| 延长县| 桂平市|