Multi-party computing method and device, computer program product and computer equipment

By splitting and independently running the calculation graph, the problems of malicious participants' attacks and data security risks in multi-party computing are solved, and the calculation graph isolation and control rights of each participant are realized, which improves security and controllability.

CN119271934APending Publication Date: 2025-01-07ANT BLOCKCHAIN TECHNOLOGY (SHANGHAI) CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411433630.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-10-14
Publication Date
2025-01-07

AI Technical Summary

Technical Problem

In the prior art, multiple participants share the same calculation diagram under the same Tensorflow cluster, resulting in malicious participants that may change the calculation diagram, thereby changing the model training process and attacking other participants, and the participants lack control over the calculation and data. , poses a great security risk.

Method used

By obtaining the shared calculation graph, split it into sub-computing graphs of each participant, and adding communication nodes between the interactive node and the communication node, ensuring that each participant runs its calculation graph in an independent Tensorflow cluster to prevent malicious code changes and control the calculation logic.

Benefits of technology

The calculation graph isolation of each participant is realized, preventing malicious participants from changing the calculation logic of other participants, improving data security and computing control rights, and ensuring the security and controllability of multi-party computing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119271934A_ABST
    Figure CN119271934A_ABST
Patent Text Reader

Abstract

A multi-party computing method, the method involving a first party and a second party, the first party performing the following method: obtaining a first computational graph, the first computational graph being a computational graph used by multiple parties in a case where one computational graph is shared. The first calculation graph is split to obtain a second calculation graph, the second calculation graph only comprises first calculation nodes and interaction nodes corresponding to the first party, and the interaction nodes correspond to nodes, interacting with the first calculation nodes, in the second calculation nodes of the second party. And adding a communication node between the interaction node and the second calculation node to obtain a third calculation graph. And then running the first computing node and the communication node in the third computing graph to complete multi-party computing. And different participants grasp the control of calculation or not and calculation time through own calculation diagrams. And the calculation graphs of different participants are isolated, so that malicious participants cannot change the calculation logic of the calculation graphs of other participants by uploading codes.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of this specification belong to the field of multi-party computing technology, and more particularly, to a multi-party computing method, apparatus, computer program product, and computer device. Background Art

[0002] Tensorflow is a machine learning framework that is often used to build machine learning models and put them into use. When training or using machine learning models with Tensorflow, a computational graph is usually built based on the required computational operations. Each computational graph includes multiple computational nodes (operation, OP). After the computational graph is built, the data is used as input to run the computational nodes of the computational graph to achieve the computational goal.

[0003] With the improvement of data security, the existing technology builds a machine learning algorithm based on Tensorflow based on secure multi-party computing (MPC) to ensure the privacy data security of multiple model training participants. Multiple participants in MPC are usually in the same Tensorflow cluster and share the same computational graph.

[0004] For example, Figure 1 As shown, Figure 1 A computation graph shared by the first party and the second party. Figure 1 The squares in the figure represent input data, the circles represent computing nodes, the dashed boxes on the left represent computing nodes that the first party needs to execute, and the dashed boxes on the right represent computing nodes that the second party needs to execute. Figure 1 It can be seen that the first party has data v1 and v2, and the second party has data v3 and v4. The calculation logic that needs to be executed is as follows: the first party calculates m1=v1+v2, the second party calculates m2=v3*v4, the first party calculates m3=m1*m2, and the second party calculates r=v4+m3, where r is the output.

[0005] Multiple participants of MPC are in the same Tensorflow cluster, and sharing the same computational graph will bring the following problems: First, since multiple participants are in the same Tensorflow cluster, any participant can submit code to the cluster. This makes it possible for malicious participants to change the computational graph by submitting malicious code, and then change the model training process, operate other participants' machines, etc. Second, since multiple participants share the same computational graph and are controlled by a single controller, any participant who initiates a computational task must participate in it. This means that each participant has no control over whether to participate in the computation and when to participate in the training.

[0006] It can be seen that in the solutions in the prior art, the participants are easily attacked by the participants who share the same computational graph. At the same time, the participants have no control over their own computations and data, which poses a greater security risk. Summary of the invention

[0007] The purpose of this specification is to provide a multi-party computing method, apparatus, computer program product and computer device, including:

[0008] A first aspect of the present specification provides a multi-party computing method, wherein the multi-party includes a first party and a second party, and the method is performed by the first party, including:

[0009] Obtaining a first computation graph; the first computation graph comprising at least one first computation node corresponding to the first party and at least one second computation node corresponding to the second party;

[0010] The first computing graph is split to obtain a second computing graph; the second computing graph includes the at least one first computing node and at least one interactive node, and the interactive node corresponds to a computing node in the at least one second computing node that interacts with any of the first computing nodes;

[0011] Adding a communication node between the interactive node and a first computing node connected to the interactive node to obtain a third computing graph;

[0012] The first computing node and the communication node in the third computing graph are run.

[0013] A second aspect of the present specification provides a multi-party computing device, wherein the multi-party includes a first party and a second party, and the device is applied to the first party, including:

[0014] A computation graph acquisition module, configured to acquire a first computation graph; the first computation graph includes at least one first computation node corresponding to the first party and at least one second computation node corresponding to the second party;

[0015] A computation graph splitting module, configured to split the first computation graph to obtain a second computation graph; the second computation graph includes the at least one first computation node and at least one interactive node, the interactive node corresponding to a computation node in the at least one second computation node that interacts with any of the first computation nodes;

[0016] A communication node adding module, used for adding a communication node between the interactive node and a first computing node connected to the interactive node to obtain a third computing graph;

[0017] A computation graph running module is used to run the first computing node and the communication node in the third computation graph.

[0018] The third aspect of this specification provides a computer-readable storage medium having a computer program stored thereon. When the computer program is executed in a computer, the computer is caused to execute the multi-party computing method as described in the first aspect of the embodiments of this specification.

[0019] The fourth aspect of this specification provides a computing device, including a memory and a processor, wherein the memory stores executable code, and when the processor executes the executable code, the multi-party computing method as described in the first aspect of the embodiment of this specification is implemented.

[0020] The fifth aspect of this specification provides a computer program product, including a computer program / instruction, which, when executed by a processor, implements the steps of the multi-party computing method described in the first aspect of the embodiment of this specification.

[0021] This specification provides a multi-party computing method, which involves a first party and a second party. The first party performs the following method: obtain a first computing graph, which is a computing graph used by multiple parties when sharing a computing graph. Then split the first computing graph to obtain a second computing graph, which only includes the first computing node and the interaction node corresponding to the first party. The interaction node corresponds to the node in the second computing node of the second party that interacts with the first computing node. Add a communication node between the interaction node and the second computing node to obtain a third computing graph. Then run the first computing node and the communication node in the third computing graph to complete the multi-party computing.

[0022] It can be seen that this specification proposes a solution for multiple participants to perform multi-party computing, by splitting the computation graph shared by multiple participants into sub-computation graphs corresponding to each participant, and each participant runs its own sub-computation graph to participate in multi-party computing. Multiple participants no longer need to be in the same Tensorflow cluster, and malicious participants cannot change the calculation logic of other participants' calculation graphs by uploading code within the TensorFlow cluster, preventing malicious participants from changing the overall operation logic of the calculation graph. In addition, different participants are in different TensorFlow clusters, and different participants can control whether and when to perform calculations through their own calculation graphs. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] In order to more clearly illustrate the technical solutions of the embodiments of this specification, the drawings required for use in the description of the embodiments will be briefly introduced below. Obviously, the drawings described below are only some embodiments recorded in this specification. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying creative labor.

[0024] Figure 1 is a schematic diagram of a computation graph in one embodiment;

[0025] Figure 2 is a flow chart of a multi-party computing method shown in an embodiment of this specification;

[0026] Figure 3 is a schematic diagram of an intermediate calculation graph shown in an embodiment of this specification;

[0027] Figure 4A is a schematic diagram of a second calculation graph of a first party shown in an embodiment of this specification;

[0028] Figure 4B is a schematic diagram of a second calculation graph of a second party shown in an embodiment of this specification;

[0029] Figure 5A is a schematic diagram of a third calculation graph of a first party shown in an embodiment of this specification;

[0030] Figure 5B is a schematic diagram of a third calculation graph of a second party shown in an embodiment of this specification;

[0031] Figure 6 It is a block diagram of a multi-party computing device shown in one embodiment of this specification. DETAILED DESCRIPTION

[0032] In order to enable those skilled in the art to better understand the technical solutions in this specification, the technical solutions in the embodiments of this specification will be clearly and completely described below in conjunction with the drawings in the embodiments of this specification. Obviously, the described embodiments are only part of the embodiments of this specification, not all of the embodiments. Based on the embodiments in this specification, all other embodiments obtained by ordinary technicians in this field without creative work should fall within the scope of protection of this specification.

[0033] In order to solve the problems of the prior art, based on this, this specification provides a multi-party computing method, which involves a first party and a second party. The first party performs the following method: obtain a first computing graph, which is a computing graph used by multiple parties when sharing a computing graph. Then split the first computing graph to obtain a second computing graph, which only includes the first computing node and the interaction node corresponding to the first party. The interaction node corresponds to the node in the second computing node of the second party that interacts with the first computing node. Add a communication node between the interaction node and the second computing node to obtain a third computing graph. Then run the first computing node and the communication node in the third computing graph to complete the multi-party computing.

[0034] Through the above method, different participants build different computational graphs so that different participants no longer share the same computational graph. The computational graph of each participant includes the computational nodes that the participant needs to execute, ensuring that the computation can proceed normally. Through the interactive nodes in the computational graph, the dependency relationship between nodes and the smooth flow of data are guaranteed. In addition, through the communication nodes in the computational graph, it is guaranteed that different participants can communicate and data transmission is guaranteed.

[0035] Furthermore, different participants can control whether and when to perform calculations through their own calculation graphs, ensuring the participants' control over calculations. Moreover, the calculation graphs between different participants are isolated, and malicious participants cannot change the calculation logic of other participants' calculation graphs by uploading codes, preventing malicious participants from changing the overall calculation logic of the calculation graph.

[0036] Next, a multi-party computing method shown in this specification will be described through a specific embodiment. The multiple parties include a first party and a second party, and the method is performed by the first party. It is easy to understand that the operations performed by the second party are similar to those performed by the first party, and any participating party can perform the above operations as the first party. In addition, although this specification uses the example of multiple parties including the first party and the second party for explanation, it is easy to understand that when the multiple parties include a third party or more participating parties, the method performed by the first party is similar to it, and the role of the third party or other participating parties is similar to the second party of the method in this specification.

[0037] The method in this specification can be applied in the Tensorflow framework. The first party and the second party can correspond to different Tensorflow clusters respectively, and each party executes the computational graph constructed by itself.

[0038] In addition, although multi-party MPC is used as an example in the background technology, in the scenario where multiple parties perform joint computing, the method described in this specification can be used regardless of whether the computing is based on MPC.

[0039] Next, we will combine Figure 2 , to illustrate the multi-party computing method shown in this specification. Figure 2 As shown, the multi-party computing method includes the following steps:

[0040] Step 201, obtain a first computation graph.

[0041] The first computing graph includes at least one first computing node corresponding to the first party and at least one second computing node corresponding to the second party.

[0042] The construction method of the first computational graph can be completed in accordance with the original method of constructing computational graphs in which multiple parties are in the same TensorFlow cluster. For example, when constructing a computational graph for machine learning training in an MPC scenario, each participant can add the computing nodes that each participant needs to execute in the first computational graph according to the MPC machine learning algorithm logic, and obtain a first computational graph that includes all the operation logics that each participant needs to execute. In a multi-party scenario, each participant constructs a first computational graph using the above method, and the first computational graphs constructed by multiple participants participating in multi-party computing are the same.

[0043] It can be seen that the first computation graph is also a computation graph that includes all the computation logic required for multi-party computation. The computation graph includes computation nodes, which refer to computation operations that include computation logic. Computation nodes are used to perform specific operations on data, such as a certain computation node can be used to calculate the multiplication logic of a×b.

[0044] The first computing node is the computing node that the first party needs to execute, and the second computing node is the computing node that the second party needs to execute. The computing node generally includes identification information for indicating the device that executes the computing node, and the first party can automatically identify the first computing node and the second computing node based on the identification information.

[0045] For ease of understanding, the following Figure 1 The computation graph shown is explained as a first computation graph. Figure 1 This is an example of the first computing graph, where the nodes represented by the circular boxes are computing nodes, the circular box in the left dotted box is the first computing node, and the circular box in the right dotted box is the second computing node.

[0046] In addition, the first computing graph may also include at least one third computing node corresponding to the third party, at least one fourth computing node corresponding to the fourth party, etc., and the TensorFlow clusters corresponding to other parties and the first party are different. In the case where multiple parties involve other parties such as the third party and the fourth party, the processing method for the third computing node, the fourth computing node and other computing nodes is the same as the processing method for the second computing node, and will not be repeated in the following text.

[0047] In addition, when there are other participants in the TensorFlow cluster where the first party is located, the processing method for the computing node corresponding to the participant is the same as the processing method for the first computing node, which will not be repeated below.

[0048] Step 203: split the first computation graph to obtain a second computation graph.

[0049] The second computing graph includes the at least one first computing node and at least one interactive node, and the interactive node corresponds to a computing node among the at least one second computing node that interacts with any of the first computing nodes.

[0050] Specifically, since the first computation graph includes all the computational logic of the computation graph and cannot be directly executed by the first party, after obtaining the first computation graph, the first party and the second party can split the computation nodes that they need to calculate in the first computation graph to obtain the second computation graph.

[0051] In an optional implementation, the interactive node may correspond to a second computing node that has a connection relationship with the first computing node in the first computing graph. In the above case, step 203 may be implemented by first analyzing the dependency relationship between the nodes in the first computing graph, determining the second computing node that has a connection relationship with the first node, converting the determined second computing node into an interactive node, and deleting the other second computing nodes.

[0052] In an optional embodiment, the interactive node may correspond to the second computing node one-to-one. In the above case, the specific implementation of step 203 may be: converting the second computing node in the first computing graph into an interactive node. In addition, the specific implementation of step 203 may also be: for the first computing graph, retaining the first computing node, deleting the second computing node, and obtaining an intermediate computing graph; adding the interactive node corresponding to the second computing node in the intermediate computing graph to obtain the second computing graph.

[0053] Still used here Figure 1 For example, the intermediate calculation graph of the first party is as follows Figure 3 As shown in (a) in the figure, the intermediate calculation graph of the second party is as follows Figure 3 As shown in (b) in the figure. The intermediate computation graph only contains the computation nodes that need to be executed by itself, which makes the computation logic of the intermediate computation graph incomplete. For example Figure 3 As shown in (a), the top multiplication node has only one input and cannot perform calculations. Therefore, in order to ensure the integrity of the calculation logic and the smoothness of the data flow link, we can use the graph replication method to copy the other party's calculation nodes to our side, and change these calculation nodes from real calculation nodes to interactive nodes that do not include calculation logic, and obtain the second calculation graph.

[0054] Figure 4A What is shown is the second computational graph corresponding to the first party, Figure 4B The second calculation graph corresponding to the second party is shown. The circles shown by the dotted lines are interaction nodes, which are not used to execute the calculation logic, but only represent the input-output dependency.

[0055] In this way, when executing step 203, there is no need to analyze the dependencies of the nodes in the first calculation graph, and it is only necessary to convert all the second calculation nodes into interactive nodes. Moreover, during the operation of the calculation graph, the interactive nodes have no operation logic and do not need to execute the interactive nodes. The increase in the number of added interactive nodes has almost no effect on the operation speed. Therefore, in this embodiment, the completion of step 203 can be accelerated.

[0056] The interaction nodes in the constructed computational graph can be used to ensure the logical dependencies of the operations and the normal flow of data. The difference between interaction nodes and computational nodes is that interaction nodes do not contain computational logic. This ensures that the logical dependencies of the computational graph are correct even when multiple participants do not share the computational graph.

[0057] Step 205: adding a communication node between the interactive node and the first computing node connected to the interactive node to obtain a third computing graph.

[0058] Specifically, since the first party and the second party no longer belong to the same TensorFlow cluster, they can no longer communicate using the communication method within the cluster, so it is necessary to add communication nodes in the calculation graph to ensure communication between multiple participants. Therefore, in step 205, communication nodes are added to the third calculation graph to ensure that data can be transmitted normally during the operation of the calculation graph.

[0059] In an optional implementation, the first party and the second party belong to different TensorFlow clusters, and the first party and the second party communicate with each other by push. Correspondingly, the execution method of step 205 may be: according to the connection relationship between the first computing node and the second computing node in the first computing graph, between the interaction node of the second computing graph and the first computing node connected to the interaction node, a sending node and a receiving node are added in accordance with the data flow corresponding to the connection relationship.

[0060] Still Figure 1 The example of is used as the first computational graph to illustrate, Figure 5A is a schematic diagram of the third computational graph of the first party, Figure 5B It is a schematic diagram of the third computation graph of the second party.

[0061] Specifically, the push method is: even if the first party and the second party establish a link, if the first party wants to obtain certain data of the second party, it cannot actively pull the data from the second party, but needs to wait for the second party to send the data to the first party. Correspondingly, the above communication nodes may include sending nodes and receiving nodes, and the sending nodes and receiving nodes are placed along the direction of the connecting arrows in the computational graph, with the sending node closer to the end of the connecting arrow direction away, and the receiving node closer to the end of the connecting arrow pointing to.

[0062] In the prior art, a TensorFlow cluster uses a pull method for communication. Specifically, as long as a link is established between the first party and the second party, the first party can directly pull the data of the second party when it needs to obtain the data of the second party.

[0063] In this way, compared to the prior art, multiple participants are in the same TensorFlow cluster, and the data of other participants can be pulled at will within the TensorFlow cluster. The method provided in this specification can protect the data security of the participants and prevent other participants from pulling the private data of other participants by uploading malicious code, thereby protecting data security.

[0064] Step 207: Run the first computing node and the communication node in the third computing graph.

[0065] After the calculation graph is constructed in the above manner, when a calculation task needs to be initiated, the first party and the second party negotiate to determine a certain calculation result of the first calculation graph. The first party and the second party can start to run the third calculation graph they have obtained respectively to complete the calculation logic in the first calculation graph. It should be noted that step 207 can be repeatedly executed multiple times to run the third calculation graph multiple times.

[0066] It should be noted that the interactive node does not include operation logic, so in step 207, only the first computing node and the communication node are run, and the interactive node is not run.

[0067] Step 207 may be: running the first computing node and the communication node in the third computing graph in the TensorFlow cluster of the first party. Correspondingly, other participants may also run their own constructed computing graphs in their respective TensorFlow clusters.

[0068] The operation mode of the communication node may be similar to the communication mode within the TensorFlow cluster in the prior art. However, in some embodiments of the present specification, the present specification may use a push mode for communication, while the prior art uses a pull mode for communication.

[0069] Running the computational graph may be used to train or use a machine learning model. In other words, the above steps may include: running the first computing node and the communication node in the third computational graph to jointly train or use the machine learning model with the second party.

[0070] Next, the specific implementation of step 207 in the case of communication in a push manner will be described.

[0071] First, for the first computing node connected to the receiving node in the third computing graph, after the receiving node is run to receive data, the data received by the receiving node is used to perform calculations during the execution of the first computing node. In other words, step 207 may specifically include: executing any receiving node in the third computing graph to obtain the first data sent by the second party; for the first computing node connected to the receiving node, executing the first computing node according to the first data. In this way, the first party does not actively pull data but passively waits for the second party to send data, thereby protecting data security.

[0072] Secondly, for the receiving node, since the first party cannot actively pull the data of the second party, if the receiving node does not receive the data, it needs to wait until the data is received. In other words, step 207 specifically includes: when the receiving node in the execution of the third computation graph does not receive the third data from the second party, wait until the third data is received; and use the received third data to execute the first computation node connected to the receiving node.

[0073] In the above process, if the first party does not receive the data through the receiving node, it cannot actively pull the data of the second party, thereby protecting data security.

[0074] In addition, for the first computing node connected to the sending node in the third computing graph, it is necessary to first execute the first computing node to obtain the calculated data, and then execute the sending node to send the data to the second party. In other words, step 207 specifically includes: executing the first computing node connected to any sending node in the third computing graph to obtain the second data; executing the sending node to send the second data to the second party.

[0075] For the data that the first party needs to send, the second party cannot pull the data, and the data can only be actively sent by the first party, thus protecting the data security.

[0076] Next, step 207 will be described with reference to a specific example. Figure 1 The calculation graph shown is used as an example of the first calculation graph to illustrate the operation logic of the first party and the second party. First, the first party will calculate the sum m1 of v1 and v2, and wait for m2 sent by the second party through the communication node. The second party will calculate the sum m2 of v3 and v4, send m2 to the first party, and wait for the first party to send m3. After the first party obtains m2, it calculates the product m3 of m1 and m2 and sends m3 to the second party. After receiving m3, the second party calculates the sum of v4 and m3 to obtain the output r.

[0077] This solution realizes the transformation of Tensorflow MPC machine learning modeling under a single cluster and a single controller to multiple clusters and multiple controllers by splitting the computational graph.

[0078] Compared with the prior art, multiple participants are in the same cluster, share the same computational graph and have only one controller. This solution splits a single cluster into multiple clusters. Different participants run their own computational graphs in different TensorFlow clusters. Multiple participants are not directly connected, which eliminates the harm that may be caused by random code submission by others in the same TensorFlow cluster. In addition, instead of multiple participants sharing a computational graph in the prior art, each participant has his own computational graph, and can control when to run the computational graph and which node in the computational graph to run, changing from a single controller to multiple controllers, ensuring the computing control of the participants.

[0079] This specification also provides a multi-party computing device, wherein the multi-party includes a first party and a second party, and the device is applied to the first party, such as Figure 6 As shown, including:

[0080] A computation graph acquisition module 610 is configured to acquire a first computation graph, wherein the first computation graph includes at least one first computation node corresponding to the first party and at least one second computation node corresponding to the second party;

[0081] A computation graph splitting module 620 is used to split the first computation graph to obtain a second computation graph; the second computation graph includes the at least one first computation node and at least one interactive node, and the interactive node corresponds to a computation node in the at least one second computation node that interacts with any of the first computation nodes;

[0082] A communication node adding module 630, configured to add a communication node between the interaction node and a first computing node connected to the interaction node to obtain a third computing graph;

[0083] The computation graph running module 640 is configured to run the first computation node and the communication node in the third computation graph.

[0084] In an optional implementation, the computation graph running module 640 is specifically used to: run the first computing node and the communication node in the third computation graph in the Tensorflow cluster of the first party.

[0085] In an optional implementation, the first party and the second party belong to different TensorFlow clusters, and the first party and the second party communicate with each other via a push method.

[0086] In an optional embodiment, the communication node adding module 630 is specifically used to: according to the connection relationship between the first computing node and the second computing node in the first computing graph, between the interaction node of the second computing graph and the first computing node connected to the interaction node, add sending nodes and receiving nodes in accordance with the data flow corresponding to the connection relationship.

[0087] In an optional implementation, the computation graph execution module 640 is specifically used to: execute any receiving node in the third computation graph to obtain the first data sent by the second party; and execute the first computing node connected to the receiving node according to the first data.

[0088] In an optional implementation, the computation graph execution module 640 is specifically used to: execute a first computation node connected to any sending node in the third computation graph to obtain second data; and execute the sending node to send the second data to the second party.

[0089] In an optional implementation, the computational graph running module 640 is specifically used to: when a receiving node in the execution of the third computational graph does not receive the third data from the second party, wait until the third data is received; and use the received third data to execute the first computational node connected to the receiving node.

[0090] In an optional implementation, the computation graph splitting module 620 is specifically used to: for the first computation graph, retain the first computation node, delete the second computation node, and obtain an intermediate computation graph; and add an interaction node corresponding to the second computation node to the intermediate computation graph to obtain a second computation graph.

[0091] In an optional implementation, the computation graph running module 640 is specifically used to: run the first computing node and the communication node in the third computation graph to jointly train or use the machine learning model with the second party.

[0092] In the 1990s, improvements to a technology could be clearly distinguished as hardware improvements (for example, improvements to the circuit structure of diodes, transistors, switches, etc.) or software improvements (improvements to the method flow). However, with the development of technology, many improvements to the method flow today can be regarded as direct improvements to the hardware circuit structure. Designers almost always obtain the corresponding hardware circuit structure by programming the improved method flow into the hardware circuit. Therefore, it cannot be said that an improvement in a method flow cannot be implemented using a hardware entity module. For example, a programmable logic device (PLD) (such as a field programmable gate array (FPGA)) is such an integrated circuit whose logical function is determined by the user's programming of the device. Designers can "integrate" a digital system on a PLD by programming it themselves, without having to ask a chip manufacturer to design and produce a dedicated integrated circuit chip. Moreover, nowadays, instead of manually making integrated circuit chips, this kind of programming is mostly implemented by "logic compiler" software, which is similar to the software compiler used when developing and writing programs, and the original code before compilation must also be written in a specific programming language, which is called hardware description language (HDL). There is not only one HDL, but many kinds, such as ABEL (Advanced Boolean Expression Language), AHDL (Altera Hardware Description Language), Confluence, CUPL (Cornell University Programming Language), HDCal, JHDL (Java Hardware Description Language), Lava, Lola, MyHDL, PALASM, RHDL (Ruby Hardware Description Language), etc. The most commonly used ones are VHDL (Very-High-Speed ​​Integrated Circuit Hardware Description Language) and Verilog. Those skilled in the art should also know that it is only necessary to program the method flow slightly in the above-mentioned hardware description languages ​​and program it into the integrated circuit, and then it is easy to obtain the hardware circuit that implements the logic method flow.

[0093] The controller can be implemented in any appropriate manner, for example, the controller can take the form of a microprocessor or processor and a computer-readable medium storing a computer-readable program code (such as software or firmware) that can be executed by the (micro)processor, a logic gate, a switch, an application-specific integrated circuit (ASIC), a programmable logic controller, and an embedded microcontroller. Examples of controllers include, but are not limited to, the following microcontrollers: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20, and Silicone Labs C8051F320. The memory controller can also be implemented as part of the control logic of the memory. Those skilled in the art also know that in addition to implementing the controller in a purely computer-readable program code manner, the controller can be implemented in the form of a logic gate, a switch, an application-specific integrated circuit, a programmable logic controller, and an embedded microcontroller by logically programming the method steps. Therefore, this controller can be considered as a hardware component, and the devices included therein for implementing various functions can also be regarded as structures within the hardware component. Or even, the devices for implementing various functions can be regarded as both software modules for implementing the method and structures within the hardware component.

[0094] The systems, devices, modules or units described in the above embodiments may be implemented by computer chips or entities, or by products with certain functions. A typical implementation device is a server system. Of course, this specification does not exclude that with the development of computer technology in the future, the computer that implements the functions of the above embodiments may be, for example, a personal computer, a laptop computer, a vehicle-mounted human-computer interaction device, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or a combination of any of these devices.

[0095] Although one or more embodiments of the present specification provide method operation steps as described in the embodiments or flow charts, more or less operation steps may be included based on conventional or non-creative means. The order of steps listed in the embodiments is only one way of executing the order of many steps, and does not represent the only execution order. When the device or terminal product in practice is executed, it can be executed in sequence or in parallel according to the method shown in the embodiments or the drawings (for example, a parallel processor or a multi-threaded processing environment, or even a distributed data processing environment). The term "include", "include" or any other variant thereof is intended to cover non-exclusive inclusion, so that the process, method, product or equipment including a series of elements includes not only those elements, but also includes other elements that are not explicitly listed, or also includes elements inherent to such a process, method, product or equipment. In the absence of more restrictions, it is not excluded that there are other identical or equivalent elements in the process, method, product or equipment including the elements. For example, if the words first, second, etc. are used to represent the name, they do not represent any specific order.

[0096] For the convenience of description, the above devices are described in various modules according to their functions. Of course, when implementing one or more of the present specification, the functions of each module can be implemented in the same or more software and / or hardware, or the module implementing the same function can be implemented by a combination of multiple sub-modules or sub-units, etc. The device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation. For example, multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.

[0097] This specification is described with reference to the flowcharts and / or block diagrams of the methods, apparatus (systems), and computer program products according to the embodiments of this specification. It should be understood that each process and / or box in the flowchart and / or block diagram, as well as the combination of the processes and / or boxes in the flowchart and / or block diagram, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing device to produce a machine, so that the instructions executed by the processor of the computer or other programmable data processing device generate instructions for implementing the processes in the flowchart and / or block diagram. Figure 1 A process or multiple processes and / or boxes Figure 1 A device that provides the functions specified in a block or multiple blocks.

[0098] These computer program instructions may also be stored in a computer-readable memory capable of directing a computer or other programmable data processing device to operate in a specific manner, so that the instructions stored in the computer-readable memory produce an article of manufacture comprising an instruction device, which implements the process Figure 1 A process or multiple processes and / or boxes Figure 1 A function specified in one or more boxes.

[0099] These computer program instructions can also be loaded onto a computer or other programmable data processing device so that a series of operating steps are executed on the computer or other programmable device to produce a computer-implemented process, thereby providing instructions for implementing the process. Figure 1 A process or multiple processes and / or boxes Figure 1 A step that specifies a function in one or more boxes.

[0100] In a typical configuration, a computing device includes one or more processors (CPU), input / output interfaces, network interfaces, and memory.

[0101] The memory may include non-permanent storage in a computer-readable medium, random access memory (RAM) and / or non-volatile memory in the form of read-only memory (ROM) or flash RAM. The memory is an example of a computer-readable medium.

[0102] Computer readable media include permanent and non-permanent, removable and non-removable media that can be implemented by any method or technology to store information. Information can be computer readable instructions, data structures, program modules or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, compact disk read-only memory (CD-ROM), digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic disk storage, graphene storage or other magnetic storage devices or any other non-transmission media that can be used to store information that can be accessed by a computing device. As defined herein, computer readable media does not include temporary computer readable media (transitory media), such as modulated data signals and carrier waves.

[0103] It should be understood by those skilled in the art that one or more embodiments of the present specification may be provided as a method, system or computer program product. Therefore, one or more embodiments of the present specification may take the form of a complete hardware embodiment, a complete software embodiment or an embodiment combining software and hardware. Moreover, one or more embodiments of the present specification may take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program code.

[0104] One or more embodiments of the present specification may be described in the general context of computer-executable instructions executed by a computer, such as program modules. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types. One or more embodiments of the present specification may also be practiced in distributed computing environments where tasks are performed by remote processing devices connected through a communication network. In a distributed computing environment, program modules may be located in local and remote computer storage media, including storage devices.

[0105] Each embodiment in this specification is described in a progressive manner, and the same and similar parts between the embodiments can be referred to each other, and each embodiment focuses on the differences from other embodiments. In particular, for the system embodiment, since it is basically similar to the method embodiment, the description is relatively simple, and the relevant parts can be referred to the partial description of the method embodiment. In the description of this specification, the description of the reference terms "one embodiment", "some embodiments", "example", "specific example", or "some examples" means that the specific features, structures, materials or characteristics described in conjunction with the embodiment or example are included in at least one embodiment or example of this specification. In this specification, the schematic representation of the above terms does not necessarily target the same embodiment or example. Moreover, the specific features, structures, materials or characteristics described can be combined in any one or more embodiments or examples in a suitable manner. In addition, those skilled in the art can combine and combine the different embodiments or examples described in this specification and the features of different embodiments or examples without contradiction.

[0106] The above description is only an example of one or more embodiments of the present specification and is not intended to limit one or more embodiments of the present specification. For those skilled in the art, one or more embodiments of the present specification may have various changes and variations. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present specification shall be included in the scope of the claims.

Claims

1. A multi-party computing method, wherein the multi-party comprises a first party and a second party, wherein the method is performed by the first party, comprising: Obtain a first computation graph; The first computation graph includes at least one first computation node corresponding to the first party and at least one second computation node corresponding to the second party; The first computing graph is split to obtain a second computing graph; the second computing graph includes the at least one first computing node and at least one interactive node, and the interactive node corresponds to a computing node in the at least one second computing node that interacts with any of the first computing nodes; Adding a communication node between the interactive node and a first computing node connected to the interactive node to obtain a third computing graph; The first computing node and the communication node in the third computing graph are run.

2. The method according to claim 1, wherein: The running of the first computing node and the communication node in the third computing graph includes: running the first computing node and the communication node in the third computing graph in a Tensorflow cluster of the first party.

3. The method according to claim 1, wherein: The first party and the second party belong to different TensorFlow clusters, and the first party and the second party communicate with each other through a push method.

4. The method according to claim 3, wherein: The step of adding a communication node between the interactive node and a first computing node connected to the interactive node to obtain a third computing graph includes: According to the connection relationship between the first computing node and the second computing node in the first computing graph, between the interactive node of the second computing graph and the first computing node connected to the interactive node, a sending node and a receiving node are added correspondingly according to the data flow corresponding to the connection relationship.

5. The method according to claim 4, wherein: The running of the first computing node and the communication node in the third computing graph includes: Execute any receiving node in the third computation graph to obtain the first data sent by the second party; For a first computing node connected to the receiving node, the first computing node is executed according to the first data.

6. The method according to claim 4, wherein: The running of the first computing node and the communication node in the third computing graph includes: Execute the first computing node connected to any sending node in the third computing graph to obtain second data; The sending node is executed to send the second data to the second party.

7. The method according to claim 4, wherein: The running of the first computing node and the communication node in the third computing graph includes: When the receiving node in the third computation graph does not receive the third data from the second party, waiting until the third data is received; The first computing node connected to the receiving node is executed using the received third data.

8. The method according to claim 1, wherein: The step of splitting the first computation graph to obtain a second computation graph includes: For the first computation graph, retain the first computation node and delete the second computation node to obtain an intermediate computation graph; An interaction node corresponding to the second computing node is added to the intermediate computing graph to obtain a second computing graph.

9. The method according to claim 1, wherein: The running of the first computing node and the communication node in the third computing graph includes: running the first computing node and the communication node in the third computing graph to jointly train or use the machine learning model with the second party.

10. A multi-party computing device, wherein the multi-party includes a first party and a second party, and the device is applied to the first party, comprising: A computation graph acquisition module, used to acquire a first computation graph; The first computation graph includes at least one first computation node corresponding to the first party and at least one second computation node corresponding to the second party; A computation graph splitting module, configured to split the first computation graph to obtain a second computation graph; the second computation graph includes the at least one first computation node and at least one interactive node, the interactive node corresponding to a computation node in the at least one second computation node that interacts with any of the first computation nodes; A communication node adding module, used for adding a communication node between the interactive node and a first computing node connected to the interactive node to obtain a third computing graph; A computation graph running module is used to run the first computing node and the communication node in the third computation graph.

11. A computer program product, comprising a computer program / instruction, which, when executed by a processor, implements the steps of the multi-party computing method according to any one of claims 1 to 9.

12. A computing device comprising a memory and a processor, wherein the memory stores executable code, and when the processor executes the executable code, the multi-party computing method according to any one of claims 1 to 9 is implemented.