本說明書實(shí)施例屬于多方計(jì)算,尤其涉及一種一種多方計(jì)算方法、裝置、計(jì)算機(jī)程序產(chǎn)品和計(jì)算機(jī)設(shè)備。
背景技術(shù):
1、tensorflow是一種機(jī)器學(xué)習(xí)框架,常用于構(gòu)建機(jī)器學(xué)習(xí)模型并將模型投入使用。通過tensorflow來訓(xùn)練或使用機(jī)器學(xué)習(xí)模型時(shí),通常是根據(jù)需要進(jìn)行的計(jì)算操作構(gòu)建一張計(jì)算圖,每個(gè)計(jì)算圖中包括多個(gè)計(jì)算節(jié)點(diǎn)(operation,op)。構(gòu)建計(jì)算圖后將數(shù)據(jù)作為輸入通過運(yùn)行該計(jì)算圖的計(jì)算節(jié)點(diǎn)來實(shí)現(xiàn)計(jì)算目標(biāo)。
2、隨著數(shù)據(jù)安全性的提高,現(xiàn)有技術(shù)中基于tensorflow構(gòu)建基于多方安全計(jì)算(secure?multi-party?computation,,mpc)機(jī)器學(xué)習(xí)算法,以保證多個(gè)模型訓(xùn)練參與方的各自隱私數(shù)據(jù)安全。mpc的多個(gè)參與方通常處于同一tensorflow集群下,共享同一張計(jì)算圖。
3、比如,如圖1所示,圖1為第一方和第二方共享的一個(gè)計(jì)算圖。圖1中的方框代表輸入的數(shù)據(jù),圓框代表計(jì)算節(jié)點(diǎn),左側(cè)虛線框中為第一方需要執(zhí)行的計(jì)算節(jié)點(diǎn),右側(cè)虛線框中為第二方需要執(zhí)行的計(jì)算節(jié)點(diǎn)。從圖1可知,第一方用于擁有數(shù)據(jù)v1和v2,第二方擁有數(shù)據(jù)v3和v4,需要執(zhí)行的計(jì)算邏輯如下:第一方計(jì)算m1=v1+v2,第二方計(jì)算m2=v3*v4,第一方計(jì)算m3=m1*m2,第二方計(jì)算r=v4+m3,其中r為輸出。
4、mpc的多個(gè)參與方處于同一tensorflow集群下,共享同一計(jì)算圖會(huì)帶來以下問題:首先,由于多個(gè)參與方由于處于同一tensorflow集群下,任一參與方都可以向集群提交代碼。這使得惡意參與方可能通過提交惡意代碼,更改計(jì)算圖,進(jìn)而可能更改模型訓(xùn)練流程、操作其他參與方機(jī)器等。其次,由于多個(gè)參與方共享同一張計(jì)算圖,由單控制器進(jìn)行計(jì)算控制,任一一個(gè)參與方發(fā)起計(jì)算任務(wù),其他參與方都必須參與。這樣使得每個(gè)參與方對于是否參與計(jì)算、何時(shí)參與訓(xùn)練沒有控制權(quán)。
5、可見,現(xiàn)有技術(shù)中的方案中,參與方容易被共享同一張計(jì)算圖的參與方攻擊,同時(shí)參與方對自身的計(jì)算和數(shù)據(jù)沒有控制權(quán),有較大的安全風(fēng)險(xiǎn)。
技術(shù)實(shí)現(xiàn)思路
1、本說明書的目的在于提供一種多方計(jì)算方法、裝置、計(jì)算機(jī)程序產(chǎn)品和計(jì)算機(jī)設(shè)備,包括:
2、本說明書第一方面提供一種多方計(jì)算方法,所述多方包括第一方和第二方,所述方法由所述第一方執(zhí)行,包括:
3、獲取第一計(jì)算圖;所述第一計(jì)算圖包括與所述第一方對應(yīng)的至少一個(gè)第一計(jì)算節(jié)點(diǎn)和與所述第二方對應(yīng)的至少一個(gè)第二計(jì)算節(jié)點(diǎn);
4、對所述第一計(jì)算圖進(jìn)行拆分,得到第二計(jì)算圖;所述第二計(jì)算圖中包括所述至少一個(gè)第一計(jì)算節(jié)點(diǎn)和至少一個(gè)交互節(jié)點(diǎn),所述交互節(jié)點(diǎn)對應(yīng)于所述至少一個(gè)第二計(jì)算節(jié)點(diǎn)中的與任一所述第一計(jì)算節(jié)點(diǎn)存在交互的計(jì)算節(jié)點(diǎn);
5、在所述交互節(jié)點(diǎn)與該交互節(jié)點(diǎn)相連的第一計(jì)算節(jié)點(diǎn)之間增加通信節(jié)點(diǎn),得到第三計(jì)算圖;
6、運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn)。
7、本說明書第二方面提供一種多方計(jì)算裝置,所述多方包括第一方和第二方,所述裝置應(yīng)用于所述第一方,包括:
8、計(jì)算圖獲取模塊,用于獲取第一計(jì)算圖;所述第一計(jì)算圖包括與所述第一方對應(yīng)的至少一個(gè)第一計(jì)算節(jié)點(diǎn)和與所述第二方對應(yīng)的至少一個(gè)第二計(jì)算節(jié)點(diǎn);
9、計(jì)算圖拆分模塊,用于對所述第一計(jì)算圖進(jìn)行拆分,得到第二計(jì)算圖;所述第二計(jì)算圖中包括所述至少一個(gè)第一計(jì)算節(jié)點(diǎn)和至少一個(gè)交互節(jié)點(diǎn),所述交互節(jié)點(diǎn)對應(yīng)于所述至少一個(gè)第二計(jì)算節(jié)點(diǎn)中的與任一所述第一計(jì)算節(jié)點(diǎn)存在交互的計(jì)算節(jié)點(diǎn);
10、通信節(jié)點(diǎn)增加模塊,用于在所述交互節(jié)點(diǎn)與該交互節(jié)點(diǎn)相連的第一計(jì)算節(jié)點(diǎn)之間增加通信節(jié)點(diǎn),得到第三計(jì)算圖;
11、計(jì)算圖運(yùn)行模塊,用于運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn)。
12、本說明書第三方面提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)中執(zhí)行時(shí),令計(jì)算機(jī)執(zhí)行如本說明書實(shí)施例第一方面所述多方計(jì)算方法。
13、本說明書第四方面提供一種計(jì)算設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有可執(zhí)行代碼,所述處理器執(zhí)行所述可執(zhí)行代碼時(shí),實(shí)現(xiàn)如本說明書實(shí)施例第一方面所述多方計(jì)算方法。
14、本說明書第五方面提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如本說明書實(shí)施例第一方面所述多方計(jì)算方法的步驟。
15、本說明書提供了一種多方計(jì)算方法,該方法涉及第一方和第二方,第一方執(zhí)行以下方法:獲取第一計(jì)算圖,第一計(jì)算圖是多方在共享一張計(jì)算圖的情況下所用的計(jì)算圖。再對第一計(jì)算圖進(jìn)行拆分得到第二計(jì)算圖,第二計(jì)算圖中只包括了第一方對應(yīng)的第一計(jì)算節(jié)點(diǎn)和交互節(jié)點(diǎn),交互節(jié)點(diǎn)對應(yīng)于第二方的第二計(jì)算節(jié)點(diǎn)中與第一計(jì)算節(jié)點(diǎn)存在交互的節(jié)點(diǎn)。在交互節(jié)點(diǎn)和第二計(jì)算節(jié)點(diǎn)之間增加通信節(jié)點(diǎn),得到第三計(jì)算圖。再運(yùn)行第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和通信節(jié)點(diǎn),完成多方計(jì)算。
16、可見,本說明書提出了一種多個(gè)參與方進(jìn)行多方計(jì)算的解決方法,通過將多個(gè)參與方共享的計(jì)算圖拆分為與各個(gè)參與方分別對應(yīng)的子計(jì)算圖,并且各個(gè)參與方分別運(yùn)行各自的子計(jì)算圖而參與多方計(jì)算。多個(gè)參與方不再需要處于同一個(gè)tensorflow集群中,惡意參與方無法在tensorflow集群內(nèi)部通過上傳代碼來更改其他參與方的計(jì)算圖的計(jì)算邏輯,防止惡意參與方更改計(jì)算圖整體的運(yùn)算邏輯。此外,不同參與方在不同的tensorflow集群中,不同參與方可以通過自身的計(jì)算圖掌握對是否進(jìn)行計(jì)算、何時(shí)進(jìn)行計(jì)算的控制。
1.一種多方計(jì)算方法,所述多方包括第一方和第二方,所述方法由所述第一方執(zhí)行,包括:
2.根據(jù)權(quán)利要求1所述的方法,其中,所述運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn)包括:在所述第一方的tensorflow集群中運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述第一方和所述第二方屬于不同的tensorflow集群,所述第一方和第二方之間通過推送push方式進(jìn)行通信。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述在所述交互節(jié)點(diǎn)與該交互節(jié)點(diǎn)相連的第一計(jì)算節(jié)點(diǎn)之間增加通信節(jié)點(diǎn),得到第三計(jì)算圖,包括:
5.根據(jù)權(quán)利要求4所述的方法,其中,所述運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn),包括:
6.根據(jù)權(quán)利要求4所述的方法,其中,所述運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn),包括:
7.根據(jù)權(quán)利要求4所述的方法,其中,所述運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn),包括:
8.根據(jù)權(quán)利要求1所述的方法,其中,所述對所述第一計(jì)算圖進(jìn)行拆分,得到第二計(jì)算圖,包括:
9.根據(jù)權(quán)利要求1所述的方法,其中,所述運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn),包括:運(yùn)行所述第三計(jì)算圖中的第一計(jì)算節(jié)點(diǎn)和所述通信節(jié)點(diǎn),以與所述第二方共同進(jìn)行對機(jī)器學(xué)習(xí)模型的訓(xùn)練或使用。
10.一種多方計(jì)算裝置,所述多方包括第一方和第二方,所述裝置應(yīng)用于所述第一方,包括:
11.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-9中任一項(xiàng)所述多方計(jì)算方法的步驟。
12.一種計(jì)算設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有可執(zhí)行代碼,所述處理器執(zhí)行所述可執(zhí)行代碼時(shí),實(shí)現(xiàn)權(quán)利要求1-9中任一項(xiàng)所述的多方計(jì)算方法。