Welcome to PyTorch-BigGraph’s documentation - Data model
源鏈接:https://torchbiggraph.readthedocs.io/en/latest/data_model.html
PBG operates 是有向多關(guān)系多圖勃黍,圖上的頂點(diǎn)稱為實(shí)體因妇,每個(gè)邊將源連接到目標(biāo)實(shí)體。源和目標(biāo)分別稱為左側(cè)和右側(cè)(簡稱lhs和rhs)哨坪。同一對實(shí)體之間允許有多個(gè)邊,也允許使用環(huán)俗冻,即左側(cè)和右側(cè)相同的邊魄健。
每個(gè)實(shí)體都屬于特定的實(shí)體類型(即每個(gè)實(shí)體只有一種類型)。所以類型將所有實(shí)體劃分為不相交的組旋奢。同樣泳挥,每個(gè)邊也只屬于一個(gè)關(guān)系類型,并且關(guān)系類型的邊的左側(cè)實(shí)體應(yīng)該有相同實(shí)體類型至朗,以及右側(cè)應(yīng)該也是相同實(shí)體類型(左右側(cè)實(shí)體類型可以具有不同的實(shí)體類型)屉符。此屬性表示每個(gè)關(guān)系類型都有左側(cè)實(shí)體類型和右側(cè)實(shí)體類型。
為了讓PBG能夠讓大規(guī)模的圖形能運(yùn)行,我們將圖形分解成小塊碑宴,在這些小塊上可以進(jìn)行分布式的訓(xùn)練软啼。首先是通過將每種類型的實(shí)體進(jìn)一步拆分為若干個(gè)子集(稱為分區(qū))。然后延柠,對于每種關(guān)系類型祸挪,它的邊被劃分為桶:對于每對分區(qū)(一個(gè)來自左側(cè),另一個(gè)來自右側(cè)實(shí)體類型)將創(chuàng)建一個(gè)桶贞间,其中包含特定類型的邊及對應(yīng)左贿条、右側(cè)實(shí)體。
注:出于技術(shù)原因,當(dāng)前出現(xiàn)在關(guān)系類型左側(cè)的所有實(shí)體類型必須劃分為相同數(shù)量的分區(qū)(未分區(qū)的實(shí)體除外)。對于出現(xiàn)在右側(cè)的所有實(shí)體類型凡蚜,必須保持相同的狀態(tài)人断。在numpy中,這意味著所有實(shí)體的分區(qū)數(shù)必須可以擴(kuò)展到相同的值朝蜘。
一個(gè)實(shí)體通過自身的類型恶迈、分桶、分組中的索引來定義(索引必須是連續(xù)的谱醇,這意味著如果一個(gè)類型的分區(qū)中有n個(gè)實(shí)體暇仲,則其索引位于半開放區(qū)間[0,n])副渴。一條邊銅鼓變得類型熔吗,分桶(即其左側(cè)和右側(cè)實(shí)體類型的分區(qū))以及其左側(cè)和右側(cè)實(shí)體在各自分區(qū)中的索引來標(biāo)識。邊緣不必指定其左側(cè)和右側(cè)實(shí)體類型佳晶,因?yàn)樗鼈冸[式地存在于邊緣的關(guān)系類型中。
形式上讼载,每個(gè)桶都可以通過一對整數(shù)(i轿秧,j)來標(biāo)識,其中i和j分別是左側(cè)和右側(cè)分區(qū)咨堤。在該桶中菇篡,每個(gè)邊都可以由整數(shù)(x,r一喘,y)的三聯(lián)體標(biāo)識驱还,x和y分別表示左側(cè)和右側(cè)實(shí)體,r表示關(guān)系類型凸克。通過首先在配置中查找關(guān)系類型R來“解釋”此邊緣议蟆,并發(fā)現(xiàn)其左側(cè)只能有類型e1的實(shí)體,右側(cè)只能有類型e2的實(shí)體萎战。然后可以確定左側(cè)實(shí)體咐容,由(e1,i蚂维,x)(其類型戳粒、分區(qū)及其在分區(qū)內(nèi)的索引)給出,同樣虫啥,也可以確定右側(cè)實(shí)體(e2蔚约,j,y)涂籽。
在同一模型中锰悼,圖形邊緣然后根據(jù)其源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)分為P2存儲桶。一旦節(jié)點(diǎn)和邊緣被分區(qū)团赏,就可以一次在一個(gè)桶上執(zhí)行訓(xùn)練箕般。桶(p1,p2)的訓(xùn)練僅需要將分區(qū)p1和p2的嵌入存儲在存儲器中舔清。PBG結(jié)構(gòu)保證桶具有至少一個(gè)先前訓(xùn)練的嵌入分區(qū)丝里。