WO2021111491A1 - 分散深層学習システムおよび分散深層学習方法 - Google Patents

分散深層学習システムおよび分散深層学習方法 Download PDF

Info

Publication number
WO2021111491A1
WO2021111491A1 PCT/JP2019/046967 JP2019046967W WO2021111491A1 WO 2021111491 A1 WO2021111491 A1 WO 2021111491A1 JP 2019046967 W JP2019046967 W JP 2019046967W WO 2021111491 A1 WO2021111491 A1 WO 2021111491A1
Authority
WO
WIPO (PCT)
Prior art keywords
calculation
node
nodes
calculation result
circuit
Prior art date
Application number
PCT/JP2019/046967
Other languages
English (en)
French (fr)
Inventor
勇輝 有川
顕至 田仲
伊藤 猛
和彦 寺田
坂本 健
Original Assignee
日本電信電話株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to US17/776,848 priority Critical patent/US20220398457A1/en
Priority to PCT/JP2019/046967 priority patent/WO2021111491A1/ja
Priority to JP2021562205A priority patent/JP7283577B2/ja
Publication of WO2021111491A1 publication Critical patent/WO2021111491A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/098Distributed learning, e.g. federated learning

Definitions

  • the present invention relates to a distributed deep learning system and a distributed deep learning method, and more particularly to a distributed deep learning technique that is executed in a distributed and coordinated manner by a plurality of computing nodes linked in a network.
  • Machine learning In recent years, by utilizing machine learning for various information and data, the sophistication of services and the provision of added value have been actively carried out. Machine learning at that time often requires a large amount of computational resources. In particular, in machine learning using a neural network called deep learning, it is necessary to process a large amount of learning data in learning, which is a process of optimizing the constituent parameters of the neural network. In order to speed up this learning process, one solution is to perform parallel processing with a plurality of arithmetic units.
  • Non-Patent Document 1 discloses a distributed deep learning system in which four computing nodes and an InfiniBand switch are connected via an InfiniBand network. Each computing node is equipped with four GPUs (Graphics Processing Units). In the distributed deep learning system disclosed in Non-Patent Document 1, four calculation nodes are used to process learning operations in parallel to increase the speed.
  • GPUs Graphics Processing Units
  • Non-Patent Document 2 discloses a configuration in which a computing node (GPU server) equipped with eight GPUs and an Ethernet (registered trademark) switch are connected via an Ethernet network.
  • This Non-Patent Document 2 discloses an example in which one, two, four, eight, 16, 32, and 44 computing nodes are used as the number of computing nodes, respectively.
  • machine learning is performed using the distributed synchronous stochastic gradient descent method (Distributed synchronous SGD (Stochastic Gradient Descent)). Specifically, machine learning is performed according to the following procedure.
  • the stochastic gradient descent method is a calculation process in which the loss function L (w) is reduced by slightly changing the value of each constituent parameter in the direction of the gradient. By repeating this process, the neural network is updated to one having a small loss function L (w), that is, an output close to the correct answer with high accuracy.
  • Non-Patent Document 3 discloses a distributed deep learning system having a configuration in which 128 computing nodes equipped with eight GPUs are connected via an InfiniBand network.
  • Non-Patent Document 3 discloses the relationship between the time required to perform 100 cycles of learning processing, the time required for communication, and the number of GPUs. According to this relationship, the time required for communication increases as the number of GPUs increases, and the number of GPUs increases sharply especially when the number of GPUs is 512 or more.
  • the present invention has been made to solve the above-mentioned problems, and an object of the present invention is to perform cooperative processing between computing nodes at high speed even if the number of computing nodes connected to the communication network increases. ..
  • the distributed deep learning system includes a plurality of computing nodes connected to each other via a communication network, and each of the plurality of computing nodes is used for arithmetic processing of a neural network.
  • a calculation device that calculates the included matrix product and outputs the first calculation result, a first storage device that stores the first calculation result output from the calculation device, and the storage device stored in the first storage device.
  • a first transmission circuit that transmits the first calculation result to another calculation node, a first reception circuit that receives the first calculation result from the other calculation node, and the first storage device stored in the first storage device.
  • the addition circuit for obtaining the second calculation result, which is the sum of the one calculation result and the first calculation result from the other calculation node received by the first reception circuit, and the second calculation result are calculated by another calculation.
  • An OAM processing circuit that records whether or not the first calculation result is output from the calculation device of the own node in the notification packet received by the third reception circuit, and the notification packet recorded by the OAM processing circuit.
  • the OAM processing circuit includes a third transmission circuit that transmits the first transmission to another computing node, and the OAM processing circuit is triggered by the state of the other computing node shown in the notification packet.
  • the circuit is characterized in that the first calculation result stored in the first storage device is transmitted to another calculation node.
  • the distributed deep learning system includes a plurality of computing nodes and an aggregation node connected to each other via a communication network, and each of the plurality of computing nodes is provided with a plurality of computing nodes.
  • An arithmetic device that calculates the matrix product included in the arithmetic processing of the neural network and outputs the first arithmetic result, and a first transmission circuit that transmits the first arithmetic result output from the arithmetic node to the aggregation node.
  • the first receiving circuit that receives the second calculation result which is the sum of the first calculation results calculated by the plurality of calculation nodes and the notification packet indicating the state of the plurality of calculation nodes are received from the aggregation node.
  • the second receiving circuit the first OAM processing circuit that records whether or not the first calculation result is output from the calculation device of the own node in the notification packet received by the second reception circuit, and the above.
  • the first OAM processing circuit has a first storage device, and the first OAM processing circuit stores the first calculation result stored in the first transmission circuit in the first transmission circuit based on an instruction from the aggregation node. Is transmitted to the aggregation node, and the aggregation node has a second OAM processing circuit that generates the notification packet, a third transmission circuit that transmits the generated notification packet to the plurality of calculation nodes, and the plurality.
  • the third receiving circuit that receives the notification packet recorded by the first OAM processing circuit of each of the computing nodes of the above is received from the plurality of computing nodes, and the first calculation result from the plurality of computing nodes is received.
  • the second OAM processing circuit has a second network processing device having a fourth transmission circuit for transmitting to the calculation node of the above, and the second OAM processing circuit is triggered by the state of the plurality of calculation nodes indicated by the notification packet. In order to aggregate the first calculation results of a plurality of calculation nodes, the plurality of calculation nodes are instructed to transmit the first calculation results to their own nodes.
  • the distributed deep learning method is a distributed deep learning method executed by a distributed deep learning system including a plurality of computing nodes connected to each other via a communication network.
  • Each of the plurality of calculation nodes calculates the matrix product included in the calculation process of the neural network and outputs the first calculation result, and the first storage of the first calculation result output in the calculation step.
  • the first storage step stored in the device, the first transmission step of transmitting the first calculation result stored in the first storage device to another calculation node, and the first calculation result from the other calculation node. It is the sum of the first receiving step to be received, the first calculation result stored in the first storage device, and the first calculation result from the other calculation node received in the first reception step.
  • the OAM processing step includes a network processing step having an OAM processing step for recording the data and a third transmission step for transmitting the notification packet recorded in the OAM processing step to another computing node, and the OAM processing step is the notification. It is characterized in that, in the first transmission step, the first calculation result stored in the first storage device is transmitted to the other calculation node, triggered by the state of the other calculation node shown in the packet.
  • the distributed deep learning method is executed by a distributed deep learning system including a plurality of computing nodes and aggregate nodes connected to each other via a communication network.
  • each of the plurality of calculation nodes calculates the matrix product included in the calculation process of the neural network and outputs the first calculation result, and the first calculation step output in the calculation step.
  • the own node outputs the first calculation result in the calculation step to the second reception step for receiving the notification packet indicating the status of the plurality of calculation nodes and the notification packet received in the second reception step.
  • a first network processing step having a first OAM processing step for recording whether or not, and a second transmission step for transmitting the notification packet recorded in the first OAM processing step to the aggregation node, and the above. It has a first storage step for storing the second calculation result received in the first reception step in the first storage device, and the first OAM processing step is based on an instruction from the aggregation node.
  • the first calculation result stored in the first storage device is transmitted to the aggregation node, and the aggregation node is generated in the second OAM processing step for generating the notification packet.
  • the notification packet recorded in the third transmission step of transmitting the notification packet to the plurality of computing nodes and the first OAM processing step of each of the plurality of computing nodes is received from the plurality of computing nodes.
  • the second calculation result which is the sum of the third reception step, the fourth reception step for receiving the first calculation result from the plurality of calculation nodes, and the first calculation result received in the fourth reception step, is obtained.
  • It has a second network processing step having an addition step and a fourth transmission step of transmitting the second calculation result obtained in the addition step to the plurality of calculation nodes, and the second OAM processing step.
  • the first calculation result is sent to the plurality of calculation nodes. Instructing to send to own node It is characterized by.
  • each of the plurality of computing nodes connected to each other via the communication network receives a notification packet notifying the status of the plurality of computing nodes, and receives the notification packet from the computing device of the own node. 1 Record whether or not the calculation result is output, and send the recorded notification packet to another calculation node. Therefore, even if the number of computing nodes connected to the communication network increases, the cooperative processing between the computing nodes can be performed at higher speed.
  • FIG. 1 is a block diagram showing a configuration of a distributed deep learning system according to the first embodiment of the present invention.
  • FIG. 2 is a diagram for explaining the learning process of the neural network.
  • FIG. 3 is a diagram for explaining a calculation example of the hidden layer.
  • FIG. 4 is a diagram for explaining a calculation example of the hidden layer.
  • FIG. 5 is a diagram for explaining weight parameters that are divided and stored in storage units of a plurality of calculation nodes.
  • FIG. 6 is a block diagram showing a configuration of a calculation node according to the first embodiment.
  • FIG. 7 is a schematic diagram showing an example of the configuration of the OAM packet according to the first embodiment.
  • FIG. 8 is a block diagram showing a configuration example of a calculation node according to a conventional example.
  • FIG. 9 is a block diagram showing an example of the hardware configuration of the calculation node according to the first embodiment.
  • FIG. 10 is a flowchart for explaining the operation of the calculation node according to the first embodiment.
  • FIG. 11 is a sequence diagram for explaining the operation of the distributed deep learning system according to the first embodiment.
  • FIG. 12 is a sequence diagram for explaining the operation of the distributed deep learning system according to the first embodiment.
  • FIG. 13 is a sequence diagram for explaining the operation of the distributed deep learning system according to the second embodiment.
  • FIG. 14 is a block diagram showing a configuration of a distributed deep learning system according to a third embodiment.
  • FIG. 15 is a block diagram showing the configuration of the aggregation node according to the third embodiment.
  • FIG. 16 is a block diagram showing an example of the hardware configuration of the aggregation node according to the third embodiment.
  • FIG. 17 is a sequence diagram for explaining the operation of the distributed deep learning system according to the third embodiment.
  • FIG. 18 is a sequence diagram for explaining the operation of the distributed deep learning system according to the third embodiment.
  • the distributed deep learning system according to the embodiment of the present invention includes a plurality of calculation nodes 1-1 to 1-3 connected via a communication network.
  • Each of the plurality of calculation nodes 1-1 to 1-3 calculates a part of the matrix product included in the arithmetic processing of the neural network, and from the calculation result of the matrix product calculated by the own node and the other calculation node 1. Find the sum with the calculation result of the received matrix product. Further, each of the plurality of calculation nodes 1-1 to 1-3 distributes the sum of the calculation results of the obtained matrix products to the other calculation nodes 1.
  • a plurality of calculation nodes 1-1 to 1 including information on whether or not a part of the matrix product has been calculated in each of the plurality of calculation nodes 1-1 to 1-3.
  • the notification packet indicating the state of -3 is shared by the calculation nodes 1-1 to 1-3.
  • Each of the plurality of calculation nodes 1-1 to 1-3 is triggered by the state of the calculation nodes 1-1 to 1-3 shown in the notification packet, and the calculation result of the matrix product calculated by the own node and other calculations. Find the sum with the calculation result of the matrix product received from node 1.
  • the Operation Amination Maintenance (OAM) packet used for the operation, management, and maintenance of the communication network is used as the notification packet.
  • the distributed deep learning system performs the addition processing of a part of the matrix product distributed and calculated at each of the calculation nodes 1-1 to 1-3 by the synchronization method using the OAM packet. Execute and distribute the addition result to a plurality of calculation nodes 1-1 to 1-3. Further, in the distributed deep learning system according to the present embodiment, each of the plurality of calculation nodes 1-1 to 1-3 controls an OAM processing circuit that processes OAM packets, and a network processing device that controls data transmission / reception and communication. It is one of the features to prepare for.
  • calculation nodes 1-1 to 1-3 may be collectively referred to as calculation node 1. Further, in each diagram including FIG. 1, for the sake of simplicity, the case where the distributed deep learning system includes three calculation nodes 1-1 to 1-3 is described, but the calculation node 1 is N ( Any number of N ⁇ 2) can be used.
  • FIG. 2 shows an example of the learning process of the neural network performed by using the distributed deep learning system according to the present invention.
  • FIG. 3 shows an example of calculation of the hidden layer in the learning process of the neural network performed by using the distributed deep learning system according to the present invention.
  • FIG. 4 shows an example in which the calculation of the hidden layer in the learning process of the neural network performed by using the distributed deep learning system according to the present invention is divided into a plurality of calculation nodes.
  • FIG. 5 shows an example in which weight parameters when performing a neural network learning process using the distributed deep learning system of the present invention are divided and stored in a plurality of calculation nodes 1.
  • each calculation node 1 which is a learning node performs a predetermined arithmetic processing of the neural network using the learning data and the neural network, and calculates the gradient of the weight data.
  • each of the plurality of calculation nodes 1 has different weight data gradients.
  • a network processing device realized by a computing interconnect device connected to a communication network aggregates the gradients of weighted data, performs averaging processing of the aggregated data, and distributes the aggregated data to each calculation node 1 again.
  • Each calculation node 1 uses the gradient of the averaged weight data, and again uses the training data and the neural network to perform a predetermined arithmetic processing of the neural network.
  • the distributed deep learning system acquires the trained neural network model.
  • the calculation node 1 calculates the output value of the neural network, which is a mathematical model constructed by software, and further updates the configuration parameters of the neural network according to the training data to improve the accuracy of the output value. Has a function.
  • the neural network is built in each calculation node 1.
  • the calculation node 1 may be realized by software on a CPU or GPU, or by an LSI (Large Scale Integration) circuit formed in an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit). You may. A specific example of the hardware configuration of the calculation node 1 will be described later.
  • the output of the hidden layer when the output of the hidden layer is obtained, there is a weight (w) as a parameter expressing the strength of the relationship between the input x and the hidden layer h, and the product-sum operation of the input x and the weight w is performed. By doing so, the output of the hidden layer h is obtained. For example, when obtaining the output of the hidden layer h 2, by performing the product-sum operation of the input x 1 ⁇ x 6 and the weight w 12 ⁇ w 62, to obtain an output of the hidden layer h 2.
  • the model parallel method that divides the neural network model into a plurality of calculation nodes 1 is used, specifically, as shown in FIG. 4, the calculation node 1-1 and the calculation node 1-
  • the output of the hidden layer h 2 is calculated across 2.
  • group communication is performed in order to add the results calculated by each calculation node 1.
  • An object of the present invention is to speed up this collective communication.
  • a part of the calculation result of the matrix product included in the calculation process of the neural network calculated by each calculation node 1 is called a “partial calculation result” (first calculation result), and the sum of the partial calculation results is called. It is called “overall calculation result” (second calculation result).
  • the output of the compute nodes 1-2 and the compute nodes 1-3 hidden across layer h 4 is calculated. Further, for the outputs of the hidden layers h 1 , h 3 , and h 5 , the calculation is completed without straddling the plurality of calculation nodes 1.
  • FIG. 5 shows the weight parameters w held by the plurality of calculation nodes 1-1 to 1-3.
  • the number of weight parameters w that can be held by each calculation node 1-1 to 1-3 is determined by the available memory capacity of each calculation node 1-1 to 1-3. Therefore, as the model size of the neural network increases, the number of weight parameters w also increases, and each calculation node 1-1 to 1-3 may not be able to hold the weight parameter w of the entire neural network. In this case, as shown in FIG. 5, the weight parameters w 11 to w 65 of the neural network to be learned are divided and held in the calculation nodes 1-1 to 1-3.
  • the distributed deep learning system includes a plurality of calculation nodes 1-1 to 1-3.
  • a plurality of calculation nodes 1-1 to 1-3 are connected by a ring-shaped communication network.
  • the plurality of calculation nodes 1-1 to 1-3 according to the present embodiment can be connected by a communication network capable of bidirectional communication.
  • each of the calculation nodes 1-1 to 1-3 includes an arithmetic unit (arithmetic unit) 10, a storage unit (first storage device, a second storage device) 11, and a network processing unit (a network processing unit).
  • a network processing device 12 is provided.
  • the calculation unit 10 calculates a part of the matrix product of the neural network and outputs the partial calculation result. As described with reference to FIGS. 4 and 5, the arithmetic unit 10 calculates the matrix product of the weight parameter w of the neural network held by the own node and the output of the input x or the hidden layer h. The output of the hidden layer h is the overall calculation result 111 held in the storage unit 11, and is shared by the other calculation nodes 1.
  • the storage unit 11 has an area for holding the partial calculation result (first storage device) 110 and the entire calculation result (second storage device) 111. Further, the storage unit 11 holds a part of the weight parameters w of the neural network weight parameters w.
  • the partial calculation result 110 stores the partial calculation result output from the calculation unit 10.
  • the total calculation result 111 stores the total calculation result obtained by the own node and the total calculation result received from the other calculation node 1.
  • the network processing unit 12 includes a receiving unit (first receiving circuit, second receiving circuit, third receiving circuit) 120, an adding unit (adding circuit) 121, an OAM processing unit (OAM processing circuit) 122, and a transmitting unit (first).
  • a transmission circuit, a second transmission circuit, and a third transmission circuit) 123 are provided.
  • the receiving unit 120 receives the partial calculation result from the other calculation node 1 via the communication network. In addition, the receiving unit 120 receives the overall calculation result from the other calculation node 1. Further, the receiving unit 120 receives an OAM packet indicating the state of the computing nodes 1-1 to 1-3 shared by the plurality of computing nodes 1-1 to 1-3. For example, the receiving unit 120 can receive an OAM packet issued from another arbitrarily set calculation node 1 as a starting point.
  • the addition unit 121 adds the partial calculation result from the other calculation node 1 received by the reception unit 120 and the partial calculation result calculated by the own node to obtain the total calculation result.
  • the addition unit 121 can be configured by, for example, an addition circuit using a logic circuit.
  • the overall calculation result obtained by the addition unit 121 is stored in the storage unit 11.
  • the OAM processing unit 122 records whether or not the partial calculation result is output by the calculation unit 10 of the own node in the OAM packet received by the reception unit 120. Further, when the own node is set as a master node that controls another calculation node 1, the OAM processing unit 122 generates an OAM packet at a fixed cycle and transmits the OAM packet to the other calculation node 1.
  • OAM generally includes a function to support the operation, management, and maintenance of Ethernet, and is used as a protocol for network installation, monitoring, and the like.
  • protocols standardized by IEEE, ITU-T, and MEF, or vendor-specific protocols are included.
  • the OAM processing unit 122 sets the value of a predetermined bit of the OAM packet to "1" and gives a flag.
  • the OAM processing unit 122 is calculated by its own node with respect to the transmitting unit 123, triggered by the state of the other computing node 1 shown in the OAM packet from the other computing node 1 received by the receiving unit 120.
  • the partial calculation result is transmitted to another calculation node 1.
  • the OAM processing unit 122 can determine that the synchronization is completed when it detects that the partial calculation result is output in all of the other calculation nodes 1 from the value of the flag of the OAM packet.
  • FIG. 7 is a schematic diagram showing an example of the structure of the OAM packet according to the present embodiment. As shown in (a) of FIG. 7 and (b) of FIG. 7, in the OAM packet, the flags F (F1, F2, ... ⁇ , FN (N ⁇ 2)).
  • the OAM packet shown in FIG. 7A is generated, for example, by using any calculation node 1 among the plurality of calculation nodes 1 as a master node.
  • the calculation node 1 which has become a slave node sets a value "1" indicating "completion” at the bit position of the own node of the received OAM packet when the partial operation on the own node is completed.
  • the value of the flag F2 is "1”
  • the second calculation node 1- of the calculation nodes 1-1, ..., 1-N is a slave node. It is shown that the partial calculation in 2 is completed.
  • the transmission unit 123 transmits the partial calculation result calculated by the calculation unit 10 of the own node stored in the storage unit 11 to another calculation node 1 via the communication network. Further, the transmission unit 123 distributes the entire calculation result obtained by the addition unit 121 to the other calculation nodes 1 via the communication network. Further, the transmission unit 123 transmits the OAM packet processed by the OAM processing unit 122 to the other calculation node 1.
  • each of the plurality of calculation nodes 1-1 to 1-3 has the same functional configuration.
  • the calculation node 100 shown in FIG. 8 includes a calculation unit 1000, a storage unit 1100, and a network processing unit 1200.
  • the calculation node 1 of the present embodiment includes an OAM processing unit 122 that processes an OAM packet and a partial calculation result received by the network processing unit 12 from another calculation node 1. It is provided with an addition unit 121 for obtaining the sum with the partial calculation result calculated by the own node.
  • the calculation unit 1000 includes an addition unit 1221 and does not have a configuration corresponding to the OAM processing unit 122.
  • the addition unit 1221 provided in the calculation unit 1000 adds the time for memory access to the memory constituting the storage unit 1100 in order to obtain the overall calculation result.
  • the total processing time is also longer than that of the configuration of the present embodiment.
  • the network processing unit 12 included in each of the calculation nodes 1-1 to 1-3 has the OAM processing unit 122 and is shared by all the calculation nodes 1-1 to 1-3. Process the OAM packet notifying the status of the compute node 1.
  • Each calculation node 1 detects from the value of the flag of the OAM packet that the partial calculation on the other calculation node 1 required for the whole calculation is completed, that is, the synchronization is completed.
  • the calculation node 1 starts the group communication if only a specific calculation node 1 that performs the group communication including the execution of the whole operation and the distribution of the total operation result has completed the partial calculation. Therefore, the calculation of each calculation node 1 It is not necessary to perform the entire calculation in the unit 10, and the read / write of the memory associated therewith can be reduced. Further, since the sum of the partial calculation result received from the other calculation node 1 and the partial calculation result calculated by the own node is calculated by the addition unit 121 provided in the network processing unit 12, it occurs in the calculation node 100 of FIG. No additional memory access time is incurred.
  • the calculation node 1 can be realized by, for example, a computer including a CPU 101, a main memory 102, a GPU 103, a NIC 104, a storage 105, and an I / O 106, and a program for controlling these hardware resources. it can.
  • the main memory 102 stores in advance programs for the CPU 101 and the GPU 103 to perform various controls and calculations.
  • the CPU 101, GPU 103, and main memory 102 realize each function of the calculation node 1, such as the calculation unit 10, the addition unit 121, and the OAM processing unit 122 shown in FIGS. 1 and 6.
  • NIC104 is an interface circuit for network connection between calculation nodes 1 and various external electronic devices. NIC 104 realizes the receiving unit 120 and the transmitting unit 123 of FIG. The NIC 104 can use, for example, an interface between devices that supports communication with 100 Gigabit Ethernet (registered trademark).
  • the storage 105 is composed of a readable and writable storage medium and a drive device for reading and writing various information such as programs and data to the storage medium.
  • a semiconductor memory such as a hard disk or a flash memory can be used as the storage medium for the storage 105.
  • the storage 105 realizes the storage unit 11 described with reference to FIGS. 1 and 6.
  • the storage 105 has a program storage area for storing a program for the calculation node 1 to execute a distributed deep learning process such as a neural network calculation including a matrix product and an OAM packet process.
  • the storage 105 may have, for example, a backup area for backing up the above-mentioned data, programs, and the like.
  • the I / O 106 is composed of a network port that inputs a signal from an external device and outputs a signal to the external device.
  • a network port for example, two or more network ports can be used.
  • the adder circuit 107 for example, an adder circuit composed of a basic logic gate can be used.
  • the adder circuit 107 realizes the adder 121 described with reference to FIG.
  • the adder circuit 107 is provided in a network processing device including the NIC 104 and the I / O 106.
  • the arithmetic unit is composed of the CPU 101, the main memory 102, the GPU 103, and the storage 105.
  • the OAM processing circuit 108 is realized by, for example, a composite logic gate in which a basic logic gate is combined. Alternatively, the OAM processing circuit 108 can be realized as a dedicated circuit such as an ASIC or a combination of an electric circuit and a program. In the present embodiment, the OAM processing circuit 108 is provided in the transmission line side network processing device including the NIC 104 and the I / O 106, similarly to the addition circuit 107.
  • the communication network NW for example, a wideband network such as 100 Gbit Ethernet is used.
  • the arithmetic unit 10 calculates a part of the matrix product in the learning of the neural network (step S1).
  • step S2 when the partial calculation result obtained by the calculation unit 10 is stored in the storage unit 11 (step S2: YES), the OAM processing unit 122 receives the OAM packet received from the other calculation node 1 by the reception unit 120. Is set (step S3). On the other hand, if the partial calculation result calculated by the own node is not obtained (step S2: NO), the calculation in step S1 is executed (step S1). In this case, the OAM processing unit 122 transfers the OAM packet received from the other calculation node 1 to the other calculation node 1 without setting a flag even if the reception unit 120 receives the OAM packet.
  • the OAM processing unit 122 completes the partial calculation of the other calculation node 1 related to the collective communication of its own node from the value of the flag of each calculation node 1 shown in the OAM packet received by the reception unit 120.
  • the network processing unit 12 starts group communication (step S5).
  • the OAM processing unit 122 can start the group communication based on the instruction to start the group communication from the calculation node 1 set as the master node.
  • the distributed deep learning system is a synchronization system using OAM packets, and for example, the state of the flag of the OAM packet indicating that the partial calculation at all the calculation nodes 1-1 to 1-3 has been completed.
  • the partial calculation result obtained by the own node can be collectively communicated and shared with another calculation node 1.
  • the calculation nodes 1-1 to 1-3 until the value of the flag of the OAM packet received at a fixed cycle indicates that the partial calculation is completed in all the calculation nodes 1-1 to 1-3.
  • the storage unit 11 holds the partial calculation result calculated by the own node.
  • the distributed deep learning system is based on the state of the OAM packet. It may be triggered by the completion of the partial calculation in some of the calculation nodes 1 constituting the above.
  • h 2 can be obtained when the calculation of the calculation node 1-1 and the calculation node 1-2 is completed, so that the calculation of the calculation node 1-3 does not have to be completed.
  • Collective communication may be started.
  • the transmitting unit 123 transmits the partial calculation result calculated by the own node to another computing node 1 via the communication network. Further, the receiving unit 120 receives the partial calculation result calculated by the other calculation node 1. At this time, as shown in FIG. 1, the transmission unit 123 transmits the partial calculation result with another predetermined calculation node 1 as the transmission destination. Further, the receiving unit 120 receives the partial calculation result from another predetermined calculation node 1 connected to the network.
  • the addition unit 121 obtains the total calculation result, which is the sum of the partial calculation result obtained by the own node and the partial calculation result received from the other calculation node 1 (step S6).
  • the network processing unit 12 distributes the overall calculation result obtained in step S6 to the other calculation nodes 1 (step S7). Specifically, the transmission unit 123 transmits the overall calculation result obtained by the addition unit 121 to another calculation node 1 via the communication network. After that, the entire calculation result, which is the sum of the partial calculation results calculated by the plurality of calculation nodes 1-1 to 1-3, is stored in the storage unit 11.
  • the calculation node 1-1 holds weight parameters w 12 to w 42 indicating the connection between the inputs x 1 to x 4 and the hidden layer h 2.
  • the calculation node 1-2 holds the weight parameters w 52 and w 62 of the other inputs x 5 and x 6 and the hidden layer h 2 . Therefore, when the partial operations of the calculation nodes 1-1 and 1-2 are completed, the entire operation for obtaining the output of the hidden layer h 2 can be executed.
  • the compute nodes 1-2 hold weight parameters w 14 to w 24 indicating the connection between the inputs x 1 to x 2 and the hidden layer h 4.
  • the calculation nodes 1-3 hold the weight parameters w 34 to w 64 of the other inputs x 3 to x 6 and the hidden layer h 4. Therefore, by partial operation of computing nodes 1-2 and 1-3 are completed, it is possible to perform the entire calculation for obtaining the output of the hidden layer h 4.
  • the calculation node 1-1 generates an OAM packet in the OAM processing unit 122, and transmits the generated OAM packet from the transmission unit 123 to the other calculation nodes 1-2, 1-3 (step). S100).
  • the OAM packets generated and issued by the calculation node 1-1 are transferred in the order of, for example, the calculation nodes 1-2 and 1-3.
  • the OAM processing unit 122 sets a flag of a predetermined bit of the OAM packet (step S102).
  • the transmission unit 123 of the calculation node 1-1 transmits the flagged OAM packet to the adjacent calculation node 1-2.
  • the calculation node 1-2 completes the partial calculation on its own node (step S103).
  • the partial calculation result is held in the storage unit 11.
  • the OAM processing unit 122 of the calculation node 1-2 sets a flag indicating that the partial calculation at the own node is completed in a predetermined bit of the OAM packet sent from the calculation node 1-1.
  • the calculation node 1-2 sends the flagged OAM packet from the transmission unit 123 to the calculation node 1-3.
  • the OAM packet at this time is flagged to indicate that the partial calculation at the calculation node 1-1 and the calculation node 1-2 has been completed.
  • the OAM processing unit 122 of the calculation node 1-1 instructs the start of collective communication between the calculation nodes 1-1 and 1-2 from the flag state of the returned OAM packet (step S105). ).
  • the calculation node 1-2 receives the instruction, for example, the calculation node 1-2 transmits the partial calculation result obtained by its own node from the transmission unit 123 to the calculation node 1-1, and the calculation node 1-1 is the addition unit 121.
  • the partial calculation results of the own node and the calculation node 1-2 are added together to perform the whole calculation.
  • the calculation node 1-1 distributes the result of the whole calculation to the other calculation nodes 1-2 and 1-3.
  • the OAM processing unit 122 of the calculation node 1-1 which is the master node, further transmits the OAM packet to the other calculation nodes 1-2, 1-3.
  • the calculation unit 10 of the calculation node 1-3 completes the partial calculation at the own node (step S106).
  • the calculation nodes 1-3 store the partial calculation result in the storage unit 11.
  • the OAM processing unit 122 sets a flag indicating that the partial calculation on the own node is completed (step S107).
  • the transmission unit 123 of the calculation node 1-3 transmits the flagged OAM packet to the calculation node 1-1 and the calculation node 1-2.
  • the calculation node 1-1 which is a master node, receives the OAM packet, and the OAM processing unit 122 instructs the calculation nodes 1-2, 1-3 to start collective communication from the flag state of the OAM packet (). Step S108). After that, the calculation nodes 1-2 and 1-3 that have received the instruction perform the whole calculation and distribute the obtained total calculation result to the calculation nodes 1-1 to 1-3.
  • FIG. 12 shows the operation when the distributed deep learning system according to the present embodiment starts group communication after the partial operations on all the calculation nodes 1-1 to 1-3 are completed. It will be explained with reference to.
  • the calculation node 1-1 generates an OAM packet in the OAM processing unit 122, and transmits the generated OAM packet from the transmission unit 123 to the other calculation nodes 1-2, 1-3 (step). S100).
  • the OAM processing unit 122 of the calculation node 1-1 sets a flag of a predetermined bit of the OAM packet (step). S102).
  • the calculation node 1-1 transmits the flagged OAM packet from the transmission unit 123 to the other calculation nodes 1-2 and 1-3.
  • the calculation node 1-2 completes the partial calculation on its own node (step S103).
  • the storage unit 11 holds the partial calculation result.
  • the OAM processing unit 122 of the calculation node 1-2 sets a flag indicating that the partial calculation at the own node is completed in a predetermined bit of the OAM packet sent from the calculation node 1-1.
  • the calculation node 1-2 sends the flagged OAM packet from the transmission unit 123 to the calculation node 1-3.
  • the OAM packet at this time is flagged to indicate that the partial calculation at the calculation node 1-1 and the calculation node 1-2 has been completed.
  • the calculation node 1-1 which is the master node, receives the OAM packet in which the flag value is set and the state is recorded, and further transfers it to the other calculation nodes 1-2, 1-3.
  • the calculation unit 10 of the calculation node 1-3 completes the partial calculation on the own node (step S106).
  • the calculation nodes 1-3 store the partial calculation result in the storage unit 11.
  • the OAM processing unit 122 sets a flag indicating that the partial calculation on the own node is completed (step S107).
  • the transmission unit 123 of the calculation node 1-3 transmits the flagged OAM packet to the calculation node 1-1 and the calculation node 1-2.
  • the calculation node 1-1 which is a master node, receives the OAM packet, and the OAM processing unit 122 indicates that the partial calculation in the calculation nodes 1-1 to 1-3 has been completed from the flag state of the OAM packet. Detect.
  • the calculation node 1-1 instructs the start of collective communication between the calculation nodes 1-1 to 1-3 when the partial calculation in all the calculation nodes 1-1 to 1-3 is completed. (Step S109). After that, the calculation nodes 1-1 to 1-3 perform the whole calculation, and the obtained total calculation result is distributed to the calculation nodes 1-1 to 1-3.
  • the communication packet is used to transmit the partial calculation result calculated by the transmitting unit 123 at the own node in order to share the partial calculation result, and the receiving unit 120 transmits the partial calculation result to the other calculation node 1.
  • the partial calculation result from the calculation node 1 of the above can be received.
  • the communication packet includes an identifier for determining whether or not it is a partial calculation result addressed to the local node.
  • the header of the communication packet including the partial calculation result it is possible to determine whether the data is addressed to the own node depending on whether or not the flag is set at a different bit position for each calculation node 1-1 to 1-3. ..
  • a flag is set at the bit position of the local node in the header of the communication packet received by the receiving unit 120, it is determined that the partial calculation result included in the received communication packet is the data addressed to the local node. Then, the total calculation result, which is the sum of the partial calculation result calculated by the own node and the partial calculation result from the other received calculation node 1, is obtained.
  • each of the calculation nodes 1-1 to 1-3 is a partial calculation result output from the calculation unit 10 of the own node based on the value of the flag indicated by the OAM packet received by the own node. Is not limited to the case of transmitting to another calculation node 1.
  • the calculation node 1 may be configured so that the calculation unit 10 of the own node starts a partial calculation based on the value of the flag indicated by the received OAM packet.
  • each calculation node 1 is neural when the partial calculation is completed by the synchronous processing using the OAM packet shared by all the calculation nodes 1. A part of the matrix product in the calculation of the network is calculated and the partial calculation result is transmitted to another calculation node 1. Further, the calculation node 1 obtains the total calculation result which is the sum of the result of the partial calculation received from the other calculation node 1 and the result of the partial calculation calculated by the own node, and further obtains the total calculation result from the other calculation node. Distribute to 1.
  • the calculation unit 10 of each calculation node 1 it is necessary for the calculation unit 10 of each calculation node 1 to perform the whole calculation by providing the network processing unit 12 with a calculation function of the total calculation result in this series of processing. It disappears, and the read / write of the memory associated with it can be reduced. Therefore, the learning process can be speeded up, and even if the number of computing nodes connected to the communication network increases, the cooperative processing between the computing nodes can be performed at a higher speed.
  • the group communication can be started at those calculation nodes 1, so that the distributed deep learning process is performed. Can be made faster.
  • the network processing unit 12 of each calculation node 1 includes an OAM processing unit 122, and processes the OAM packet including adding a flag to the OAM packet and reading the OAM packet. .. Therefore, since the processing can be performed without copying the OAM packet to the storage unit 11, the processing delay can be reduced.
  • the read / write of the memory associated therewith can be reduced, so that the number of calculation nodes 1 connected to the communication network increases.
  • the cooperative processing between the calculation nodes 1 can be performed at a higher speed.
  • an arbitrary calculation node 1-1 is used as a starting point to issue an OAM packet, and the other calculation nodes 1-2 and 1-3 read the flagged OAM packet whose state is recorded. It was. Further, in the first embodiment, a case where the calculation node 1-1 gives an instruction to start group communication to the calculation nodes 1-2 and 1-3 triggered by the state of the OAM packet has been described. On the other hand, in the second embodiment, the calculation node 1-1 set as the master node selects the specific calculation node 1 in which the collective communication occurs among the plurality of calculation nodes 1-1 to 1-3. Notify each calculation node 1 of the specific information to be specified (hereinafter, referred to as "division information" of the model).
  • the division information is information indicating which calculation node 1 has completed the partial calculation before the collective communication can be started. For example, an ID unique to the calculation node 1 can be used as the division information.
  • the division information is held in the OAM processing unit 122 of the calculation node 1-1 set as the master node.
  • the calculation nodes 1-2 and 1-3 that receive the division information from the master node issue the OAM packet and add a flag according to the completion of the partial calculation result based on the division information. Perform between 1-3.
  • the division information from the master node is transmitted from the transmission unit 123 (fourth transmission circuit) to the other calculation node 1.
  • the node of any one of the calculation nodes 1 set as the slave node that received the division information in the reception unit 120 (fifth reception circuit) includes its own node in the reception division information in the OAM processing unit 122. If so, generate an OAM packet. Further, in the calculation node 1 that generated the OAM packet, the OAM processing unit 122 causes the transmission unit 123 to transmit the OAM packet to another calculation node 1 involved in the collective communication specified by the division information.
  • the calculation node 1 that generates and issues the OAM packet the calculation node 1 having the smallest or largest ID value shown in the division information, or the calculation node 1 that completes the partial calculation first is the OAM packet. It may be configured to be issued.
  • the OAM processing unit 122 sets a flag of the OAM packet in the calculation unit 10 of the own node when the partial calculation is completed.
  • FIG. 13 is an operation sequence diagram of the distributed deep learning system according to the present embodiment.
  • the calculation node 1-1 is set as the master node and the calculation nodes 1-2 and 1-3 are slave nodes will be described. Further, it is assumed that the network processing unit 12 of the master node holds the division information indicating which calculation node 1 performs collective communication. Further, in the following, a case where the calculation node 1 to which the smallest ID value is given by the division information issues an OAM packet will be described, and the ID value given to the calculation node 1-2 is the calculation node 1-3. It shall be smaller than the value of the ID given to.
  • the transmission unit 123 of the calculation node 1-1 set as the master node transmits the division information generated by the OAM processing unit 122 to the other calculation nodes 1-2 and 1-3 (step S200).
  • the division information refers to a specific calculation node 1 that outputs a plurality of partial calculation results required for the addition unit 121 to execute a specific overall calculation from among a plurality of calculation nodes 1-1 to 1-3. Information to identify.
  • the calculation node 1-2 having the smallest ID value included in the division information generates an OAM packet in the OAM processing unit 122 of its own node, and OAM to another calculation node 1-3 which is a partner of collective communication.
  • a packet is transmitted (step S201).
  • the calculation nodes 1-3 complete the partial calculation in the calculation unit 10 of the own node (step S202).
  • the OAM processing unit 122 sets the value of a predetermined bit of the OAM packet to "1" and gives a flag (step S203).
  • the transmission unit 123 of the calculation node 1-3 transmits the flagged OAM packet to the calculation node 1-2, which is the partner of the collective communication, based on the division information.
  • the calculation unit 10 of the calculation node 1-2 completes the partial calculation (step S204).
  • the OAM processing unit 122 of the calculation node 1-2 may set a flag of the received OAM packet and record that the partial calculation on the own node is completed.
  • the OAM processing unit 122 of the calculation node 1-2 detects from the state of the OAM packet that all the partial operations related to the collective communication have been completed, that is, the synchronization has been completed.
  • the network processing unit 12 of the calculation node 1-2 transmits an instruction to start collective communication to the calculation node 1-3 (step S205).
  • the calculation node 1-2 transmits the partial calculation result at the own node to the calculation node 1-3, and the addition unit 121 provided in the network processing unit 12 of the calculation node 1-3 causes the calculation node 1-2. Perform the whole calculation, which is the sum of the partial calculation results in 1-3. After that, the whole calculation result is distributed in the calculation nodes 1-1 to 1-3.
  • the division information for specifying the calculation node 1 for obtaining the partial calculation related to the collective communication among the plurality of calculation nodes 1-1 to 1-3. Is notified from the calculation node 1 of the master node to the other calculation nodes 1.
  • the calculation node 1 that has received the division information processes the OAM packet including the issuance of the OAM packet and the addition of the flag between the calculation nodes 1 indicated by the division information.
  • the calculation node 1 receives the OAM packet indicating that the partial calculation related to the collective communication of the own node is completed, starts the collective communication when the synchronization is completed, and when the collective communication is completed. End the process. Therefore, collective communication can be started more efficiently, and even if the number of computing nodes connected to the communication network increases, cooperative processing between the computing nodes can be performed at higher speed.
  • the third embodiment is different from the first and second embodiments in that a plurality of calculation nodes 1-1 to 1-3 form a tree-like network. Further, the distributed deep learning system according to the third embodiment is different from the first and second embodiments in that it includes the aggregation node 2 that executes the entire calculation.
  • FIG. 14 is a block diagram showing a configuration example of the distributed deep learning system according to the present embodiment.
  • the distributed deep learning system for example, three calculation nodes 1-1 to 1-3 are connected in a tree-like network topology via one aggregation node 2.
  • the matrix product of the neural network is calculated by the plurality of calculation nodes 1-1 to 1-3 and the aggregation node 2.
  • each of the calculation nodes 1-1 to 1-3 according to the present embodiment performs only a partial calculation that is a part of the matrix product, and transmits the partial calculation result to the aggregation node 2.
  • the aggregation node 2 performs the entire operation, which is the sum of the partial operation results.
  • the aggregation node 2 includes a storage unit (second storage device) 21 and a network processing unit (second network processing device) 22.
  • the aggregation node 2 generates an OAM packet and transmits it to the computing node 1 involved in collective communication. Further, the aggregation node 2 instructs the calculation node 1 to start aggregation when the partial calculation is completed in all the calculation nodes 1 involved in the collective communication, and aggregates the partial calculation results into the aggregation node 2. ..
  • the aggregation node 2 aggregates the partial calculation results calculated by the plurality of calculation nodes 1-1 to 1-3, performs the entire calculation including the addition process, and obtains the obtained total calculation results from the plurality of calculation nodes 1-1 to. Distribute to 1-3.
  • the storage unit 21 stores the partial calculation result 210 obtained in each of the calculation nodes 1-1 to 1-3.
  • the network processing unit 22 includes a receiving unit (third receiving circuit, fourth receiving circuit) 220, an adding unit (adding circuit) 221, an OAM processing unit (second OAM processing circuit) 222, and a transmitting unit (third transmitting circuit). , Fourth transmission circuit) 223.
  • the receiving unit 220 receives the OAM packet recorded by each OAM processing unit 122 of the plurality of computing nodes 1-1 to 1-3 from the plurality of computing nodes 1-1 to 1-3. Further, the receiving unit 220 receives the partial calculation result from each of the plurality of calculation nodes 1-1 to 1-3. The received partial calculation result is stored in the storage unit 21.
  • the addition unit 221 obtains the total calculation result, which is the sum of the partial calculation results from the plurality of calculation nodes 1-1 to 1-3 received by the reception unit 220.
  • the addition unit 221 can be configured by, for example, an addition circuit using a logic circuit.
  • the output of the hidden layer h 2 is obtained by adding the partial calculation results obtained in the calculation nodes 1-1 and 1-2.
  • Adding section 221 adds the partial operation result obtained by the respective computing nodes 1-1 and 1-2 to obtain the entire operation result which is the output of the hidden layer h 2.
  • the OAM processing unit 222 generates an OAM packet for a plurality of calculation nodes 1-1 to 1-3 to record whether or not the partial calculation of each calculation node 1 is completed. Further, the OAM processing unit 222 generates an aggregation start instruction to be transmitted to a plurality of calculation nodes 1 related to collective communication from the state of the OAM packet received by the receiving unit 220. The OAM processing unit 222 gives an aggregation start instruction when the partial calculation is completed in all the calculation nodes 1 involved in the collective communication, that is, when the synchronization is completed.
  • the OAM processing unit 222 generates an OAM packet to be transmitted to the calculation nodes 1-1 and 1-2. Further, the OAM processing unit 222 grasps from the value of the flag of the OAM packet that the partial calculation has been completed at the calculation nodes 1-1 and 1-2, and generates an aggregation start instruction.
  • the transmission unit 223 transmits the OAM packet generated by the OAM processing unit 222 to the calculation nodes 1-1 to 1-3. Further, the transmission unit 223 transmits the aggregation start instruction generated by the OAM processing unit 222 to the target calculation node 1. Further, the transmission unit 223 distributes the overall calculation result obtained by the addition unit 221 to a plurality of calculation nodes 1-1 to 1-3.
  • the aggregation node 2 can be realized by, for example, a computer including a CPU 201, a main memory 202, a GPU 203, a NIC 204, a storage 205, and an I / O 206, and a program that controls these hardware resources. it can.
  • the main memory 202 stores in advance programs for the CPU 201 and GPU 203 to perform various controls and calculations.
  • the CPU 201, GPU 203, and main memory 202 realize each function of the aggregation node 2, such as the addition unit 221 and the OAM processing unit 222 shown in FIG.
  • NIC204 is an interface circuit for network connection between calculation nodes 1-1 to 1-3 and various external electronic devices. NIC204 realizes the receiving unit 220 and the transmitting unit 223 of FIG.
  • the storage 205 is composed of a readable and writable storage medium and a drive device for reading and writing various information such as programs and data to the storage medium.
  • a semiconductor memory such as a hard disk or a flash memory can be used as the storage medium for the storage 205.
  • the storage 205 realizes the storage unit 21 described with reference to FIG.
  • the storage 205 has a program storage area for storing a program for the aggregation node 2 to execute OAM packet processing, partial calculation result aggregation processing, total calculation processing, and distribution processing.
  • the storage 205 may have, for example, a backup area for backing up the above-mentioned data, programs, and the like.
  • the I / O 206 is composed of a network port that inputs a signal from an external device and outputs a signal to the external device.
  • a network port that inputs a signal from an external device and outputs a signal to the external device.
  • the same number of network ports as the number of compute nodes 1-1 to 1-3 can be provided.
  • one network port can be provided by connecting the aggregation node 2 and the calculation nodes 1-1 to 1-3 via a network switch.
  • the adder circuit 207 for example, an adder circuit composed of a basic logic gate can be used.
  • the adder circuit 207 realizes the adder unit 221 described with reference to FIG.
  • the adder circuit 207 is provided in the network processing device including the NIC 204 and the I / O 206.
  • the arithmetic unit is composed of the CPU 201, the main memory 202, the GPU 203, and the storage 205.
  • the OAM processing circuit 208 is realized by, for example, a composite logic gate in which a basic logic gate is combined. Alternatively, the OAM processing circuit 208 can be realized as a dedicated circuit such as an ASIC or a combination of an electric circuit and a program. In the present embodiment, the OAM processing circuit 208 is provided in the transmission line side network processing device including the NIC 204 and the I / O 206, similarly to the addition circuit 207.
  • the OAM processing unit 222 of the aggregation node 2 generates an OAM packet and transmits it from the transmission unit 223 to the calculation node 1 involved in collective communication (step S300). For example, the aggregation node 2, to the compute nodes 1-1 and 1-2 that are involved in collective communication according to the output of the hidden layer h 2 that has been set in advance OAM processing unit 222 transmits the OAM packet.
  • the partial calculation is completed at each of the calculation nodes 1-1 and 1-2 (step S301).
  • the partial calculation results obtained in each of the calculation nodes 1-1 and 1-2 are stored in the respective storage units 11.
  • the OAM processing unit (first OAM processing circuit) 122 has completed the partial calculation on its own node.
  • the flag value “1” indicating that is set (step S302).
  • Each of the compute nodes 1-1 and 1-2 transmits a flagged OAM packet to the aggregate node 2.
  • the aggregation node 2 receives the OAM packet from the calculation nodes 1-1 and 1-2.
  • the OAM processing unit 222 of the aggregation node 2 detects from the flag values of the OAM packets received from the calculation nodes 1-1 and 1-2 that the partial calculation for performing the entire calculation has been completed.
  • the OAM processing unit 222 generates an aggregation start instruction for aggregating the partial calculation results from each of the calculation nodes 1-1 and 1-2 (step S303).
  • the generated aggregation start instruction is transmitted to the calculation nodes 1-1 and 1-2.
  • the calculation nodes 1-1 and 1-2 receive the aggregation start instruction from the aggregation node 2, they transmit the partial calculation result at their own node to the aggregation node 2 (step S304). After that, the addition unit 221 of the aggregation node 2 performs the entire calculation which is the sum of the partial calculation results aggregated from the calculation nodes 1-1 and 1-2 (step S305). After that, the aggregation node 2 distributes the obtained total calculation result from the transmission unit 223 to the calculation nodes 1-1 to 1-3.
  • the aggregation node 2 transmits an OAM packet only to the calculation nodes 1-1 and 1-2 that calculate the partial calculation necessary for starting the entire calculation related to the output of the hidden layer h 2.
  • the aggregation node 2 transmits an OAM packet to all the calculation nodes 1-1 to 1-3 in step S300, and all the calculation nodes 1-1 to 1-3 a plurality of hidden layers, for example, triggered by partial operation has been completed required to initiate the entire operation according to the output of the hidden layer h 2, h 4 (step S301 and S302), computing nodes 1-1 to 1
  • the aggregation node 2 transmits an OAM packet to a plurality of calculation nodes 1 involved in collective communication.
  • the aggregation node 2 detects from the state of the OAM packet recorded and returned by each calculation node 1 that the partial calculation for performing the entire calculation is completed in each calculation node 1, it is assumed that the synchronization is completed.
  • the aggregation start instruction is transmitted to the calculation node 1 in order to aggregate the partial calculation results.
  • the aggregation instruction is given to the calculation nodes 1-1 to 1-3, so that the aggregation node 2 is more
  • the partial calculation results can be efficiently aggregated from the calculation nodes 1-1 to 1-3, and the entire calculation result can be obtained.
  • the aggregation node 2 since the aggregation node 2 according to the present embodiment includes the addition unit 221 for performing the overall calculation and the OAM processing unit 222 for issuing and processing the OAM packet in the network processing unit 22, the aggregation node 2 performs the calculation.
  • the part 10 becomes unnecessary. Therefore, even if the number of computing nodes connected to the communication network increases, the cooperative processing between the computing nodes is faster than the conventional example in which the addition processing and the OAM processing are processed by software in the arithmetic unit 10. Can be done.
  • the OAM packet can be transmitted to the specific calculation node 1, the number of OAM frames can be reduced, and a faster distributed deep learning process can be realized.
  • a plurality of calculation nodes 1-1 to 1-3 divide the neural network model and perform distributed learning to learn the entire neural network and speed up group communication. The case of doing this was illustrated.
  • the distributed deep learning system speeds up the processing by applying it not only to the learning process but also to a large-scale matrix calculation including the product-sum operation of the matrix such as the inference process. be able to.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

分散深層学習システムは、通信ネットワークを介して互いに接続された複数の計算ノード(1)を備え、複数の計算ノード(1)の各々は、複数の計算ノード(1)の状態を示すOAMパケットを受信する受信部(120)と、受信部(120)で受信されたOAMパケットに、自ノードの演算部(10)から部分演算結果が出力されたか否かを記録するOAM処理部(122)と、OAM処理部(122)で記録されたOAMパケットを他の計算ノード(1)へ送信する送信部(123)とを有するネットワーク処理部(12)とを有し、OAM処理部(122)は、OAMパケットに示される他の計算ノードの状態を契機として、送信部(123)に、記憶部(11)に記憶された部分演算結果を他の計算ノード(1)へ送信させる。

Description

分散深層学習システムおよび分散深層学習方法
 本発明は、分散深層学習システムおよび分散深層学習方法に関し、特に、ネットワークで連携する複数の計算ノードで分散協調して実行する分散深層学習技術に関する。
 近年、様々な情報やデータに対する機械学習の活用により、サービスの高度化および付加価値の提供が盛んに行われている。その際の機械学習には大きな計算リソースが必要な場合が多い。特に、深層学習と呼ばれるニューラルネットワークを用いた機械学習においては、ニューラルネットワークの構成パラメータを最適化する工程である学習において、大量の学習データを処理する必要がある。この学習処理を高速化するために、複数の演算装置で並列処理することが1つの解決法である。
 例えば、非特許文献1には、4台の計算ノードと、インフィニバンドスイッチとがインフィニバンドネットワーク(InfiniBand network)を介して接続された分散深層学習システムが開示されている。各計算ノードには、それぞれ4台のGPU(Graphics Processing Unit)が搭載されている。非特許文献1に開示された分散深層学習システムでは、4台の計算ノードによって、学習演算を並列処理することによって高速化を図っている。
 また、非特許文献2には、8台のGPUを搭載した計算ノード(GPUサーバ)とイーサネット(登録商標)スイッチとがイーサネットネットワークを介して接続された構成が開示されている。この非特許文献2には、計算ノードの数として、1台、2台、4台、8台、16台、32台、44台用いた場合の例がそれぞれ開示されている。
 非特許文献2に開示されたシステム上では、分散同期確率的勾配降下法(Distributed synchronous SGD(Stochastic Gradient Descent))を用いて機械学習を行う。具体的には、以下の手順で機械学習が行われる。
 (1)学習データの一部を抜き出す。抜き出した学習データの集合をミニバッチと呼ぶ。
 (2)ミニバッチをGPUの台数分に分けて、各GPUに割り当てる。
 (3)各GPUにおいて、(2)で割り当てられた学習データを入力した場合のニューラルネットワークからの出力値が、正解(「教師データ」と呼ぶ。)からどれだけ乖離しているかの指標となる損失関数L(w)を求める。この損失関数を求める工程では、ニューラルネットワークの入力側の層から出力側の層に向かって順番に出力値を計算していくことから、この工程を順伝搬(forward propagation)と呼ぶ。
 (4)各GPUにおいて、(3)で求めた損失関数値に対するニューラルネットワークの各構成パラメータ(ニューラルネットワークの重み等)による偏微分値(勾配)を求める。この工程では、ニューラルネットワークの出力側の層から入力側の層に向かって順番に各層の構成パラメータに対する勾配を計算していくことから、この工程を逆伝搬(backpropagation)と呼ぶ。
 (5)GPU毎に計算した勾配の平均を計算する。
 (6)各GPUにおいて、(5)で計算した勾配の平均値を用いて、確率的勾配降下法(SGD:Stochastic Gradient Descent)を用いて、損失関数L(w)がより小さくなるように、ニューラルネットワークの各構成パラメータを更新する。確率的勾配降下法は、各構成パラメータの値を勾配の方向に微少量変更することにより、損失関数L(w)を小さくするという計算処理である。この処理を繰り返すことによって、ニューラルネットワークは、損失関数L(w)が小さい、すなわち、正解に近い出力をする精度の高いものに更新されていく。
 また、非特許文献3には、8台のGPUを搭載した計算ノード128台がインフィニバンドネットワーク(InfiniBand network)を介して接続された構成を有する分散深層学習システムが開示されている。
 非特許文献1~3に開示されているいずれの従来の分散深層学習システムにおいても、計算ノード数が増えるにしたがい、学習速度が上がり、学習時間を短縮できることが示されている。この場合、各計算ノードで算出した勾配等のニューラルネットワーク構成パラメータの平均値を計算するため、これらの構成パラメータを計算ノード間で送受信することにより、平均値算出等の計算を行う必要がある。
 一方において、並列処理数を増やすために、ノード数を増やすと、必要な通信処理は急速に増大する。従来技術のように、計算ノード上で平均値算出等の演算処理やデータの送受信処理をソフトウェアで行う場合、通信処理に伴うオーバヘッドが大きくなり、学習効率を十分に上げることが難しくなるという課題があった。
 例えば、非特許文献3には、学習処理を100サイクル行うのにかかる所要時間と、このうちの通信にかかる時間と、GPU数との関係が開示されている。この関係によると、GPU数が増えるにしたがい通信にかかる時間が増加しており、特にGPU数が512以上のところで急激に増加している。
Rengan Xu and Nishanth Dandapanthu.,"Deep Learning Performance with P100 GPUs",Dell EMC HPC Innovation Lab. October 2016,インターネット<http://ja.community.dell.com/techcenter/m/mediagallery/3765/download> Priya Goyal,Piotr Dollar,Ross Girshick,Pieter Noordhuis,Lukasz Wesolowski,Aapo Kyrola,Andrew Tulloch,Yangqing Jia,Kaiming He,"Accurate,Large Minibatch SGD:Training ImageNet in 1 Hour",米国コーネル大学ライブラリー,arXiv:1706.02677,2017,インターネット<https://arxiv.org/abs/1706.02677> Takuya Akiba,Shuji Suzuki,Keisuke Fukuda,"Extremely Large Minibatch SGD:Training ResNet-50 on ImageNet in 15 Minutes",米国コーネル大学ライブラリー,arXiv:1711.04325,2017,インターネット<https://arxiv.org/abs/1711.04325>
 しかし、従来の分散深層学習システムでは、通信ネットワークに接続される計算ノードの数が増加すると、計算ノード間での協調処理の高速化が抑制される問題があった。
 本発明は、上述した課題を解決するためになされたものであり、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理を高速に行うことを目的とする。
 上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続された複数の計算ノードを備え、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、前記演算装置から出力された前記第1演算結果を記憶する第1記憶装置と、前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信回路と、他の計算ノードからの第1演算結果を受信する第1受信回路と、前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信回路で受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算回路と、前記第2演算結果を、他の計算ノードへ送信する第2送信回路と、他の計算ノードからの第2演算結果を受信する第2受信回路と、前記複数の計算ノードの状態を示す通知パケットを受信する第3受信回路と、前記第3受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録するOAM処理回路と、前記OAM処理回路で記録された前記通知パケットを他の計算ノードへ送信する第3送信回路と、を有するネットワーク処理装置とを備え、前記OAM処理回路は、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させることを特徴とする。
 上述した課題を解決するために、本発明に係る分散深層学習システムは、通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備え、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、前記演算装置から出力された前記第1演算結果を、前記集約ノードに送信する第1送信回路と、前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信回路と、前記複数の計算ノードの状態を示す通知パケットを受信する第2受信回路と、前記第2受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録する第1のOAM処理回路と、前記第1のOAM処理回路で記録された前記通知パケットを前記集約ノードへ送信する第2送信回路とを有する第1ネットワーク処理装置と、前記第1受信回路で受信された前記第2演算結果を記憶する第1記憶装置とを有し、前記第1のOAM処理回路は、前記集約ノードからの指示に基づいて、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、前記集約ノードは、前記通知パケットを生成する第2のOAM処理回路と、生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信回路と、前記複数の計算ノードの各々の前記第1のOAM処理回路で記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信回路と、前記複数の計算ノードからの第1演算結果を受信する第4受信回路と、前記第4受信回路で受信された第1演算結果の和である前記第2演算結果を求める加算回路と、前記加算回路で求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信回路とを有する第2ネットワーク処理装置とを有し、前記第2のOAM処理回路は、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示することを特徴とする。
 上述した課題を解決するために、本発明に係る分散深層学習方法は、通信ネットワークを介して互いに接続された複数の計算ノードを備える分散深層学習システムによって実行される分散深層学習方法であって、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、前記演算ステップで出力された前記第1演算結果を第1記憶装置に記憶する第1記憶ステップと、前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信ステップと、他の計算ノードからの第1演算結果を受信する第1受信ステップと、前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信ステップで受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算ステップと、前記第2演算結果を、他の計算ノードへ送信する第2送信ステップと、他の計算ノードからの第2演算結果を受信する第2受信ステップと、前記複数の計算ノードの状態を示す通知パケットを受信する第3受信ステップと、前記第3受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録するOAM処理ステップと、前記OAM処理ステップで記録された前記通知パケットを他の計算ノードへ送信する第3送信ステップとを有するネットワーク処理ステップとを備え、前記OAM処理ステップは、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させることを特徴とする。
 上述した課題を解決するために、本発明に係る分散深層学習方法は、通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備える分散深層学習システムによって実行される分散深層学習方法であって、前記複数の計算ノードの各々は、ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、前記演算ステップで出力された前記第1演算結果を、前記集約ノードに送信する第1送信ステップと、前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信ステップと、前記複数の計算ノードの状態を示す通知パケットを受信する第2受信ステップと、前記第2受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録する第1のOAM処理ステップと、前記第1のOAM処理ステップで記録された前記通知パケットを前記集約ノードへ送信する第2送信ステップとを有する第1ネットワーク処理ステップと、前記第1受信ステップで受信された前記第2演算結果を第1記憶装置に記憶する第1記憶ステップとを有し、前記第1のOAM処理ステップは、前記集約ノードからの指示に基づいて、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、前記集約ノードは、前記通知パケットを生成する第2のOAM処理ステップと、生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信ステップと、前記複数の計算ノードの各々の前記第1のOAM処理ステップで記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信ステップと、前記複数の計算ノードからの第1演算結果を受信する第4受信ステップと、前記第4受信ステップで受信された第1演算結果の和である前記第2演算結果を求める加算ステップと、前記加算ステップで求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信ステップとを有する第2ネットワーク処理ステップとを有し、前記第2のOAM処理ステップは、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示することを特徴とする。
 本発明によれば、通信ネットワークを介して互いに接続された複数の計算ノードの各々は、複数の計算ノードの状態を通知する通知パケットを受信し、受信した通知パケットに自ノードの演算装置から第1演算結果が出力されたか否かを記録して、記録した通知パケットを他の計算ノードへ送信する。そのため、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
図1は、本発明の第1の実施の形態に係る分散深層学習システムの構成を示すブロック図である。 図2は、ニューラルネットワークの学習処理を説明するための図である。 図3は、隠れ層の計算例を説明するための図である。 図4は、隠れ層の計算例を説明するための図である。 図5は、複数の計算ノードの記憶部に分割して記憶される重みパラメータを説明するための図である。 図6は、第1の実施の形態に係る計算ノードの構成を示すブロック図である。 図7は、第1の実施の形態に係るOAMパケットの構成の一例を示す模式図である。 図8は、従来例に係る計算ノードの構成例を示すブロック図である。 図9は、第1の実施の形態に係る計算ノードのハードウェア構成の一例を示すブロック図である。 図10は、第1の実施の形態に係る計算ノードの動作を説明するためのフローチャートである。 図11は、第1の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。 図12は、第1の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。 図13は、第2の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。 図14は、第3の実施の形態に係る分散深層学習システムの構成を示すブロック図である。 図15は、第3の実施の形態に係る集約ノードの構成を示すブロック図である。 図16は、第3の実施の形態に係る集約ノードのハードウェア構成の一例を示すブロック図である。 図17は、第3の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。 図18は、第3の実施の形態に係る分散深層学習システムの動作を説明するためのシーケンス図である。
 以下、本発明の好適な実施の形態について、図1から図18を参照して詳細に説明する。
 [発明の概要]
 はじめに、本発明の実施の形態に係る分散深層学習システムの概要について図1から図5を参照して説明する。図1に示すように、本発明の実施の形態に係る分散深層学習システムは、通信ネットワークを介して接続された、複数の計算ノード1-1~1-3を備える。複数の計算ノード1-1~1-3の各々は、ニューラルネットワークの演算処理に含まれる行列積の一部を計算し、自ノードで計算した行列積の計算結果と、他の計算ノード1から受信した行列積の計算結果との和を求める。さらに、複数の計算ノード1-1~1-3の各々は、求めた行列積の計算結果の和を他の計算ノード1へ分配する。
 本実施の形態に係る分散深層学習システムでは、複数の計算ノード1-1~1-3の各々で行列積の一部が計算されたか否かの情報を含む複数の計算ノード1-1~1-3の状態を示す通知パケットを計算ノード1-1~1-3で共有する。複数の計算ノード1-1~1-3の各々は、通知パケットに示される計算ノード1-1~1-3の状態を契機として、自ノードで計算した行列積の計算結果と、他の計算ノード1から受信した行列積の計算結果との和を求める。本実施の形態では、通知パケットとして通信ネットワークの運用、管理、および保守に用いられるOperation Administration Maintenance(OAM)パケットを利用する。
 このように、本実施の形態に係る分散深層学習システムは、OAMパケットを用いた同期方法により計算ノード1-1~1-3の各々で分散して計算した行列積の一部の加算処理を実行し、加算結果を複数の計算ノード1-1~1-3に分配する。また、本実施の形態に係る分散深層学習システムは、複数の計算ノード1-1~1-3の各々が、OAMパケットを処理するOAM処理回路を、データの送受信および通信を制御するネットワーク処理装置に備えることもその特徴の一つである。
 なお、以下の説明において、計算ノード1-1~1-3を総称して計算ノード1ということがある。また、図1を含む各図では、説明の簡単のため、分散深層学習システムが3台の計算ノード1-1~1-3を備える場合について説明しているが、計算ノード1は、N(N≧2)個の任意の台数を用いることができる。
 図2は、本発明に係る分散深層学習システムを用いて行うニューラルネットワークの学習処理の一例を示している。図3は、本発明に係る分散深層学習システムを用いて行うニューラルネットワークの学習処理での隠れ層の計算例を示している。図4は、本発明に係る分散深層学習システムを用いて行うニューラルネットワークの学習処理での隠れ層の計算を複数の計算ノードに分割して実施する例を示している。図5は、本発明の分散深層学習システムを用いてニューラルネットワークの学習処理を行う際の重みパラメータを複数の計算ノード1に分割して記憶している例を示している。
 本発明の分散深層学習システムは、深層学習における学習データを用いてニューラルネットワークの重みの値を学習するトレーニングを、分散深層学習システム全体で行う。具体的には、学習ノードである各計算ノード1は、学習データとニューラルネットワークとを用いて、ニューラルネットワークの所定の演算処理を行い、重みデータの勾配を計算する。この所定の演算が完了した時点では、複数の計算ノード1の各々は互いに異なる重みデータの勾配を有している。
 例えば、通信ネットワークに接続されたコンピューティングインタコネクト装置などでも実現されるネットワーク処理装置は、重みデータの勾配を集約し、集約したデータの平均化処理を行い、再度各計算ノード1に分配する。各計算ノード1は、平均化された重みデータの勾配を用いて、再度学習データと、ニューラルネットワークとを用いて、ニューラルネットワークの所定の演算処理を行う。この処理を繰り返すことで、分散深層学習システムは学習済みのニューラルネットワークモデルを取得する。
 計算ノード1は、ソフトウェア的に構築された数学モデルであるニューラルネットワークの出力値を計算し、さらに、学習データに応じてニューラルネットワークの構成パラメータを更新して出力値の精度を向上させていく学習機能をもつ。
 ニューラルネットワークは、各計算ノード1内に構築される。計算ノード1の実現方法としては、CPUやGPU上のソフトウェアで実現してもよいし、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)に形成したLSI(Large Scale Integration)回路で実現してもよい。なお、計算ノード1のハードウェア構成の具体的な例については後述する。
 図2では、分散深層学習システムが備える3台の計算ノード1-1~1-3を用いて、入力x~xに対して、隠れ層(h~h)を計算することにより、出力y~yを求める場合を例示している。図2の例では、ニューラルネットワークのモデルを複数の計算ノード1に分割するモデル並列法を示している。一般に、本手法は、1台の計算ノード1に重みパラメータが収まらないような大規模なニューラルネットワークを学習する際に採用される。
 図3に示すように、隠れ層の出力を求める場合、入力xと隠れ層hとの関係の強弱を表現するパラメータとして重み(w)があり、入力xと重みwとの積和演算を行うことで、隠れ層hの出力を求める。例えば、隠れ層hの出力を求める場合、入力x~xと重みw12~w62との積和演算を行うことで、隠れ層hの出力を得る。
 先に述べたように、ニューラルネットワークのモデルを複数の計算ノード1に分割するモデル並列法を用いた場合、具体的には、図4に示すように、計算ノード1-1と計算ノード1-2に跨って隠れ層hの出力が計算される。各々の計算ノード1-1、1-2で計算された結果を加算することで、隠れ層hの出力が計算される。このとき、各々の計算ノード1にて計算した結果を加算するために、集団通信が実施される。本発明では、この集団通信を高速化することを目的としている。
 本明細書では、各計算ノード1で計算されたニューラルネットワークの演算処理に含まれる行列積の一部の計算結果を「部分演算結果」(第1演算結果)と呼び、部分演算結果の和を「全体演算結果」(第2演算結果)と呼ぶ。
 同様に、計算ノード1-2と計算ノード1-3に跨って隠れ層hの出力が計算される。また、隠れ層h、h、hの出力については、複数の計算ノード1を跨ぐことなく計算が完了される。
 図5は、複数の計算ノード1-1~1-3にて保持される重みパラメータwを示している。各計算ノード1-1~1-3で保持することができる重みパラメータwの数は、各計算ノード1-1~1-3が具備する使用可能なメモリ容量によって決まる。そのため、ニューラルネットワークのモデルサイズが大きくなると、重みパラメータwの数も多くなり、各計算ノード1-1~1-3にてニューラルネットワーク全体の重みパラメータwを保持できなくなる場合がある。この場合、図5に示すように、学習対象のニューラルネットワークの重みパラメータw11~w65が各計算ノード1-1~1-3に分割して保持される。
 [第1の実施の形態]
 次に、本発明の第1の実施の形態に係る分散深層学習システムについて説明する。
 図1に示すように、分散深層学習システムは、複数の計算ノード1-1~1-3を備える。複数の計算ノード1-1~1-3は、リング状の通信ネットワークで接続されている。また、本実施の形態に係る複数の計算ノード1-1~1-3は、双方向に通信可能な通信ネットワークで接続することができる。
 [計算ノードの機能ブロック]
 各計算ノード1-1~1-3は、図1および図6に示すように、演算部(演算装置)10、記憶部(第1記憶装置、第2記憶装置)11、およびネットワーク処理部(ネットワーク処理装置)12を備える。
 演算部10は、ニューラルネットワークの行列積の一部分を計算して部分演算結果を出力する。演算部10は、図4および図5で説明したように、自ノードが保持するニューラルネットワークの重みパラメータwと、入力xまたは隠れ層hの出力との行列積を計算する。隠れ層hの出力は、記憶部11に保持されている全体演算結果111であり、他の計算ノード1から共有される。
 記憶部11は、部分演算結果(第1記憶装置)110、および全体演算結果(第2記憶装置)111を保持する領域を有する。また、記憶部11は、ニューラルネットワークの重みパラメータwのうち一部の重みパラメータwを保持している。
 部分演算結果110には、演算部10から出力された部分演算結果が記憶されている。
 全体演算結果111には、自ノードで求められた全体演算結果、および他の計算ノード1から受信された全体演算結果が記憶される。
 ネットワーク処理部12は、受信部(第1受信回路、第2受信回路、第3受信回路)120、加算部(加算回路)121、OAM処理部(OAM処理回路)122、および送信部(第1送信回路、第2送信回路、第3送信回路)123を備える。
 受信部120は、他の計算ノード1からの部分演算結果を、通信ネットワークを介して受信する。また、受信部120は、他の計算ノード1からの全体演算結果を受信する。また、受信部120は、複数の計算ノード1-1~1-3で共有される計算ノード1-1~1-3の状態を示すOAMパケットを受信する。例えば、受信部120は、任意に設定された他の計算ノード1が起点となって発行したOAMパケットを受信することができる。
 加算部121は、受信部120で受信された他の計算ノード1からの部分演算結果と、自ノードで計算した部分演算結果とを加算して全体演算結果を求める。加算部121は、例えば、論理回路を用いた加算回路で構成することができる。加算部121で求められた全体演算結果は、記憶部11に記憶される。
 OAM処理部122は、受信部120で受信されたOAMパケットに、自ノードの演算部10で部分演算結果が出力されているか否かを記録する。また、OAM処理部122は、自ノードが他の計算ノード1を制御するマスターノードとして設定された場合に、OAMパケットを一定周期で生成し、他の計算ノード1へ送信する。
 OAMとは、一般に、Ethernetの運用、管理、および保守を支援する機能を含み、ネットワークの設置、監視などを行うプロトコルとして用いられる。例えば、IEEE、ITU-T、やMEFによって標準化されたプロトコル、あるいはベンダー独自のプロトコルなどが含まれる。
 例えば、OAM処理部122は、自ノードの演算部10で部分演算の結果が算出されている場合に、OAMパケットの所定のビットの値を「1」と設定し、フラグを付与する。
 また、OAM処理部122は、受信部120で受信された他の計算ノード1からのOAMパケットに示される他の計算ノード1の状態を契機に、送信部123に対して、自ノードで計算された部分演算結果を他の計算ノード1へ送信させる。例えば、OAM処理部122は、OAMパケットのフラグの値から、他の計算ノード1の全てにおいて部分演算結果が出力されていることを検知しときに、同期が完了したと判断することができる。
 図7は、本実施の形態に係るOAMパケットの構造の一例を示す模式図である。図7の(a)および図7の(b)に示すように、OAMパケットは、各ビットが各計算ノード1の部分演算の完了または未完了の状態を示すフラグF(F1,F2,・・・,FN(N≧2))から構成される。図7の(a)に示すOAMパケットは、例えば、複数の計算ノード1のうちの任意の計算ノード1がマスターノードとなって生成される。
 この場合、スレーブノードとなった計算ノード1は、自ノードでの部分演算が完了している場合には、受信したOAMパケットの自ノードのビット位置に「完了」を示す値「1」を設定する。図7の(b)に示すOAMパケットは、フラグF2の値が「1」であり、計算ノード1-1,・・・,1-Nのうち、スレーブノードである2番目の計算ノード1-2での部分演算が完了したことが示されている。
 送信部123は、記憶部11に記憶されている自ノードの演算部10で計算された部分演算結果を、通信ネットワークを介して他の計算ノード1に送信する。また、送信部123は、加算部121で求められた全体演算結果を、通信ネットワークを介して他の計算ノード1に分配する。さらに、送信部123は、OAM処理部122で処理されたOAMパケットを他の計算ノード1に送信する。
 なお、複数の計算ノード1-1~1-3の各々は、同様の機能構成を有する。
 ここで、本実施の形態に係る分散深層学習システムが備える計算ノード1の構成と、図8に示す、一般的な分散深層学習システムが備える計算ノード100の構成例とを比較して説明する。
 図8に示す計算ノード100は、演算部1000、記憶部1100、およびネットワーク処理部1200を備える。図1および図6で説明したように、本実施の形態の計算ノード1は、OAMパケットの処理を行うOAM処理部122と、ネットワーク処理部12が他の計算ノード1から受信した部分演算結果と自ノードで計算した部分演算結果との和を求める加算部121とを備える。しかし、図8に示す一般的な計算ノード100は、演算部1000が加算部1221を備え、また、OAM処理部122に対応する構成を有していない。
 また、図8に示す計算ノード100では、演算部1000に設けられた加算部1221は、全体演算結果を求めるために記憶部1100を構成するメモリに対してメモリアクセスを行う時間が加算される。このように、複数の計算ノード100を有する分散深層学習システムでは、各計算ノード100の演算部1000で全体演算の結果を求める必要がある。そのため、全体の処理時間も本実施の形態の構成と比較して長くなる。
 このように、本実施の形態に係る計算ノード1-1~1-3の各々が備えるネットワーク処理部12はOAM処理部122を有し、全ての計算ノード1-1~1-3で共有する計算ノード1の状態を通知するOAMパケットを処理する。各計算ノード1は、OAMパケットのフラグの値から、全体演算に必要となる他の計算ノード1での部分演算が完了していること、すなわち同期が完了したことを検知する。
 計算ノード1は、全体演算の実行および全体演算結果の分配を含む集団通信を行う特定の計算ノード1のみが部分演算を完了していれば、集団通信を開始するので、各計算ノード1の演算部10で全体演算を行う必要がなくなり、それに付随するメモリのリードライトを削減できる。さらに、他の計算ノード1から受信した部分演算結果と自ノードで計算した部分演算結果との和をネットワーク処理部12に設けられた加算部121で計算するため、図8の計算ノード100で生ずる追加のメモリアクセス時間が生じない。
 [計算ノードのハードウェア構成]
 次に、上述した機能を有する計算ノード1を実現するハードウェア構成の一例を、図9のブロック図を参照して説明する。
 図9に示すように、計算ノード1は、例えば、CPU101、メインメモリ102、GPU103、NIC104、ストレージ105、およびI/O106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
 メインメモリ102には、CPU101およびGPU103が各種制御や演算を行うためのプログラムが予め格納されている。CPU101、GPU103、およびメインメモリ102によって、図1および図6に示した演算部10、加算部121、OAM処理部122など、計算ノード1の各機能が実現される。
 NIC104は、計算ノード1間や各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。NIC104は図6の受信部120および送信部123を実現する。NIC104は、例えば、100 Gbit Ethernet(登録商標)での通信に対応したデバイス間のインターフェースを用いることができる。
 ストレージ105は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。ストレージ105には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。ストレージ105は、図1および図6で説明した記憶部11を実現する。
 ストレージ105は、計算ノード1が行列積を含むニューラルネットワークの演算、OAMパケットの処理などの分散深層学習処理を実行するためのプログラムを格納するプログラム格納領域を有する。ストレージ105は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
 I/O106は、外部機器からの信号を入力したり、外部機器へ信号を出力したりする
ネットワークポートにより構成される。ネットワークポートは、例えば、2つ以上のネットワークポートを用いることができる。
 加算回路107は、例えば、基本論理ゲートによって構成される加算回路などを用いることができる。加算回路107は、図6で説明した加算部121を実現する。なお、本実施の形態では、加算回路107は、NIC104およびI/O106を含むネットワーク処理装置に設けられる。また、CPU101、メインメモリ102、GPU103、ストレージ105によって演算装置が構成される。
 OAM処理回路108は、例えば、基本論理ゲートを組み合わせた複合論理ゲート等で実現される。あるいは、OAM処理回路108は、ASICなどの専用の回路や、電気回路とプログラムの組み合わせとして実現することができる。本実施の形態では、OAM処理回路108は、加算回路107と同様に、NIC104およびI/O106を含む伝送路側のネットワーク処理装置に設けられる。
 本実施の形態に係る通信ネットワークNWは、例えば、100Gbit Ethernetなど広帯域のネットワークが用いられる。
 [計算ノードの動作]
 まず、上述した構成を有する各計算ノード1の動作について、図10のフローチャートを用いて説明する。以下において、記憶部11には、予めニューラルネットワークモデル、入力x、重みパラメータwの一部分がロードされている。
 まず、演算部10は、ニューラルネットワークの学習における行列積の一部を計算する(ステップS1)。
 次に、演算部10によって求められた部分演算結果が記憶部11に記憶されると(ステップS2:YES)、OAM処理部122は、受信部120で他の計算ノード1から受信されたOAMパケットのフラグを立てる(ステップS3)。一方、自ノードで計算した部分演算結果が得られていない場合には(ステップS2:NO)、ステップS1での演算が実行される(ステップS1)。この場合、OAM処理部122は、受信部120で他の計算ノード1からOAMパケットが受信されてもフラグを立てずに、他の計算ノード1へ転送する。
 次に、OAM処理部122は、受信部120で受信されたOAMパケットに示されるそれぞれの計算ノード1のフラグの値から、自ノードの集団通信に関わる他の計算ノード1の部分演算が完了したこと検知し、同期が完了したことを契機として(ステップS4:YES)、ネットワーク処理部12は、集団通信を開始する(ステップS5)。
 例えば、OAM処理部122は、マスターノードとして設定されている計算ノード1がからの集団通信の開始指示に基づいて、集団通信を開始することができる。
 上述したように、分散深層学習システムは、OAMパケットを用いた同期システムであり、例えば、全ての計算ノード1-1~1-3での部分演算が完了したことを示すOAMパケットのフラグの状態を契機に、自ノードで求めた部分演算結果を集団通信して他の計算ノード1に共有することができる。この場合、計算ノード1-1~1-3は、一定周期で受信されるOAMパケットのフラグの値が、全ての計算ノード1-1~1-3で部分演算が完了したことを示すまで、自ノードで計算された部分演算結果を記憶部11において保持する。
 なお、同期システムの場合であっても、必ずしも全ての計算ノード1-1~1-3での演算部10による計算の完了を待つ必要はなく、例えば、OAMパケットの状態より、分散深層学習システムを構成する一部の計算ノード1における部分演算が完了したことを契機とすることもある。
 例えば、図2から図5の例では、計算ノード1-1および計算ノード1-2の計算が完了した時点でhを求めることができるため、計算ノード1-3の計算完了を待たずとも集団通信を開始することもある。
 ステップS5で、ネットワーク処理部12が集団通信を開始すると、送信部123は、自ノードで計算した部分演算結果を、通信ネットワークを介して他の計算ノード1へ送信する。また、受信部120は、他の計算ノード1において計算された部分演算結果を受信する。このとき、図1に示すように、送信部123は、予め決められた他の計算ノード1を送信先として部分演算結果を送信する。また、受信部120は、ネットワーク接続されている予め決められている他の計算ノード1から部分演算結果を受信する。
 次に、加算部121は、自ノードで求めた部分演算結果と、他の計算ノード1から受信した部分演算結果との和である全体演算結果を求める(ステップS6)。
 次に、ネットワーク処理部12は、ステップS6で求められた全体演算結果を、他の計算ノード1に分配する(ステップS7)。具体的には、送信部123が、加算部121によって求められた全体演算結果を、通信ネットワークを介して他の計算ノード1へ送信する。その後、複数の計算ノード1-1~1-3により計算された部分演算結果の和である全体演算結果は記憶部11に記憶される。
 [分散深層学習システムの動作]
 次に、分散深層学習システムの動作について、図11のシーケンス図を参照して説明する。以下において、計算ノード1-1がOAMパケットの一定周期での発行、および集団通信の開始を指示するマスターノードであり、計算ノード1-2、1-3がスレーブノードである場合を例に挙げて説明する。
 図5で説明したように、計算ノード1-1は、入力x~xと隠れ層hとの結合を示す重みパラメータw12~w42を保持している。一方、計算ノード1-2は、その他の入力x、xと隠れ層hとの重みパラメータw52、w62を保持している。そのため、計算ノード1-1、1-2の部分演算が完了することで、隠れ層hの出力を求める全体演算を実行することができる。
 同様に、図5で説明したように、計算ノード1-2は、入力x~xと隠れ層hとの結合を示す重みパラメータw14~w24を保持している。一方、計算ノード1-3は、その他の入力x~xと隠れ層hとの重みパラメータw34~w64を保持している。このことから、計算ノード1-2、1-3の部分演算が完了することで、隠れ層hの出力を求める全体演算を実行することができる。
 図11に示すように、計算ノード1-1は、OAM処理部122でOAMパケットを生成し、生成したOAMパケットを送信部123から他の計算ノード1-2、1-3に送信する(ステップS100)。計算ノード1-1が生成し発行したOAMパケットは、例えば、計算ノード1-2、1-3の順に転送される。次に、計算ノード1-1は自ノードの演算部10での部分演算が完了すると(ステップS101)、OAM処理部122は、OAMパケットの所定ビットのフラグを立てる(ステップS102)。計算ノード1-1の送信部123は、フラグを立てたOAMパケットを、隣接する計算ノード1-2へ送信する。
 その後、計算ノード1-2は自ノードでの部分演算を完了する(ステップS103)。計算ノード1-2において、部分演算結果が記憶部11で保持される。次に、計算ノード1-2のOAM処理部122は、計算ノード1-1より送られてきたOAMパケットの所定のビットに、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS104)。計算ノード1-2は、送信部123から、フラグを立てたOAMパケットを計算ノード1-3へ送る。このときのOAMパケットは、計算ノード1-1および計算ノード1-2での部分演算が完了していることを示すフラグが立っている。
 その後、マスターノードである計算ノード1-1のOAM処理部122は、戻ってきたOAMパケットのフラグの状態から、計算ノード1-1、1-2間の集団通信の開始を指示する(ステップS105)。計算ノード1-2が指示を受信すると、例えば、計算ノード1-2は自ノードで求めた部分演算結果を送信部123から計算ノード1-1へ送信し、計算ノード1-1は加算部121において自ノードおよび計算ノード1-2での部分演算結果を足し合わせて全体演算を行う。計算ノード1-1は、全体演算の結果を他の計算ノード1-2、1-3へ分配する。
 その後、マスターノードである計算ノード1-1のOAM処理部122は、さらにOAMパケットを他の計算ノード1-2、1-3に送信する。次に、計算ノード1-3の演算部10は、自ノードでの部分演算を完了する(ステップS106)。計算ノード1-3は、記憶部11に部分演算結果を保持する。その後、計算ノード1-3は、OAMパケットを受信すると、OAM処理部122において、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS107)。その後、計算ノード1-3の送信部123は、フラグを立てたOAMパケットを計算ノード1-1および計算ノード1-2へ送信する。
 マスターノードである計算ノード1-1は、OAMパケットを受信し、OAM処理部122はOAMパケットのフラグの状態から、計算ノード1-2、1-3に対して集団通信の開始を指示する(ステップS108)。その後、指示を受信した計算ノード1-2、1-3は、全体演算を行い、求められた全体演算結果を計算ノード1-1~1-3に分配する。
 次に、本実施の形態に係る分散深層学習システムが、全ての計算ノード1-1~1-3での部分演算が完了してから集団通信を開始する場合の動作について図12のシーケンス図を参照して説明する。
 図12に示すように、計算ノード1-1は、OAM処理部122でOAMパケットを生成し、生成したOAMパケットを送信部123から他の計算ノード1-2、1-3に送信する(ステップS100)。その後、計算ノード1-1は自ノードの演算部10での部分演算が完了すると(ステップS101)、計算ノード1-1のOAM処理部122は、OAMパケットの所定のビットのフラグを立てる(ステップS102)。計算ノード1-1は、フラグを立てたOAMパケットを、送信部123から他の計算ノード1-2、1-3へ送信する。
 その後、計算ノード1-2は自ノードでの部分演算を完了する(ステップS103)。計算ノード1-2では、記憶部11で部分演算結果が保持される。次に、計算ノード1-2のOAM処理部122は、計算ノード1-1より送られてきたOAMパケットの所定のビットに、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS104)。計算ノード1-2は、送信部123から、フラグを立てたOAMパケットを計算ノード1-3へ送る。このときのOAMパケットは、計算ノード1-1および計算ノード1-2での部分演算が完了していることを示すフラグが立っている。
 その後、マスターノードである計算ノード1-1は、フラグの値が設定され、状態が記録されたOAMパケットを受信し、さらに他の計算ノード1-2、1-3へ転送する。
 その後、計算ノード1-3の演算部10は、自ノードでの部分演算を完了する(ステップS106)。計算ノード1-3は、記憶部11に部分演算結果を保持する。その後、計算ノード1-3は、OAMパケットを受信すると、OAM処理部122において、自ノードでの部分演算が完了していることを示すフラグを立てる(ステップS107)。その後、計算ノード1-3の送信部123は、フラグを立てたOAMパケットを計算ノード1-1および計算ノード1-2へ送信する。
 マスターノードである計算ノード1-1は、OAMパケットを受信し、OAM処理部122はOAMパケットのフラグの状態から、計算ノード1-1~1-3での部分演算が完了していることを検知する。計算ノード1-1は、全ての計算ノード1-1~1-3での部分演算が完了していることを契機として、計算ノード1-1~1-3間での集団通信の開始を指示する(ステップS109)。その後、計算ノード1-1~1-3は、全体演算を行い、求められた全体演算結果を計算ノード1-1~1-3に分配する。
 なお、本実施の形態では、通信パケットを用いて、部分演算結果を共有するために送信部123が自ノードで計算した部分演算結果を他の計算ノード1へ送信し、受信部120が、他の計算ノード1からの部分演算結果を受信することができる。この場合、通信パケットには、自ノード宛の部分演算結果であるか否かを判定するための識別子が含まれる。
 例えば、部分演算結果を含む通信パケットのヘッダにおいて、計算ノード1-1~1-3ごとに異なるビット位置にフラグを立てるか立てないかで自ノード宛てのデータであるかを判別することができる。受信部120で受信した通信パケットのヘッダの自ノードのビット位置にフラグが立っている場合、受信した通信パケットに含まれる部分演算結果は、自ノード宛のデータであると判定する。そして、自ノードで計算した部分演算結果と受信した他の計算ノード1からの部分演算結果との和である全体演算結果を求める。
 なお、本実施の形態は、計算ノード1-1~1-3の各々が、自ノードで受信したOAMパケットの示すフラグの値に基づいて、自ノードの演算部10から出力された部分演算結果を、他の計算ノード1へ送信する場合に限らない。例えば、計算ノード1は、受信されたOAMパケットが示すフラグの値に基づいて、自ノードの演算部10で部分演算を開始する構成とすることもできる。
 以上説明したように、第1の実施の形態によれば、各計算ノード1は、全ての計算ノード1で共有するOAMパケットを用いた同期処理により、部分演算が完了したことを契機として、ニューラルネットワークの計算における行列積の一部分を計算して部分演算結果を他の計算ノード1へ送信する。また、計算ノード1は、他の計算ノード1から受信した部分演算の結果と自ノードで計算した部分演算の結果との和である全体演算結果を求め、さらにその全体演算結果を他の計算ノード1へ分配する。
 第1の実施の形態によれば、この一連の処理における全体演算結果の計算機能をネットワーク処理部12に具備するようにすることで、各計算ノード1の演算部10で全体演算を行う必要がなくなり、それに付随するメモリのリードライトを削減できる。そのため、学習処理の高速化を図ることができ、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
 また、第1の実施の形態によれば、集団通信を行う計算ノード1だけが部分演算を完了していれば、それらの計算ノード1で集団通信を開始することができるので、分散深層学習処理をより高速化できる。
 また、第1の実施の形態によれば、各計算ノード1のネットワーク処理部12がOAM処理部122を備え、OAMパケットに対してフラグの付与やOAMパケットの読み取りを含むOAMパケットの処理を行う。そのため、OAMパケットを記憶部11にコピーすることなく処理を行えるので、処理の遅延を削減できる。
 また、第1の実施の形態によれば、演算部10において加算演算を行う必要がなくなり、それに付随するメモリのリードライトを削減できるため、通信ネットワークに接続される計算ノード1の数が増加しても、計算ノード1間での協調処理をより高速に行うことができる。
 [第2の実施の形態]
 次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。本実施の形態に係る分散深層学習システムの構成および計算ノード1の構成は、図1および図6で説明した第1の実施の形態と同様である。
 第1の実施の形態では、任意の計算ノード1-1が起点となり、OAMパケットを発行し、他の計算ノード1-2、1-3で状態が記録されフラグが付与されたOAMパケットを読み取った。また、第1の実施の形態では、計算ノード1-1がそのOAMパケットの状態を契機として、計算ノード1-2、1-3に対して集団通信を開始する指示を行う場合について説明した。これに対し、第2の実施の形態では、マスターノードとして設定された計算ノード1-1が、複数の計算ノード1-1~1-3のうち、集団通信が発生する特定の計算ノード1を特定する特定情報(以下、モデルの「分割情報」という。)を各計算ノード1へ通知する。
 例えば、図4に示すように、全体演算結果として隠れ層hの出力を求める場合に、計算ノード1-1の部分演算結果および計算ノード1-2の部分演算結果が得られていれば計算できる。分割情報(特定情報)は、このようにどの計算ノード1の部分演算が完了していれば集団通信を開始できるのかを示す情報である。例えば、分割情報として、計算ノード1に固有のIDを用いることができる。
 マスターノードとして設定されている計算ノード1-1のOAM処理部122には、分割情報が保持されている。また、マスターノードから分割情報を受信する計算ノード1-2、1-3は、分割情報に基づいて、OAMパケットの発行および部分演算結果の完了に応じたフラグの付与を計算ノード1-2、1-3間で行う。
 より詳細には、マスターノードからの分割情報を送信部123(第4送信回路)から他の計算ノード1へ送信する。分割情報を受信部120(第5受信回路)で受信したスレーブノードとして設定された計算ノード1のうちのいずれか1のノードは、OAM処理部122において、受信された分割情報に自ノードが含まれる場合に、OAMパケットを生成する。さらに、OAMパケットを生成した計算ノード1では、OAM処理部122が、送信部123に対して、分割情報で特定される集団通信に関与する他の計算ノード1へOAMパケットを送信させる。
 なお、OAMパケットの生成および発行を行う計算ノード1は、分割情報に示されるIDの値が最も小さい若しくは最も大きい計算ノード1、または、部分演算を最も先に完了した計算ノード1がOAMパケットを発行する構成としてもよい。
 また、OAM処理部122は、自ノードの演算部10において、部分演算が完了した場合には、OAMパケットのフラグを立てる。
 [分散深層学習システムの動作シーケンス]
 図13は、本実施の形態に係る分散深層学習システムの動作シーケンス図である。以下においては、計算ノード1-1がマスターノードとして設定され、計算ノード1-2、1-3がスレーブノードである場合について説明する。また、マスターノードのネットワーク処理部12には、どの計算ノード1が集団通信を行うのかを示す分割情報を保持しているものとする。また、以下においては、分割情報により最も小さいIDの値が付与された計算ノード1がOAMパケットを発行する場合について説明し、計算ノード1-2に付与されたIDの値は計算ノード1-3に付与されたIDの値よりも小さいものとする。
 まず、マスターノードとして設定された計算ノード1-1の送信部123は、OAM処理部122で生成された分割情報を他の計算ノード1-2、1-3へ送信する(ステップS200)。分割情報は、加算部121が特定の全体演算を実行するために必要とされる複数の部分演算結果を出力する特定の計算ノード1を、複数の計算ノード1-1~1-3のうちから特定する情報である。
 次に、分割情報に含まれるIDの値が最も小さい計算ノード1-2は、自ノードのOAM処理部122においてOAMパケットを生成し、集団通信の相手である他の計算ノード1-3にOAMパケットを送信する(ステップS201)。
 その後、計算ノード1-3は、自ノードの演算部10での部分演算を完了する(ステップS202)。計算ノード1-3は、OAMパケットを受信すると、OAM処理部122において、OAMパケットの所定のビットの値を「1」に設定し、フラグを付与する(ステップS203)。
 次に、計算ノード1-3の送信部123は、フラグを立てたOAMパケットを分割情報に基づいて、集団通信の相手である計算ノード1-2に送信する。その後、計算ノード1-2の演算部10は部分演算を完了する(ステップS204)。なお、計算ノード1-2のOAM処理部122は、受信されたOAMパケットのフラグを立てて自ノードでの部分演算が完了したことを記録してもよい。計算ノード1-2のOAM処理部122は、OAMパケットの状態から、集団通信に関わる部分演算が全て完了していること、すなわち、同期が完了したことを検知する。その後、計算ノード1-2のネットワーク処理部12は、集団通信を開始する指示を計算ノード1-3に送信する(ステップS205)。
 例えば、計算ノード1-2は自ノードでの部分演算結果を計算ノード1-3に送信し、計算ノード1-3のネットワーク処理部12に設けられている加算部121が、計算ノード1-2、1-3での部分演算結果の和である全体演算を行う。その後、全体演算結果は、計算ノード1-1~1-3において分配される。
 以上説明したように、第2の実施の形態によれば、複数の計算ノード1-1~1-3のうち、集団通信に関わる部分演算を求める計算ノード1を特定する分割情報(特定情報)が、マスターノードの計算ノード1から他の計算ノード1へ通知される。分割情報を受信した計算ノード1は、分割情報で示される計算ノード1間でOAMパケットの発行およびフラグの付与を含むOAMパケットの処理を行う。
 そのため、計算ノード1は、自ノードの集団通信に関わる部分演算が完了したことを示すOAMパケットを受信して、同期が完了したことを契機として、集団通信を開始して、集団通信を完了したら処理を終了する。そのため、集団通信をより効率的に開始することができ、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
 [第3の実施の形態]
 次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
 第3の実施の形態では、複数の計算ノード1-1~1-3がツリー状のネットワークを構成する点で、第1および第2の実施の形態と異なる。また、第3の実施の形態に係る分散深層学習システムでは、全体演算を実行する集約ノード2を備える点で、第1および第2の実施の形態と異なる。
 [分散深層学習システムの構成]
 図14は、本実施の形態に係る分散深層学習システムの構成例を示すブロック図である。分散深層学習システムは、例えば、3台の計算ノード1-1~1-3が、1台の集約ノード2を介してツリー状のネットワークトポロジーで接続されている。本実施の形態では、複数の計算ノード1-1~1-3と集約ノード2とによってニューラルネットワークの行列積を計算する。
 また、本実施の形態に係る計算ノード1-1~1-3の構成は、ネットワーク処理部(第1ネットワーク処理装置)12Aが全体演算を行う加算部121を備えない点において、図6で説明した第1および第2の実施の形態の構成と異なる。したがって、本実施の形態に係る計算ノード1-1~1-3の各々は、行列積の一部分である部分演算のみを行い、部分演算結果を集約ノード2へ送信する。部分演算結果の和である全体演算については、集約ノード2が行う。
 [集約ノードの機能ブロック]
 集約ノード2は、図14および図15に示すように、記憶部(第2記憶装置)21とネットワーク処理部(第2ネットワーク処理装置)22とを備える。集約ノード2は、OAMパケットを生成し、集団通信に関与する計算ノード1に対して送信する。また、集約ノード2は、集団通信に関与する計算ノード1の全てにおいて部分演算が完了したことを契機として、計算ノード1に対して集約開始を指示し、部分演算結果を集約ノード2に集約する。
 集約ノード2は、複数の計算ノード1-1~1-3で計算された部分演算結果を集約し、加算処理を含む全体演算を行い、求めた全体演算結果を複数の計算ノード1-1~1-3に分配する。
 図15に示すように、記憶部21は、計算ノード1-1~1-3の各々で求められた部分演算結果210を記憶する。
 ネットワーク処理部22は、受信部(第3受信回路、第4受信回路)220、加算部(加算回路)221、OAM処理部(第2のOAM処理回路)222、および送信部(第3送信回路、第4送信回路)223を備える。
 受信部220は、複数の計算ノード1-1~1-3の各々のOAM処理部122で記録されたOAMパケットを、複数の計算ノード1-1~1-3から受信する。また、受信部220は、複数の計算ノード1-1~1-3のそれぞれから、部分演算結果を受信する。受信された部分演算結果は、記憶部21に記憶される。
 加算部221は、受信部220で受信された複数の計算ノード1-1~1-3からの部分演算結果の和である全体演算結果を求める。加算部221は、例えば、論理回路を用いた加算回路で構成することができる。
 例えば、図2から図5で説明した具体例を用いると、隠れ層hの出力は、計算ノード1-1、1-2で求められた部分演算結果を加算することで求められる。加算部221は、計算ノード1-1および1-2のそれぞれで求められた部分演算結果を加算して、隠れ層hの出力である全体演算結果を求める。
 OAM処理部222は、複数の計算ノード1-1~1-3に対して、各計算ノード1の部分演算が完了したか否かを記録させる、OAMパケットを生成する。また、OAM処理部222は、受信部220で受信されたOAMパケットの状態から、集団通信に係る複数の計算ノード1に対して送信する集約開始指示を生成する。OAM処理部222は、集団通信に関与する計算ノード1の全てで部分演算が完了したこと、つまり、同期が完了したことを契機として、集約開始指示を行う。
 例えば、図2から図5の例を用いると、OAM処理部222は、計算ノード1-1、1-2に送信するOAMパケットを生成する。また、OAM処理部222は、OAMパケットのフラグの値から、計算ノード1-1、1-2で部分演算が完了していること把握し、集約開始指示を生成する。
 送信部223は、OAM処理部222で生成されたOAMパケットを計算ノード1-1~1-3に送信する。また、送信部223は、OAM処理部222で生成された集約開始指示を対象となる計算ノード1へ送信する。また、送信部223は、加算部221によって求められた全体演算結果を、複数の計算ノード1-1~1-3に分配する。
 [集約ノードのハードウェア構成]
 次に、上述した機能を有する集約ノード2を実現するハードウェア構成の一例について図16のブロック図を参照して説明する。
 図13に示すように、集約ノード2は、例えば、CPU201、メインメモリ202、GPU203、NIC204、ストレージ205、およびI/O206を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
 メインメモリ202には、CPU201およびGPU203が各種制御や演算を行うためのプログラムが予め格納されている。CPU201、GPU203、およびメインメモリ202によって、図15に示した加算部221、OAM処理部222など、集約ノード2の各機能が実現される。
 NIC204は、計算ノード1-1~1-3や各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。NIC204は図15の受信部220および送信部223を実現する
 ストレージ205は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。ストレージ205には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。ストレージ205は、図15で説明した記憶部21を実現する。
 ストレージ205は、集約ノード2がOAMパケットの処理、部分演算結果の集約処理、全体演算処理、および分配処理を実行するためのプログラムを格納するプログラム格納領域を有する。ストレージ205は、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
 I/O206は、外部機器からの信号を入力したり、外部機器へ信号を出力したりするネットワークポートにより構成される。ネットワークポートは、例えば、計算ノード1-1~1-3の数と同数設けることができる。あるいは、ネットワークスイッチを介して集約ノード2と計算ノード1-1~1-3とを接続することで、1つのネットワークポートを備えることもできる。
 加算回路207は、例えば、基本論理ゲートによって構成される加算回路などを用いることができる。加算回路207は、図15で説明した加算部221を実現する。なお、本実施の形態では、加算回路207は、NIC204およびI/O206を含むネットワーク処理装置に設けられる。また、CPU201、メインメモリ202、GPU203、ストレージ205によって演算装置が構成される。
 OAM処理回路208は、例えば、基本論理ゲートを組み合わせた複合論理ゲート等で実現される。あるいは、OAM処理回路208は、ASICなどの専用の回路や、電気回路とプログラムの組み合わせとして実現することができる。本実施の形態では、OAM処理回路208は、加算回路207と同様に、NIC204およびI/O206を含む伝送路側のネットワーク処理装置に設けられる。
 [分散深層学習システムの動作シーケンス]
 次に、上述した構成を有する集約ノード2および計算ノード1-1~1-3を備える分散深層学習システムの動作について図17および図18のシーケンス図を参照して説明する。なお、以下においては、分散深層学習システムは、図2から図5で説明した隠れ層h、hの出力を求める場合について説明する。
 図17に示すように、集約ノード2のOAM処理部222は、OAMパケットを生成し、集団通信に関与する計算ノード1に対して送信部223から送信する(ステップS300)。例えば、集約ノード2は、予めOAM処理部222において設定されている隠れ層hの出力に係る集団通信に関与する計算ノード1-1、1-2に対して、OAMパケットを送信する。
 その後、計算ノード1-1、1-2の各々で、部分演算が完了する(ステップS301)。計算ノード1-1、1-2の各々で得られた部分演算結果は、それぞれの記憶部11で保持される。次に、計算ノード1-1、1-2の各々は、集約ノード2からOAMパケットを受信すると、OAM処理部(第1のOAM処理回路)122が自ノードでの部分演算が完了していることを示すフラグ値「1」を設定する(ステップS302)。計算ノード1-1、1-2の各々は、フラグを立てたOAMパケットを集約ノード2へ送信する。
 次に、集約ノード2は計算ノード1-1、1-2からのOAMパケットを受信する。集約ノード2のOAM処理部222は、計算ノード1-1、1-2から受信したOAMパケットのフラグの値から、全体演算を行うための部分演算が完了していることを検知する。OAM処理部222は、計算ノード1-1、1-2の各々から部分演算結果を集約するための集約開始指示を生成する(ステップS303)。生成された集約開始指示は、計算ノード1-1、1-2に送信される。
 次に、計算ノード1-1、1-2は、集約ノード2からの集約開始指示を受信すると、自ノードでの部分演算結果を集約ノード2へ送信する(ステップS304)。その後、集約ノード2の加算部221は、計算ノード1-1、1-2から集約した部分演算結果の和である全体演算を行う(ステップS305)。その後、集約ノード2は、得られた全体演算結果を送信部223から、計算ノード1-1~1-3へ分配する。
 なお、図17では、集約ノード2は、隠れ層hの出力に係る全体演算を開始するために必要な部分演算を計算する計算ノード1-1、1-2のみにOAMパケットを送信する場合について説明した。しかし、集約ノード2は、図18に示すように、ステップS300において、全ての計算ノード1-1~1-3にOAMパケットを送信し、かつ、全ての計算ノード1-1~1-3で複数の隠れ層、例えば、隠れ層h、hの出力に係る全体演算を開始するために必要な部分演算が完了した(ステップS301、302)ことを契機として、計算ノード1-1~1-3に対して集約開始指示を送信することもできる(ステップS303)。
 以上説明したように、第3の実施の形態によれば、集約ノード2が集団通信に関与する複数の計算ノード1に対して、OAMパケットを送信する。集約ノード2は、各計算ノード1で記録され返送されてきたOAMパケットの状態から、全体演算を行うための部分演算が各計算ノード1で完了していることを検知すると、同期が完了したとして、部分演算結果を集約するために集約開始指示を計算ノード1に送信する。
 このように、複数の計算ノード1-1~1-3で部分演算が完了したことを契機として、計算ノード1-1~1-3に対して集約指示を行うので、集約ノード2は、より効率的に部分演算結果を計算ノード1-1~1-3から集約し、全体演算結果を求めることができる。
 また、本実施の形態に係る集約ノード2は、全体演算を行う加算部221およびOAMパケットの発行および処理を行うOAM処理部222を、ネットワーク処理部22に具備するので、集約ノード2は、演算部10が不要となる。そのため、加算処理やOAM処理を演算部10でソフトウェア的に処理した従来例と比較して、通信ネットワークに接続される計算ノードの数が増加しても、計算ノード間での協調処理をより高速に行うことができる。
 また、第3の実施の形態によれば、OAMパケットを特定の計算ノード1に対して送信することができ、OAMフレーム数を削減することができ、より高速な分散深層学習処理が実現できる。
 なお、説明した実施の形態では、複数の計算ノード1-1~1-3がニューラルネットワークモデルを分割して分散学習を行うことにより、ニューラルネットワークの全体の学習を行い、集団通信の高速化を行う場合を例示した。しかし、本実施の形態に係る分散深層学習システムは、学習処理に適用する他にも、推論処理など、行列の積和演算を含む大規模行列計算にも適用することで、処理を高速化することができる。
 以上、本発明の分散深層学習システムおよび分散深層学習方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
 1,1-1,1-2,1-3…計算ノード、10…演算部、11…記憶部、12…ネットワーク処理部、110…部分演算結果、111…全体演算結果、120…受信部、121…加算部、122…OAM処理部、123…送信部、101…CPU、102…メインメモリ、103…GPU、104…NIC、105…ストレージ、106…I/O、107…加算回路、108…OAM処理回路。

Claims (8)

  1.  通信ネットワークを介して互いに接続された複数の計算ノードを備え、
     前記複数の計算ノードの各々は、
     ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、
     前記演算装置から出力された前記第1演算結果を記憶する第1記憶装置と、
     前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信回路と、
     他の計算ノードからの第1演算結果を受信する第1受信回路と、
     前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信回路で受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算回路と、
     前記第2演算結果を、他の計算ノードへ送信する第2送信回路と、
     他の計算ノードからの第2演算結果を受信する第2受信回路と、
     前記複数の計算ノードの状態を示す通知パケットを受信する第3受信回路と、
     前記第3受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録するOAM処理回路と、
     前記OAM処理回路で記録された前記通知パケットを他の計算ノードへ送信する第3送信回路と、
     を有するネットワーク処理装置と
     を備え、
     前記OAM処理回路は、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させる
     ことを特徴とする分散深層学習システム。
  2.  請求項1に記載の分散深層学習システムにおいて、
     前記複数の計算ノードの各々は、
     前記第2演算結果を記憶する第2記憶装置をさらに備え、
     前記第2記憶装置は、前記加算回路で求められた前記第2演算結果、および前記第2受信回路で受信された前記他の計算ノードからの第2演算結果を記憶する
     ことを特徴とする分散深層学習システム。
  3.  請求項1または請求項2に記載の分散深層学習システムにおいて、
     前記複数の計算ノードのうちのいずれか1の計算ノードはマスターノードとして設定され、他の複数の計算ノードは前記マスターノードによって制御されるスレーブノードとして設定され、
     前記1の計算ノードが備える前記ネットワーク処理装置は、
     前記OAM処理回路が、前記通知パケットを生成し、
     前記第3送信回路は、生成された前記通知パケットを、前記他の複数の計算ノードへ送信し、
     前記OAM処理回路は、前記他の複数の計算ノードで記録された前記通知パケットが、前記他の複数の計算ノードの各々で既に前記第1演算結果が出力されていることを示す場合に、前記他の複数の計算ノードの各々が備える前記演算装置から出力された前記第1演算結果の和である前記第2演算結果の計算を前記加算回路に実行させる
     ことを特徴とする分散深層学習システム。
  4.  請求項1または請求項2に記載の分散深層学習システムにおいて、
     前記複数の計算ノードのうちのいずれか1の計算ノードがマスターノードとして設定され、他の複数の計算ノードは前記マスターノードによって制御されるスレーブノードとして設定され、
     前記1の計算ノードが備える前記ネットワーク処理装置は、
     前記OAM処理回路において、前記加算回路が前記第2演算結果を求めるために必要とされる複数の前記第1演算結果を出力する特定の複数の計算ノードを前記他の複数の計算ノードのうちから特定する特定情報を生成し、
     前記特定情報を前記他の複数の計算ノードに送信する第4送信回路をさらに備え、
     前記他の複数の計算ノードの各々が備える前記ネットワーク処理装置は、
     前記特定情報を受信する第5受信回路をさらに備え、
     前記OAM処理回路は、前記特定情報で特定される前記特定の複数の計算ノードに自ノードが含まれる場合に、前記通知パケットが示す前記特定の複数の計算ノードの前記状態を契機として、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を前記特定情報で特定される他の計算ノードへ送信させる
     ことを特徴とする分散深層学習システム。
  5.  通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備え、
     前記複数の計算ノードの各々は、
     ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算装置と、
     前記演算装置から出力された前記第1演算結果を、前記集約ノードに送信する第1送信回路と、
     前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信回路と、
     前記複数の計算ノードの状態を示す通知パケットを受信する第2受信回路と、
     前記第2受信回路で受信された前記通知パケットに、自ノードの前記演算装置から前記第1演算結果が出力されたか否かを記録する第1のOAM処理回路と、
     前記第1のOAM処理回路で記録された前記通知パケットを前記集約ノードへ送信する第2送信回路と
     を有する第1ネットワーク処理装置と、
     前記第1受信回路で受信された前記第2演算結果を記憶する第1記憶装置と
     を有し、
     前記第1のOAM処理回路は、前記集約ノードからの指示に基づいて、前記第1送信回路に、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、
     前記集約ノードは、
     前記通知パケットを生成する第2のOAM処理回路と、
     生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信回路と、
     前記複数の計算ノードの各々の前記第1のOAM処理回路で記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信回路と、
     前記複数の計算ノードからの第1演算結果を受信する第4受信回路と、
     前記第4受信回路で受信された第1演算結果の和である前記第2演算結果を求める加算回路と、
     前記加算回路で求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信回路と
     を有する第2ネットワーク処理装置と
     を有し、
     前記第2のOAM処理回路は、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示する
     ことを特徴とする分散深層学習システム。
  6.  請求項5に記載の分散深層学習システムにおいて、
     前記複数の計算ノードと、前記集約ノードとは、前記複数の計算ノードの各々と前記集約ノードとが互いに接続されたスター型の通信ネットワークを構成することを特徴とする分散深層学習システム。
  7.  通信ネットワークを介して互いに接続された複数の計算ノードを備える分散深層学習システムによって実行される分散深層学習方法であって、
     前記複数の計算ノードの各々は、
     ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、
     前記演算ステップで出力された前記第1演算結果を第1記憶装置に記憶する第1記憶ステップと、
     前記第1記憶装置に記憶された前記第1演算結果を、他の計算ノードに送信する第1送信ステップと、
     他の計算ノードからの第1演算結果を受信する第1受信ステップと、
     前記第1記憶装置に記憶されている前記第1演算結果と、前記第1受信ステップで受信された前記他の計算ノードからの第1演算結果との和である第2演算結果を求める加算ステップと、
     前記第2演算結果を、他の計算ノードへ送信する第2送信ステップと、
     他の計算ノードからの第2演算結果を受信する第2受信ステップと、
     前記複数の計算ノードの状態を示す通知パケットを受信する第3受信ステップと、
     前記第3受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録するOAM処理ステップと、
     前記OAM処理ステップで記録された前記通知パケットを他の計算ノードへ送信する第3送信ステップと
     を有するネットワーク処理ステップと
     を備え、
     前記OAM処理ステップは、前記通知パケットに示される他の計算ノードの前記状態を契機として、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を他の計算ノードへ送信させる
     ことを特徴とする分散深層学習方法。
  8.  通信ネットワークを介して互いに接続された複数の計算ノードと、集約ノードと、を備える分散深層学習システムによって実行される分散深層学習方法であって、
     前記複数の計算ノードの各々は、
     ニューラルネットワークの演算処理に含まれる行列積を計算し、第1演算結果を出力する演算ステップと、
     前記演算ステップで出力された前記第1演算結果を、前記集約ノードに送信する第1送信ステップと、
     前記集約ノードから、前記複数の計算ノードで計算された第1演算結果の和である第2演算結果を受信する第1受信ステップと、
     前記複数の計算ノードの状態を示す通知パケットを受信する第2受信ステップと、
     前記第2受信ステップで受信された前記通知パケットに、自ノードが前記演算ステップで前記第1演算結果を出力したか否かを記録する第1のOAM処理ステップと、
     前記第1のOAM処理ステップで記録された前記通知パケットを前記集約ノードへ送信する第2送信ステップと
     を有する第1ネットワーク処理ステップと、
     前記第1受信ステップで受信された前記第2演算結果を第1記憶装置に記憶する第1記憶ステップと
     を有し、
     前記第1のOAM処理ステップは、前記集約ノードからの指示に基づいて、前記第1送信ステップで、前記第1記憶装置に記憶された前記第1演算結果を前記集約ノードへ送信させ、
     前記集約ノードは、
     前記通知パケットを生成する第2のOAM処理ステップと、
     生成された前記通知パケットを前記複数の計算ノードへ送信する第3送信ステップと、
     前記複数の計算ノードの各々の前記第1のOAM処理ステップで記録された前記通知パケットを、前記複数の計算ノードから受信する第3受信ステップと、
     前記複数の計算ノードからの第1演算結果を受信する第4受信ステップと、
     前記第4受信ステップで受信された第1演算結果の和である前記第2演算結果を求める加算ステップと、
     前記加算ステップで求められた前記第2演算結果を、前記複数の計算ノードへ送信する第4送信ステップと
     を有する第2ネットワーク処理ステップと
     を有し、
     前記第2のOAM処理ステップは、前記通知パケットが示す前記複数の計算ノードの前記状態を契機として、前記複数の計算ノードの前記第1演算結果を集約するために、前記複数の計算ノードに対して前記第1演算結果を自ノードへ送信することを指示する
     ことを特徴とする分散深層学習方法。
PCT/JP2019/046967 2019-12-02 2019-12-02 分散深層学習システムおよび分散深層学習方法 WO2021111491A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/776,848 US20220398457A1 (en) 2019-12-02 2019-12-02 Distributed Deep Learning System and Distributed Deep Learning Method
PCT/JP2019/046967 WO2021111491A1 (ja) 2019-12-02 2019-12-02 分散深層学習システムおよび分散深層学習方法
JP2021562205A JP7283577B2 (ja) 2019-12-02 2019-12-02 分散深層学習システムおよび分散深層学習方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/046967 WO2021111491A1 (ja) 2019-12-02 2019-12-02 分散深層学習システムおよび分散深層学習方法

Publications (1)

Publication Number Publication Date
WO2021111491A1 true WO2021111491A1 (ja) 2021-06-10

Family

ID=76221538

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/046967 WO2021111491A1 (ja) 2019-12-02 2019-12-02 分散深層学習システムおよび分散深層学習方法

Country Status (3)

Country Link
US (1) US20220398457A1 (ja)
JP (1) JP7283577B2 (ja)
WO (1) WO2021111491A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108595A (ja) * 1991-10-17 1993-04-30 Hitachi Ltd ニユーラルネツトワークの分散学習装置
JP2008090769A (ja) * 2006-10-05 2008-04-17 Nippon Telegr & Teleph Corp <Ntt> 並列演算方法、演算装置、および演算装置用プログラム
JP2018120470A (ja) * 2017-01-26 2018-08-02 日本電気株式会社 通信システム、分散計算システム、ノード、情報共有方法及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6915562B2 (ja) * 2018-02-16 2021-08-04 日本電信電話株式会社 分散処理システムおよび分散処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108595A (ja) * 1991-10-17 1993-04-30 Hitachi Ltd ニユーラルネツトワークの分散学習装置
JP2008090769A (ja) * 2006-10-05 2008-04-17 Nippon Telegr & Teleph Corp <Ntt> 並列演算方法、演算装置、および演算装置用プログラム
JP2018120470A (ja) * 2017-01-26 2018-08-02 日本電気株式会社 通信システム、分散計算システム、ノード、情報共有方法及びプログラム

Also Published As

Publication number Publication date
JP7283577B2 (ja) 2023-05-30
JPWO2021111491A1 (ja) 2021-06-10
US20220398457A1 (en) 2022-12-15

Similar Documents

Publication Publication Date Title
CN110033078B (zh) 一种基于树状拓扑的计算系统及方法
US20180211166A1 (en) Distributed deep learning device and distributed deep learning system
CN113098773B (zh) 数据处理方法、装置及系统
Rikos et al. Optimal CPU scheduling in data centers via a finite-time distributed quantized coordination mechanism
EP3515018A1 (en) Method, apparatus and system for measuring network path
JP7001004B2 (ja) 分散深層学習システム、分散深層学習方法、およびコンピューティングインタコネクト装置
US9628553B2 (en) Mapping network service dependencies
WO2021111491A1 (ja) 分散深層学習システムおよび分散深層学習方法
Li et al. Asyfed: Accelerated federated learning with asynchronous communication mechanism
JP6178113B2 (ja) 通信システム
WO2021095196A1 (ja) 分散深層学習システムおよび分散深層学習方法
WO2020238719A1 (zh) 通信链路的建立方法及装置,节点标识确定方法及装置
JP5651217B1 (ja) パス復旧制御装置
JP7135468B2 (ja) 分散処理システムおよび分散処理方法
CN105704004B (zh) 业务数据处理方法和装置
Travieso et al. Effective networks for real-time distributed processing
Narayana et al. Similarity-Based Fast Analysis of Data Center Networks
CN117061365B (zh) 一种节点选择方法、装置、设备及可读存储介质
CN114900441B (zh) 网络性能预测方法,性能预测模型训练方法及相关装置
CN116192753B (zh) 一种流量分配方法及装置
CN116681973B (zh) 一种图像处理方法、装置、系统、设备及计算机存储介质
CN114095289B (zh) 数据多播电路、方法、电子设备及计算机可读存储介质
McGlohon et al. Fit Fly: A Case Study on Interconnect Innovation through Parallel Simulation
JP7248110B2 (ja) 分散深層学習システム
CN115242702B (zh) 一种物联网节点最优路径规划方法及系统

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19955273

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021562205

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19955273

Country of ref document: EP

Kind code of ref document: A1