WO2019239802A1 - 分散処理システムおよび分散処理方法 - Google Patents

分散処理システムおよび分散処理方法 Download PDF

Info

Publication number
WO2019239802A1
WO2019239802A1 PCT/JP2019/019895 JP2019019895W WO2019239802A1 WO 2019239802 A1 WO2019239802 A1 WO 2019239802A1 JP 2019019895 W JP2019019895 W JP 2019019895W WO 2019239802 A1 WO2019239802 A1 WO 2019239802A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
distributed processing
data
distributed
aggregated data
Prior art date
Application number
PCT/JP2019/019895
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
Priority to US16/973,717 priority Critical patent/US20210209443A1/en
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Publication of WO2019239802A1 publication Critical patent/WO2019239802A1/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/04Architecture, e.g. interconnection topology
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Definitions

  • the present invention relates to a distributed processing system including a plurality of distributed processing nodes, and in particular, a distributed processing system that generates aggregate data by aggregating numerical data from each distributed processing node, and distributes the aggregated data to each distributed processing node.
  • the present invention relates to a distributed processing method.
  • Deep learning improves the inference accuracy of the learning target consisting of multiple neuron models by updating the weight of each neuron model (the coefficient by which the value output from the previous neuron model is multiplied) based on the input sample data. To do.
  • the mini-batch method is used as a method for improving the inference accuracy.
  • a gradient calculation process for calculating a gradient for the weight for each sample data a totalization process for totaling the gradients for a plurality of different sample data (summing the gradients obtained for each sample data by weight), A weight update process for updating each weight based on the aggregated gradient is repeated.
  • a distributed processing method is used to speed up the gradient calculation process. Specifically, a plurality of distributed processing nodes are provided, and each node performs gradient calculation processing on different sample data. As a result, the number of sample data that can be processed per unit time can be increased in proportion to the number of nodes, so that the gradient calculation process can be speeded up (see Non-Patent Document 1).
  • each distributed processing node calculates the gradient with respect to the weight for each sample data, and the intra-node aggregation that adds the gradient obtained for each sample data by weight Communication for transferring the data (distributed data) obtained for each distributed processing node to a node that performs aggregation processing between the processing and the weight update processing for updating each weight based on the aggregated gradient ( (Aggregated communication), processing for aggregation based on data acquired by aggregate communication (inter-node aggregation processing), and communication for distributing aggregated data (aggregated data) acquired from each distributed processing node to each distributed processing node (Distributed communication) is required.
  • FIG. 22 is a block diagram showing a configuration example of a conventional deep learning distributed processing system.
  • FIG. 23 shows a sequence of distributed processing for deep learning according to the prior art.
  • the aggregation processing node 101 performs all node aggregation processing for adding the gradients obtained from the respective nodes by weight, and transmits the aggregation data to each distributed processing node 100 [n] in the period IV.
  • each distributed processing node 100 [n] performs weight update processing.
  • Such a processing time is not necessary in a system in which deep learning is performed by a single node, and is a factor that decreases the processing speed when performing distributed learning of deep learning.
  • deep learning has been applied to more complex problems, and the total number of weights tends to increase. For this reason, the amount of distributed data and aggregate data increases, and the aggregate communication time and distributed communication time increase.
  • FIG. 24 shows the relationship between the number of distributed processing nodes and the processing performance of deep learning in a conventional distributed processing system
  • 200 shows the ideal relationship between the number of distributed processing nodes and the processing performance (performance ⁇ number of nodes).
  • 201 indicates the actual relationship between the number of distributed processing nodes and processing performance.
  • the total amount of distributed data which is the input of inter-node aggregation processing, increases in proportion to the number of distributed processing nodes, but the actual processing performance does not improve in proportion to the number of distributed processing nodes. This is because the time required for the aggregated communication increases because it is limited to the physical speed or less of the communication port of this node.
  • the present invention has been made in consideration of the above-described circumstances, and an object of the present invention is to perform effective distributed processing when applied to deep learning in a distributed processing system having a plurality of distributed processing nodes. Disclosed is a distributed processing system and a distributed processing method.
  • the first distributed processing node packetizes the first aggregated data in the order of the number m of the weight w [m] using the distributed data generated by the node as the first aggregated data, and is designated in advance.
  • the intermediate distributed processing node excluding the first and last among the N distributed processing nodes is transmitted to the next distributed processing node, and the distributed data generated by the received first aggregated data and its own node
  • the sum of the data and the corresponding weight w [m First updated data that is obtained every time is generated, and this first aggregated data is packetized in the order of the number m and transmitted to the distributed processing node of the next number specified in advance.
  • the predetermined final distributed processing node obtains the sum of the received first aggregated data and the distributed data generated by the own node for each corresponding weight w [m].
  • Second aggregated data is generated, and the second aggregated data is packetized in the order of the number m and transmitted to the first and intermediate distributed processing nodes.
  • Each distributed processing node The weight w [m] of the neural network is updated based on the total data.
  • each distributed processing node receives the first aggregated data when the node is the first distributed processing node. Packetized in the order of the number m, transmitted to the distributed processing node of the next number specified in advance, and when the own node is the intermediate distributed processing node, the updated first aggregated data is the number packetized in the order of m and transmitted to the distributed processing node of the next number specified in advance, and when the own node is the final distributed processing node, the second aggregated data is in the order of the number m Packetized and sent to the first and intermediate distributed processing nodes, and when the own node is the intermediate distributed processing node, the updated first aggregated data is generated, Self When the node is the final distributed processing node, the aggregate data generating unit that generates the second aggregated data, and when the own node is the first or intermediate distributed processing node, the first Based on the second aggregated data and the receiving unit that receives the aggregated data and the second aggregated
  • the distributed processing system of the present invention (second embodiment) includes K ring nodes (K is an integer of 3 or more) arranged in a ring shape and connected to each other via a communication path.
  • the ring node functioning as the first pre-designated distributed processing node among the N distributed processing nodes generates the first aggregated data as the first aggregated data.
  • Weight the aggregated data w m] are packetized in the order of the number m and transmitted to the distributed processing node of the next number specified in advance, and the intermediate distributed processing excluding the first and last among the N distributed processing nodes
  • the ring node functioning as a node generates the updated first aggregated data by obtaining the sum of the received first aggregated data and the distributed data generated by the own node for each corresponding weight w [m].
  • the first aggregated data is packetized in the order of the number m and transmitted to the distributed processing node of the next number specified in advance, and among the N distributed processing nodes, the last specified in advance
  • the ring node functioning as the distributed processing node generates the second aggregated data by obtaining the sum of the received first aggregated data and the distributed data generated by the own node for each corresponding weight w [m].
  • this second tabulation data Are packetized in the order of the number m and transmitted to the pre-specified distributed processing node, and among the N distributed processing nodes, the ring node functioning as the intermediate distributed processing node is:
  • the received second aggregated data is packetized in the order of the number m and transmitted to the distributed processing node of the previous number specified in advance, and each of the K ring nodes that functions as the relay node
  • the ring node transmits the received first aggregated data or the second aggregated data to a distributed processing node that is a transfer destination, and each distributed processing node transmits the neural network based on the second aggregated data.
  • the network weight w [m] is updated.
  • each ring node receives the first aggregated data when the node functions as the first distributed processing node.
  • the first aggregated data after the update when packetized in the order of the number m and transmitted to the distributed processing node of the next number specified in advance, and when the own node functions as the intermediate distributed processing node Are packetized in the order of the number m and transmitted to the distributed processing node of the next number specified in advance, and when the own node functions as the final distributed processing node, the second aggregated data is The packets are packetized in the order of the number m and transmitted to the distributed processing node having the previous number specified in advance.
  • the received first aggregated data is received.
  • the aggregate data transmission unit that transmits the second aggregated data to the distributed processing node of the transfer destination and the own node functions as the intermediate distributed processing node, the updated first aggregated data
  • the aggregated data generation unit that generates the second aggregated data, and the own node functions as the first or intermediate distributed processing node.
  • a receiving unit that receives the first aggregated data and receives the first aggregated data when the first node functions as the final distributed processing node
  • a weight update processing unit that updates the weight w [m] of the neural network based on the second aggregated data when the node functions as the distributed processing node. And it is characterized in and.
  • the distributed processing control unit assigns each of the K ring nodes to either the distributed processing node or the relay node.
  • Function designation unit to designate and function designation of each ring node so as to avoid this failure when a failure that cannot transmit the first aggregated data or the second aggregated data to the distributed processing node of the transfer destination occurs
  • a function designation changing unit for changing the function.
  • the distributed processing control unit selects any one of a plurality of different groups for each of the ring nodes designated as the distributed processing nodes.
  • the ring node that functions as the first distributed processing node designated in advance among the N distributed processing nodes is designated as belonging to one group, and the distributed data generated by the own node is used as the first aggregated data.
  • the first aggregated data is packetized in the order of the number m with the weight w [m], and transmitted to the distributed processing node of the next designated number belonging to the same group, and N distributed processing Among the nodes, the ring node functioning as an intermediate distributed processing node excluding the first and last is first aggregated data transmitted from the same group of distributed processing nodes. The sum of the distributed data generated by the own node is obtained for each corresponding weight w [m] to generate updated first aggregated data, and the first aggregated data is packetized in the order of the number m.
  • the ring node functioning as a predetermined final distributed processing node among the N distributed processing nodes is transmitted to the distributed processing node of the next designated number belonging to the same group.
  • the sum of the first aggregated data transmitted from the distributed processing node of the same group and the distributed data generated by the own node is obtained for each corresponding weight w [m] to generate second aggregated data.
  • the second aggregated data is packetized in the order of the number m, and transmitted to the distributed processing node of the previous designated number belonging to the same group, and among the N distributed processing nodes, the intermediate data Distributed processing
  • the ring node functioning as a node packetizes the second aggregated data transmitted from the distributed processing node of the same group in the order of the number m, and the distributed processing node of the previous number specified in advance belonging to the same group
  • each distributed processing node updates the weight w [m] of the neural network based on the second aggregated data generated and transmitted by the distributed processing nodes in the same group. Is.
  • the distributed processing method (first embodiment) of the present invention is such that each of N (N is an integer of 2 or more) distributed processing nodes connected to each other via a network is a learning target neural network M.
  • a first step of generating distributed data (M 1,..., M) for each weight (M is an integer equal to or greater than 2) w [m], and predetermined among N distributed processing nodes.
  • the first distributed processing node designated as the first aggregated data is packetized in the order of the number m of the weight w [m], using the distributed data generated by the own node as the first aggregated data.
  • the second step of transmitting to the distributed processing node of the next number, and among the N distributed processing nodes, the intermediate distributed processing node excluding the first and the last receives the first aggregated data received The sum with the distributed data generated by the own node First updated aggregated data obtained for each corresponding weight w [m] is generated, the first aggregated data is packetized in the order of the number m, and the distribution process of the next number specified in advance is performed.
  • the third step of transmitting to the node, and among the N distributed processing nodes, a predetermined final distributed processing node calculates the sum of the received first aggregated data and the distributed data generated by the own node.
  • the second aggregated data is generated for each corresponding weight w [m], and the second aggregated data is packetized in the order of the number m and transmitted to the first and intermediate distributed processing nodes. And a fifth step in which each distributed processing node updates the weight w [m] of the neural network based on the second aggregated data.
  • the distributed processing method of the present invention (second embodiment) is arranged in a ring shape, and K (K is an integer of 3 or more) ring nodes connected to each other via a communication path with adjacent nodes.
  • K K is an integer of 3 or more
  • each of N ring nodes (N is an integer of 2 or more and K or less) functioning as a distributed processing node is provided for each of M weights (M is an integer of 2 or more) weights w [m] (N is an integer of 2 or more).
  • m 1,..., M) and the ring node functioning as the first pre-designated distributed processing node among the N distributed processing nodes is the own node.
  • the distributed data generated in step 1 is packetized in the order of the number m with the weight w [m] as the first aggregated data, and directed to the distributed processing node of the next number specified in advance.
  • First updated data is obtained every w [m], and the first aggregated data is generated, packetized in the order of the number m, and directed to the distributed processing node of the next number specified in advance.
  • the aggregation communication process, the inter-node aggregation process, and the distributed communication process can be performed in parallel almost at the same time, an effective distributed process can be performed, and the learning efficiency of the neural network can be improved. Can be improved.
  • the deep learning distributed processing can be performed without providing the aggregation processing node, and the speed of the distributed processing is not limited by the communication speed of the aggregation processing node.
  • FIG. 1 is a block diagram showing a configuration example of a distributed learning processing system for deep learning according to a first embodiment of the present invention.
  • FIG. 2 is a block diagram showing a configuration example of a distributed processing node in the distributed processing system for deep learning according to the first embodiment of the present invention.
  • FIG. 3 is a flowchart for explaining sample data input processing, gradient calculation processing, and intra-node aggregation processing of the distributed processing node according to the first embodiment of the present invention.
  • FIG. 4 is a flowchart for explaining the aggregated communication process, the inter-node aggregate process, and the weight update process of the distributed processing node according to the first embodiment of the present invention.
  • FIG. 1 is a block diagram showing a configuration example of a distributed learning processing system for deep learning according to a first embodiment of the present invention.
  • FIG. 2 is a block diagram showing a configuration example of a distributed processing node in the distributed processing system for deep learning according to the first embodiment of the present invention.
  • FIG. 3 is
  • FIG. 5 is a diagram showing a processing sequence of each distributed processing node according to the first embodiment of the present invention.
  • FIG. 6 is a diagram showing a processing sequence of each distributed processing node according to the first embodiment of the present invention.
  • FIG. 7 is a block diagram showing a configuration example of a distributed learning processing system for deep learning according to the second embodiment of the present invention.
  • FIG. 8 is a diagram showing an example of a state in which the ring node is designated as either a distributed processing node or a relay node in the second embodiment of the present invention.
  • FIG. 9 is a block diagram showing a configuration example of a distributed learning processing system for deep learning according to the second embodiment of the present invention.
  • FIG. 9 is a block diagram showing a configuration example of a distributed learning processing system for deep learning according to the second embodiment of the present invention.
  • FIG. 10 is a block diagram showing a configuration example of a distributed processing node of the deep learning distributed processing system according to the second embodiment of the present invention.
  • FIG. 11 is a diagram for explaining the operation of the deep learning distributed processing system according to the second embodiment of the present invention.
  • FIG. 12 is a flowchart for explaining the aggregated communication process, the inter-node aggregate process, and the weight update process of the distributed processing node according to the second embodiment of the present invention.
  • FIG. 13 is a diagram showing a processing sequence of each distributed processing node according to the second embodiment of the present invention.
  • FIG. 14 is a diagram showing a processing sequence of each distributed processing node according to the second embodiment of the present invention.
  • FIG. 15 is a block diagram illustrating a configuration example of a distributed processing node of the deep learning distributed processing system according to the third exemplary embodiment of the present invention.
  • FIG. 16 is a block diagram illustrating a configuration example of the distributed processing control unit of the distributed learning system for deep learning according to the third embodiment of the present invention.
  • FIG. 17 is a diagram showing a state in which each ring node is designated as either a distributed processing node or a relay node in the third embodiment of the present invention.
  • FIG. 18 is a diagram showing a state in which each ring node is designated as either a distributed processing node or a relay node in the third embodiment of the present invention.
  • FIG. 16 is a block diagram illustrating a configuration example of a distributed processing control unit of the distributed learning system for deep learning according to the third embodiment of the present invention.
  • FIG. 17 is a diagram showing a state in which each ring node is designated as either a distributed processing node or a relay node in the third embodiment of the present
  • FIG. 19 is a diagram showing a state in which each ring node is designated as either a distributed processing node or a relay node in the fourth embodiment of the present invention.
  • FIG. 20 is a block diagram showing a configuration example of a distributed processing node of the distributed processing system for deep learning according to the fourth embodiment of the present invention.
  • FIG. 21 is a block diagram illustrating a configuration example of the distributed processing control unit of the deep learning distributed processing system according to the fourth exemplary embodiment of the present invention.
  • FIG. 22 is a block diagram showing a configuration example of a conventional deep learning distributed processing system.
  • FIG. 23 is a diagram showing a conventional deep learning distributed processing sequence.
  • FIG. 24 is a diagram showing the relationship between the number of distributed processing nodes and the processing performance of deep learning in a conventional distributed processing system.
  • FIG. 1 is a block diagram showing a configuration example of a deep learning distributed processing system according to a first embodiment of the present invention.
  • the distributed processing network 2 is a network capable of bidirectional communication.
  • node means a device such as a server distributed on a network.
  • FIG. 2 is a block diagram showing a configuration example of the distributed processing node 1 [n].
  • Each distributed processing node 1 [n] includes a sample input unit 10 that receives sample data for learning from a data collection node (not shown), and each of the weights of the neural network when the sample data is input.
  • a slope calculation processing unit 11 that calculates the slope of the loss function for each sample data, an intra-node total processing unit 12 that generates and holds distributed data, which is a numerical value obtained by summing the slopes for each sample data, for each weight, and intermediate summation
  • the aggregate data transmitting unit 13 for transmitting data and aggregate data
  • the receiving unit 14 for receiving intermediate aggregate data and aggregate data, and when the own node is an intermediate distributed processing node, generate intermediate aggregate data
  • a total data generation unit 15 that generates total data when the node is the final distributed processing node
  • a weight updating unit 16 for updating the weights of the neural network based on data
  • a neural network 17 is a software-constructed mathematical model.
  • FIG. 3 is a flowchart for explaining sample data input processing, gradient calculation processing, and intra-node aggregation processing of the distributed processing node 1 [n].
  • the present invention is not limited to the method of collecting sample data by the data collection node and the method of distributing the collected sample data to N sets and distributing them to each distributed processing node 1 [n]. This method can be applied regardless of the method.
  • the distributed data D [m, n] is generated and held for each weight w [m] (step S102 in FIG. 3).
  • the calculation formula of the distributed data D [m, n] is as follows.
  • the gradient calculation processing by the gradient calculation processing unit 11 and the intra-node aggregation processing by the intra-node aggregation processing unit 12 are pipelined in units of sample data (at the same time when gradient calculation processing is performed on certain sample data) (Intra-node aggregation processing for aggregating the gradient obtained from the previous sample data can be executed simultaneously).
  • FIG. 4 is a flowchart for explaining the aggregate communication processing, inter-node aggregation processing, and weight update processing of the distributed processing node 1 [n].
  • the predetermined total data transmission unit 13 of the first distributed processing node 1 [1] is the own node.
  • 1 [2] is transmitted via the distributed processing network 2 (steps S103 and S104 in FIG. 4). That is, the intermediate total data R * [m, 1] at this time is the same as the distributed data D [m, 1].
  • R * [m, 1] D [m, 1] (2)
  • the total data generation unit 15 of the intermediate distributed processing node 1 [i] calculates the sum of the received intermediate total data R * [m, i ⁇ 1] and the distributed data D [m, i] generated by the own node. Then, intermediate total data R * [m, i] is generated by obtaining for each corresponding weight w [m] (step S107 in FIG. 4). That is, the intermediate total data R * [m, i] is composed of M numerical values.
  • the total data transmission unit 13 of the intermediate distributed processing node 1 [i] uses the intermediate processing data R * [m, i] generated by the own node as the next distributed processing node 1 [ i + 1] via the distributed processing network 2 (step S108 in FIG. 4).
  • the receiving unit 14 of the final distributed processing node 1 [N] determined in advance is distributed processing node 1 [N ⁇ 1].
  • Intermediate total data R * [m, N ⁇ 1] is received from the distributed processing network 2 (steps S109 and S110 in FIG. 4).
  • the total data generation unit 15 of the final distributed processing node 1 [N] calculates the sum of the received intermediate total data R * [m, N ⁇ 1] and the distributed data D [m, N] generated by the own node.
  • the total data R [m] is generated by obtaining for each corresponding weight w [m] (step S111 in FIG. 4). That is, the total data R [m] is composed of M numerical values.
  • the weight update processing unit 16 of the final distributed processing node 1 [N] updates the weight w [m] of the neural network 17 in the own node based on the aggregate data R [m] generated in the own node. Update processing is performed (step S113 in FIG. 4).
  • the weight w [m] may be updated for each number m so that the loss function is minimized based on the gradient of the loss function indicated by the aggregate data R [m]. Since the update of the weight w [m] is a well-known technique, detailed description thereof is omitted.
  • the weight update process is a process of updating the weight w [m] based on the total data R [m] acquired in the order of the number m of the weight w [m]. For this reason, the distributed processing node 1 [N] can perform the weight update processing for the weight w [m] in the order of the number m.
  • the weight update processing unit 16 of the first and intermediate distributed processing node 1 [j] updates the weight w [m] of the neural network 17 in its own node based on the received aggregated data R [m]. Processing is performed (step S116 in FIG. 4). This weight update processing is the same as the weight update processing in the final distributed processing node 1 [N].
  • each distributed processing node 1 [n] receives the next sample data for mini-batch learning from a data collection node (not shown) and repeats the mini-batch learning process described above, thereby improving the inference accuracy of the neural network 17.
  • the M distributed data D [m, n] is described as being processed at a time, but in actuality, the M distributed data D [m, n] is distributed to a plurality of packets.
  • the total data transmission unit 13 of the first distributed processing node 1 [1] determined in advance is generated by the own node.
  • P-1)) ⁇ dummy numerical values may be added so that all aggregated communication packets store L data equally.
  • the receiving unit 14 of the intermediate distributed processing node 1 [i] generates L intermediate totals generated by the distributed processing node 1 [i-1] of the transmission source from the received aggregated communication packet SP [p, i-1].
  • the receiving unit 14 of [i] can finally acquire M pieces of intermediate total data R * [m, i ⁇ 1].
  • the total data generation unit 15 of the intermediate distributed processing node 1 [i] calculates the acquired intermediate total data R * [m, i ⁇ 1] and the distributed data D [m, i] generated by the own node. By calculating the sum for each corresponding weight w [m] (formula (3)), intermediate total data R * [m, i] is generated (step S107 in FIG. 4).
  • the aggregate data transmission unit 13 of the distributed processing node 1 [i] generates L pieces of the generated M intermediate aggregate data R * [m, i] in order of the number m of the weight w [m].
  • P-1)) ⁇ dummy numerical values may be added so that all aggregated communication packets store L data equally.
  • the receiving unit 14 of the final distributed processing node 1 [N] generates L intermediate totals generated by the distributed processing node 1 [N-1] as the transmission source from the received aggregated communication packet SP [p, N-1].
  • the total data generation unit 15 of the final distributed processing node 1 [N] uses the acquired intermediate total data R * [m, N ⁇ 1] and the distributed data D [m, N] generated by the own node. By calculating the sum for each corresponding weight w [m] (formula (4)), the total data R [m] is generated (step S111 in FIG. 4).
  • w [m] the weight w [m].
  • ⁇ L ⁇ (ML ⁇ (P ⁇ 1)) ⁇ after (ML ⁇ (P ⁇ 1)) total data R [r] It is also possible to add dummy numerical values so that all distributed communication packets store L pieces of data equally.
  • the receiving unit 14 can finally acquire M total data R [m].
  • the weight update process in each distributed processing node 1 [n] is as described above.
  • FIG. 6 shows the process at 60 in FIG.
  • Reference numeral 61 denotes inter-node aggregation processing in the distributed processing node 1 [N].
  • the aggregated communication process, the inter-node aggregate process, and the distributed communication process can be performed in parallel almost simultaneously (by pipeline processing). As compared with the prior art in which the next process cannot be started until each process is completed, the processing time can be greatly reduced.
  • the conventional technique performs each process in order in units of all data, so all these processes are completed.
  • the time of T + ⁇ is sufficient.
  • is the aggregated data R [m] corresponding to the number m from the time when the arbitrary distributed processing node 1 [n] transmits the distributed data D [m, n] corresponding to the arbitrary number m. This is the delay time until reception.
  • the time ⁇ is sufficiently shorter than T. Therefore, in the present embodiment, it is possible to reduce the time required for the aggregate communication process, the inter-node aggregation process, and the distributed communication process to about 1/3 as compared with the prior art.
  • the ring node designated as the distributed processing node is connected to the distributed processing nodes of the preceding and following numbers via at least one of the one or more communication paths 4 and the one or more relay nodes. Need to be specified.
  • N is an integer of 2 or more and K or less) or an example of a state designated as one of relay nodes 3b.
  • the relay node 3b is specified only for the ring node between the distributed processing node 3a [1] and the distributed processing node 3a [N].
  • each of the ring nodes 3 designated as the distributed processing node 3a [z] (z is an integer of 1 to N-1) and the distributed processing node 3a [z + 1] has one or more communication paths 4 and one or more.
  • the point of being connected via the relay node 3b is the difference from FIG.
  • FIG. 9 shows an example in which a system equivalent to the distributed processing system shown in the first embodiment is configured by designating each ring node 3 as either the distributed processing node 3a [n] or the relay node 3b.
  • FIG. 10 is a block diagram illustrating a configuration example of the distributed processing node 3a [n]. The same components as those in FIG. 2 are denoted by the same reference numerals.
  • Each distributed processing node 3a [n] includes a sample input unit 10, a gradient calculation processing unit 11, an intra-node total processing unit 12, a total data transmission unit 13a, a reception unit 14a, a total data generation unit 15, A weight update processing unit 16, a neural network 17, and a function setting unit 18 that receives the designation from the distributed processing control unit 5 and sets the function of the own node as a distributed processing node or a relay node.
  • the function setting unit 18 receives from the distributed processing control unit 5 the addresses of all the distributed processing nodes 3a including the addresses of the distributed processing nodes 3a with numbers before and after the own distributed processing node.
  • FIG. 11 is a diagram for explaining the operation of the deep learning distributed processing system of FIG. 9, and FIG. 12 is a flowchart for explaining the aggregate communication processing, inter-node aggregation processing, and weight update processing of each distributed processing node 3a [n]. .
  • Sample data input processing, gradient calculation processing, and intra-node aggregation processing of each distributed processing node 3a [n] are the same as in the first embodiment.
  • the in-node aggregation processing unit 12 of the ring node 3 [h] functioning as the first distributed processing node 3a [1], the distributed data D [m, 1] (m 1,. .., M) is generated.
  • the ring node 3 [u] functioning as the relay node 3b is the same as the ring node 3 [t].
  • the intermediate total data R * [m, i ⁇ 1] is received via the path 4 [z ⁇ ] (steps S205 and S206 in FIG. 12).
  • the total data generation unit 15 of the intermediate distributed processing node 3a [i] calculates the sum of the received intermediate total data R * [m, i-1] and the distributed data D [m, i] generated by the own node. Then, intermediate total data R * [m, i] is generated for each corresponding weight w [m] (step S207 in FIG. 12).
  • the intermediate total data R * [m, N ⁇ 1] is received via the path 4 [e ⁇ ] (steps S209 and S210 in FIG. 12).
  • the total data generation unit 15 of the final distributed processing node 3a [N] calculates the sum of the received intermediate total data R * [m, N ⁇ 1] and the distributed data D [m, N] generated by the own node.
  • the total data R [m] is generated by obtaining for each corresponding weight w [m] (step S211 in FIG. 12).
  • the total data transmission unit 13a of the final distributed processing node 3a [N] transmits the total data R [m] generated by the own node to the ring node 3 [e ⁇ ] having the previous number e ⁇ ( FIG. 12 step S212). That is, the total data transmission unit 13a transmits the total data R [m] toward the distributed processing node 3a [N-1] having the previous number.
  • the operation (step S213 in FIG. 12) of the weight update processing unit 16 of the final distributed processing node 3a [N] is the same as that in the first embodiment.
  • the ring node 3 [u] functioning as the relay node 3b is the same as the ring node 3 [t].
  • the aggregated data R [m] is transmitted to the communication channel 4 [z ⁇ ] (step S216 in FIG. 12).
  • the total data transmission unit 13a transmits the total data R [m] toward the distributed processing node 3a [i-1] having the previous number.
  • the operation of the weight update processing unit 16 of the intermediate distributed processing node 3a [i] (step S217 in FIG. 12) is the same as that in the first embodiment.
  • Aggregated data R [m] is received from the node 3 [h + ] via the communication path 4 [h + ] (steps S218 and S219 in FIG. 12).
  • the operation of the weight update processing unit 16 of the first distributed processing node 3a [1] (step S220 in FIG. 12) is the same as in the first embodiment.
  • the ring node 3 [v] functioning as the relay node 3b is located between the distributed processing node 3a [1] and the distributed processing node 3a [n]. Is not transferred.
  • each distributed processing node 3a [n] receives the next sample data for mini-batch learning from a data collection node (not shown), and improves the inference accuracy of the neural network 17 by repeating the mini-batch learning process described above.
  • P-1)) ⁇ dummy numerical values may be added so that all aggregated communication packets store L data equally.
  • the receiving unit 14a of the intermediate distributed processing node 3a [i] generates L intermediate totals generated by the distributed processing node 3a [i-1] as the transmission source from the received aggregated communication packet SP [p, i-1].
  • the receiving unit 14a of [i] can finally acquire M pieces of intermediate total data R * [m, i-1].
  • the aggregated data generation unit 15 of the intermediate distributed processing node 3a [i] calculates the acquired intermediate aggregated data R * [m, i-1] and the distributed data D [m, i] generated by the own node. By calculating the sum for each corresponding weight w [m] (formula (3)), intermediate total data R * [m, i] is generated (step S207 in FIG. 12).
  • the aggregated data transmission unit 13a of the distributed processing node 3a [i] outputs the generated M pieces of intermediate aggregated data R * [m, i] in order of the number m of the weight w [m].
  • P-1)) ⁇ dummy numerical values may be added so that all aggregated communication packets store L data equally.
  • the receiving unit 14a of the final distributed processing node 3a [N] generates L intermediate totals generated by the distributed processing node 3a [N-1] of the transmission source from the received aggregated communication packet SP [p, N-1].
  • receiving unit 14a can finally acquire M pieces of intermediate total data R * [m, N-1].
  • the total data generation unit 15 of the final distributed processing node 3a [N] calculates the obtained intermediate total data R * [m, N-1] and the distributed data D [m, N] generated by the own node. By calculating the sum for each corresponding weight w [m] (formula (4)), the total data R [m] is generated (step S211 in FIG. 12).
  • the P distribution communication packets are sequentially transmitted to the ring node 3 [z ⁇ ] having the previous number z ⁇ until transmission of all the distribution communication packets is completed.
  • ML ⁇ (P ⁇ 1) total data R [r]
  • the receiving unit 14a of the first distributed processing node 3a [1] receives the distributed communication packet DP [p, 2] from the ring node 3 [h + ] having the subsequent number h + (steps S218 and S219 in FIG. 12). .
  • the receiving unit 14a can finally acquire M total data R [m].
  • the processing at 60 in FIG. 13 is the same as that in FIG.
  • Reference numeral 61 denotes inter-node aggregation processing in the distributed processing node 3a [N].
  • the aggregate communication processing, the inter-node aggregation processing, and the distributed communication processing are performed almost simultaneously in parallel (by pipeline processing). In comparison with the prior art in which the next process cannot be started until each communication or each process is completed, the processing time can be greatly reduced.
  • bit rate of the bidirectional communication path 4 connecting the ring nodes is the same (the bit rate of the aggregate communication from the distributed processing node 3a [n] to the distributed processing node 3a [n + 1] and the distributed processing node 3a [n + 1]. If the general communication path is used and the inter-node aggregation process is possible at the same bit rate, the bandwidth of the communication path is most efficient. The processing used for the process can be performed, which contributes to shortening the processing time.
  • the deep learning distributed processing system shown in the first embodiment having the number of ring nodes equal to or less than K can be constructed on this system. For this reason, it is possible to operate the system with an appropriate number of nodes according to the scale of learning (number of sample data and amount of calculation) without changing the physical system configuration (without increasing or decreasing the number of ring nodes). (A ring node that is not assigned to the distributed processing node 3a can be stopped as a relay node 3b), and thus it is possible to suppress wasteful power consumption.
  • the configuration of FIG. 10 can also function as the relay node 3b.
  • the ring node 3 functions as the relay node 3b, the data received by the receiving unit 14a is transmitted from the total data transmitting unit 13a.
  • n] (n 1,..., N) or the relay node 3b.
  • FIG. 15 is a block diagram illustrating a configuration example of the distributed processing node 3a [n] according to the present embodiment.
  • Each distributed processing node 3a [n] includes a sample input unit 10, a gradient calculation processing unit 11, an in-node aggregation processing unit 12, a total data transmission unit 13b, a reception unit 14a, a total data generation unit 15, A weight update processing unit 16, a neural network 17, and a function setting unit 18 are provided.
  • FIG. 16 is a block diagram illustrating a configuration example of the distributed processing control unit 5.
  • the relay node 3b and the control network 6 are not shown.
  • 80 indicates the flow of aggregate communication
  • 81 indicates the flow of distributed communication.
  • the distributed data D [m, 1] generated by the own node is set as intermediate total data R * [m, 1], and the following The number is transmitted to the distributed processing node 3a [2].
  • the distributed processing node 3a [f + 1] has the distributed data D [m, f + 1] generated in its own node and the intermediate total data R * [m, received from the distributed processing node 3a [f].
  • f] and intermediate total data R * [m, f + 1] is generated and transmitted to the next distributed processing node 3a [f + 2].
  • a weight update process for updating the weight w [m] is performed.
  • each distributed processing node 3a [n] receives the next sample data for mini-batch learning from a data collection node (not shown), and improves the inference accuracy of the neural network 17 by repeating the mini-batch learning process described above.
  • the aggregate data transmission unit 13b has a function of notifying the distributed processing control unit 5 of failure detection via the control network 6 when a failure is detected.
  • the failure detection notification reception unit 51 of the distributed processing control unit 5 receives a failure detection notification from the aggregate data transmission unit 13b of the distributed processing node 3a [n].
  • a system equivalent to the distributed processing system shown in the first embodiment is constructed. In FIG. 17, no failure has occurred and normal processing is continuously performed.
  • the total data of at least one of the distributed processing node 3a [f] or the distributed processing node 3a [f + 1] The transmission unit 13b notifies the distributed processing control unit 5 of failure detection.
  • failure is not only a failure that cannot be completely transferred, but also a case in which normal system operation becomes difficult due to frequent processing such as retransmission due to a high error rate for the data being transferred (error rate). Can be included).
  • signal disconnection or error rate deterioration is detected between any ring nodes connected via a communication path, and It can also be handled as a failure between distributed processing nodes that communicate via a communication path. That is, when the ring node 3 functions as the relay node 3b, the total data transmission unit 13b of the relay node 3b transmits to the adjacent ring node 3 existing in the direction in which the intermediate total data R * or the total data R is to be transferred. When the intermediate total data R * or the total data R cannot be transferred (or when the error rate exceeds the threshold value), the distributed processing control unit 5 can be notified of failure detection.
  • Distributed processing node 3a [n ′] (n ′ 1,..., Not using the communication path 4 and the relay node 3b between the distributed processing node 3a [f] and the distributed processing node 3a [f + 1]. , N-1), that is, a distributed processing system equivalent to that before detecting a failure.
  • This is a system equivalent to the distributed processing system shown in the first embodiment, similar to the system before detecting a failure.
  • the number of nodes K of the ring node 3 needs to be equal to or greater than the sum of the number of distributed processing nodes belonging to each group that can exist simultaneously in the ring system.
  • K ⁇ Na + Nb is a necessary requirement (Na, Nb is an integer of 2 or more, and the sum of Na and Nb is K or less.
  • the distributed processing nodes 3a belonging to each group include one or more communication paths 4, one or more relay nodes 3b, and one or more distributed processing nodes 3a of other groups. It is necessary to be specified so as to be connected to the distributed processing nodes 3a of the previous and subsequent numbers belonging to the same group via at least one of them.
  • 3aA [ ⁇ ] ( ⁇ 1,..., Na)
  • the relay node 3b, the distributed processing control unit 5, and the control network 6 are not shown.
  • FIG. 19A shows a configuration in which there is no section where a route between distributed processing nodes belonging to the same group overlaps with a route between distributed processing nodes belonging to another group.
  • FIG. 19B shows a configuration in which there is a section in which a route between distributed processing nodes belonging to the same group and a route between distributed processing nodes belonging to another group overlap.
  • each ring node 3 functioning as a distributed processing node performs the processing described later, so that each of the two groups in each configuration can operate as an independent distributed processing system of the first embodiment. it can.
  • the same processing as that described in the second embodiment may be performed, and the intermediate node received from the adjacent ring node 3 connected via the communication path 4
  • the total data R * or the total data R may be transferred to the adjacent ring node 3 existing in the direction in which these data are to be transferred. This transfer process does not depend on the group of distributed processing nodes that transmit / receive the intermediate total data R * or the total data R.
  • FIG. 20 is a block diagram showing a configuration example of the distributed processing node 3aA [ ⁇ ] belonging to the group A, and the same components as those in FIGS. 2 and 10 are denoted by the same reference numerals.
  • Each distributed processing node 3aA [ ⁇ ] includes a sample input unit 10, a gradient calculation processing unit 11, an intra-node total processing unit 12, a total data transmission unit 13c, a reception unit 14a, a total data generation unit 15, A weight update processing unit 16, a neural network 17, and a function setting unit 18a are provided.
  • the function setting unit 18a of the present embodiment receives the addresses of all the distributed processing nodes 3a including the addresses of the distributed processing nodes 3a of the numbers before and after the own distributed processing node from the distributed processing control unit 5, and also the own distributed processing node Are received from the distributed processing control unit 5.
  • the configuration of the distributed processing node 3aB [ ⁇ ] belonging to the group B is the same as that of the distributed processing node 3aA [ ⁇ ].
  • FIG. 21 is a block diagram illustrating a configuration example of the distributed processing control unit 5 of the present embodiment.
  • the distributed processing control unit 5 includes a function specifying unit 50a, a failure detection notification receiving unit 51, and a function specifying changing unit 52a.
  • the addresses of all the distributed processing nodes 3aA [ ⁇ ] and 3aB [ ⁇ ] are notified to the respective distributed processing nodes 3aA [ ⁇ ] and 3aB [ ⁇ ], and a group identifier is assigned. To be notified.
  • each distributed processing node 3aA after the change is changed. Notify the addresses of all the distributed processing nodes 3aA [ ⁇ ], 3aB [ ⁇ ] after the change to [ ⁇ ], 3aB [ ⁇ ], and notify the group identifiers after the change.
  • the intra-node aggregation processing unit 12 of the ring node 3 [h] functioning as the first distributed processing node 3aA [1] or 3aB [1] belonging to the group A or B is the same as in the first to third embodiments.
  • Distributed data D [m, f] is generated.
  • the ring node 3 [u] functioning as the relay node 3b is the same as the ring node 3 [t].
  • Preliminary results data was generated and transmitted R * [m, i- 1] is received.
  • the total data generation unit 15 of the intermediate distributed processing node 3aA [i] or 3aB [i] receives the received intermediate total data R * [m, i-1] and the distributed data D [m, i generated by the own node. ] Is calculated for each corresponding weight w [m] to generate intermediate total data R * [m, i].
  • the intra-node aggregation processing unit 12 of the ring node 3 [e] functioning as the final distributed processing node 3aA [N] or 3aB [N] belonging to the group A or B is distributed in the same manner as in the first to third embodiments.
  • Intermediate summary data R * [m, N ⁇ generated and transmitted by the distributed processing node 3aA [N ⁇ 1] or 3aB [N ⁇ 1] belonging to the same group from the e ⁇ ] via the communication channel 4 [e ⁇ ]. 1] is received.
  • the total data generation unit 15 of the final distributed processing node 3aA [N] or 3aB [N] receives the received intermediate total data R * [m, N-1] and the distributed data D [m, N generated by the own node. ] Is calculated for each corresponding weight w [m] to generate total data R [m].
  • the aggregate data transmission section 13c of the final distributed processing nodes 3aa [N] or 3Ab [N] is the aggregate data R [m] generated by the own node, before the number e - ring nodes 3 [e - ]. That is, the total data transmission unit 13c transmits the total data R [m] toward the previous distributed processing node 3aA [N-1] or 3aB [N-1] belonging to the same group.
  • the operation of the weight update processing unit 16 of the final distributed processing node 3aA [N] or 3aB [N] is the same as that of the first embodiment.
  • the total data R [m] transmitted by i + 1] or 3aB [i + 1] is received.
  • the operation of the weight update processing unit 16 of the intermediate distributed processing node 3aA [i] or 3aB [i] is the same as that of the first embodiment.
  • the operation of the weight update processing unit 16 of the first distributed processing node 3aA [1] or 3aB [1] is the same as that of the first embodiment.
  • the above processing is processing when the distributed processing node 3aA [ ⁇ ] or 3aB [ ⁇ ] belonging to the group A or B receives the data generated by the distributed processing node belonging to the same group. This is the same as the processing of the distributed processing node described above.
  • the distributed processing node that has received the intermediate total data R * and the total data R generated by the distributed processing nodes belonging to other groups functions as a relay node 3b for the intermediate total data R * and the total data R.
  • the distributed processing node 3aA [ ⁇ ] or 3aB [ ⁇ ] receives the data generated / transmitted by the distributed processing node that does not belong to its own group from the adjacent ring node 3, the distributed processing node 3aA [ ⁇ ] or 3aB [ ⁇ ] Send to adjacent ring node 3.
  • M) is divided into P aggregated communication packets L in order of the number m of weight w [m], and P aggregated communication packets are transmitted in order until all aggregated communication packets have been transmitted.
  • the ring node 3 functioning as the distributed processing node 3aA [ ⁇ ] or 3aB [ ⁇ ] transmits and receives data in packet form.
  • the transmission unit 13c assigns to the aggregated communication packet and the distributed communication packet a group identifier indicating which group the node belongs to (which group the packet belongs to). As described above, the group identifier is notified from the distributed processing control unit 5.
  • the aggregate data transmission unit 13c of the ring node 3 functioning as the distributed processing node 3aA [ ⁇ ] or 3aB [ ⁇ ] is based on the group identifier given to the aggregate communication packet or the distributed communication packet received by the reception unit 14a. It is determined whether the packet is a packet generated and transmitted by the distributed processing node belonging to the same group (a packet belonging to the own group).
  • the aggregate data transmission unit 13c of the ring node 3 functioning as the distributed processing node 3aA [ ⁇ ] or 3aB [ ⁇ ] acquires the aggregated communication packet or the distributed communication packet received from these packets if the received aggregated communication packet or distributed communication packet is a packet of its own group.
  • Data intermediate aggregated data R * or aggregated data R
  • the aggregate data transmission unit 13c should transfer data (intermediate aggregate data R * or aggregate data R) acquired from these packets. It is sent to the adjacent ring node 3 existing in the direction.
  • the above group identifier may be arranged at a predetermined position in the aggregated communication packet or the distributed communication packet. If the packet conforms to the Ethernet (registered trademark) frame format, a VLAN tag (VLAN-ID) is assigned to a destination MAC (Media Access Control) address or a part of the destination MAC address, and the VLAN tag is attached. Implementation such as group identifier is possible.
  • a physical ring system composed of K ring nodes (K is an integer of 3 or more) can be configured as a system that simultaneously performs a plurality of deep learning.
  • the number of distributed processing nodes appropriate for the scale of learning (number of sample data and calculation amount) in each deep learning under the condition that the total number of distributed processing nodes is equal to or less than the number of ring nodes. Can be determined. Therefore, a ring node that could not be used in one deep learning can be assigned to another deep learning, so that an efficient system operation (with a high operating rate of the ring node) is possible.
  • Each of the distributed processing node 1, ring node 3 (distributed processing node 3a, relay node 3b), and distributed processing control unit 5 described in the first to fourth embodiments includes a CPU (Central Processing Unit), a storage device, and an interface. And a program for controlling these hardware resources.
  • Each of the CPUs of the distributed processing node 1, the ring node 3, and the distributed processing control unit 5 executes the processes described in the first to fourth embodiments in accordance with the programs stored in the respective storage devices.
  • the present invention can be applied to a technique for performing machine learning of a neural network.

Landscapes

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

Abstract

深層学習に適用した場合に効果的な分散処理を行う。 1番目の分散処理ノード1は、自ノードで生成された分散データを中間集計データとして、この中間集計データを予め指定された次の番号の分散処理ノード1に送信する。1番目と最終とを除く中間の分散処理ノード1は、受信した中間集計データと自ノードで生成された分散データとの和を、対応する重み毎に求めて更新後の中間集計データを生成し、この中間集計データを予め指定された次の番号の分散処理ノード1に送信する。最終の分散処理ノード1は、受信した中間集計データと自ノードで生成された分散データとの和を、対応する重み毎に求めて集計データを生成し、この集計データを1番目および中間の分散処理ノード1に送信する。各分散処理ノード1は、集計データに基づいてニューラルネットワークの重みを更新する。

Description

分散処理システムおよび分散処理方法
 本発明は、複数の分散処理ノードを備える分散処理システムに係り、特に、各分散処理ノードから数値データを集計して集計データを生成し、各分散処理ノードに集計データを分配する分散処理システムおよび分散処理方法に関するものである。
 深層学習では、多層のニューロンモデルからなる学習対象について、各ニューロンモデルの重み(前段のニューロンモデルが出力した値に乗じる係数)を、入力したサンプルデータに基づいて更新することにより、推論精度を改善する。
 通常、推論精度を改善する手法には、ミニバッチ法が用いられている。ミニバッチ法では、サンプルデータ毎に前記重みに対する勾配を計算する勾配計算処理と、複数の異なるサンプルデータについて前記勾配を集計する(サンプルデータ毎に得られた勾配を重み別に合算する)集計処理と、各重みを前記集計された勾配に基づいて更新する重み更新処理と、を繰り返す。
 これらの処理、特に勾配計算処理は、多数回の演算を必要とするが、推論精度を向上させるために、重みの個数や入力するサンプルデータの個数が増加すると、深層学習に要する時間が増大するという、課題がある。
 勾配計算処理を高速化するため、分散処理の手法が用いられている。具体的には、複数の分散処理ノードを設け、各ノードは、各々異なるサンプルデータについて勾配計算処理を行う。これにより、ノード数に比例して単位時間に処理できるサンプルデータ数を増加させることが可能となるため、勾配計算処理を高速化できる(非特許文献1参照)。
 深層学習の分散処理において、集計処理を行うためには、各分散処理ノードがサンプルデータ毎に重みに対する勾配を計算する勾配計算処理およびサンプルデータ毎に得られた勾配を重み別に合算するノード内集計処理と、各重みを前記集計された勾配に基づいて更新する重み更新処理との間に、分散処理ノード毎に得られたデータ(分散データ)の集計処理を行うノードに転送するための通信(集約通信)と、集約通信により取得したデータに基づいて集計する処理(ノード間集計処理)と、各分散処理ノードから取得した集計したデータ(集計データ)を各分散処理ノードに分配するための通信(分配通信)と、が必要となる。
 図22は、従来の深層学習用分散処理システムの構成例を示すブロック図である。図23に、従来技術による、深層学習の分散処理のシーケンスを示す。分散処理ノード100[n](n=1,・・・,N)は、Iの期間においてサンプルデータ入力と勾配計算処理とノード内集計処理とを行い、分散データを集計処理ノード101に送信する。IIの期間では、このような各ノードからの送信が行われるが、各ノードが同時に分散データを送信するとは限らない。
 IIIの期間では、集計処理ノード101が各ノードから得られた勾配を重み別に合算する全ノード集計処理を行い、IVの期間において集計データを各分散処理ノード100[n]に送信する。Vの期間では、各分散処理ノード100[n]が重み更新処理を行う。
 こうして、分散処理が行われることにより、深層学習には、集約通信(II)と全ノード集計処理(III)と分配通信(IV)の各処理時間が加わる。
 このような処理時間は、深層学習を単一ノードで実施するシステムでは不要であり、深層学習の分散処理を行う上で、処理速度を低下させる要因となっている。
 近年、深層学習がより複雑な問題に適用されるようになってきており、重みの総数が増加する傾向にある。このため、分散データや集計データのデータ量が増大し、集約通信時間と分配通信時間が増大している。
 このように、深層学習の分散システムは、集約通信時間と分配通信時間の増大によって、分散処理ノード数を増加させることにより、深層学習の高速化の効果が低下するという問題があった。図24は、従来の分散処理システムにおける分散処理ノード数と深層学習の処理性能との関係を示しており、200は分散処理ノード数と処理性能の理想的な関係(性能∝ノード数)を示し、201は分散処理ノード数と処理性能の実際の関係を示している。分散処理ノード数に比例してノード間集計処理の入力である分散データの総量は増大するが、実際の処理性能が分散処理ノード数に比例して向上しない理由は、集計処理ノードの通信速度が、このノードの通信ポートの物理速度以下に制限されるため、集約通信に要する時間が増大するためである。
秋葉 拓哉,"分散深層学習パッケージ ChainerMN 公開",プリファードインフラストラクチャー(Preferred Infrastructure),2017年,インターネット<https://research.preferred.jp/2017/05/chainermn-beta-release/>
 本発明は、上記のような事情を考慮してなされたものであり、その目的は、複数の分散処理ノードを備える分散処理システムおいて、深層学習に適用した場合に効果的な分散処理を行うことができる分散処理システムおよび分散処理方法を提供することにある。
 本発明の分散処理システム(第1の実施例)は、ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードを備え、各分散処理ノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、N個の分散処理ノードのうち、予め定められた最終の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信し、各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とするものである。
 また、本発明の分散処理システムの1構成例(第1の実施例)において、各分散処理ノードは、自ノードが前記1番目の分散処理ノードである場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する集計データ送信部と、自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを生成する集計データ生成部と、自ノードが前記1番目または前記中間の分散処理ノードである場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードである場合に、前記第1の集計データを受信する受信部と、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とするものである。
 また、本発明の分散処理システム(第2の実施例)は、リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードと、前記K個のリングノードの各々を、分散処理ノードあるいは中継ノードの何れかに指定する分散処理制御部とを備え、K個のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、K個のリングノードのうち、前記中継ノードとして機能する各リングノードは、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信し、各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とするものである。
 また、本発明の分散処理システムの1構成例(第2の実施例)において、各リングノードは、自ノードが前記1番目の分散処理ノードとして機能する場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、自ノードが前記中継ノードとして機能する場合に、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する集計データ送信部と、自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを生成する集計データ生成部と、自ノードが前記1番目または前記中間の分散処理ノードとして機能する場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第1の集計データを受信する受信部と、自ノードが前記分散処理ノードとして機能する場合に、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とするものである。
 また、本発明の分散処理システムの1構成例(第3の実施例)において、前記分散処理制御部は、前記K個のリングノードの各々を、前記分散処理ノードあるいは前記中継ノードの何れかに指定する機能指定部と、前記第1の集計データまたは前記第2の集計データを転送先の分散処理ノードに送信できない障害が発生したときに、この障害を回避するように各リングノードの機能指定を変更する機能指定変更部とを備えることを特徴とするものである。
 また、本発明の分散処理システムの1構成例(第4の実施例)において、前記分散処理制御部は、前記分散処理ノードとして指定するリングノードの各々を、複数の異なるグループのうちいずれか1つのグループに属するように指定し、N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、予め定められた最終の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、各分散処理ノードは、同じグループの分散処理ノードで生成・送信された前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とするものである。
 また、本発明の分散処理方法(第1の実施例)は、ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードの各々が、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第2のステップと、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第3のステップと、N個の分散処理ノードのうち、予め定められた最終の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する第4のステップと、各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第5のステップとを含むことを特徴とするものである。
 また、本発明の分散処理方法(第2の実施例)は、リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードが、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第2のステップと、N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第3のステップと、N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第4のステップと、N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードが、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第5のステップと、K個のリングノードのうち、中継ノードとして機能する各リングノードが、前記第1の集計データまたは前記第2の集計データを受信したときに、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する第6のステップと、各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第7のステップとを含むことを特徴とするものである。
 本発明によれば、集約通信処理とノード間集計処理と分配通信処理とを、並行してほぼ同時に行うことが可能であり、効果的な分散処理を行うことができ、ニューラルネットワークの学習効率を向上させることができる。また、本発明では、集計処理ノードを設けることなく深層学習の分散処理を行うことができ、集計処理ノードの通信速度によって分散処理の速度が制限されることがなくなる。
図1は、本発明の第1の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。 図2は、本発明の第1の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図3は、本発明の第1の実施例に係る分散処理ノードのサンプルデータ入力処理と勾配計算処理とノード内集計処理を説明するフローチャートである。 図4は、本発明の第1の実施例に係る分散処理ノードの集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。 図5は、本発明の第1の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図6は、本発明の第1の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図7は、本発明の第2の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。 図8は、本発明の第2の実施例においてリングノードが分散処理ノードあるいは中継ノードの何れかに指定された状態の例を示す図である。 図9は、本発明の第2の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。 図10は、本発明の第2の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図11は、本発明の第2の実施例に係る深層学習用分散処理システムの動作を説明する図である。 図12は、本発明の第2の実施例に係る分散処理ノードの集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。 図13は、本発明の第2の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図14は、本発明の第2の実施例に係る各分散処理ノードの処理のシーケンスを示す図である。 図15は、本発明の第3の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図16は、本発明の第3の実施例に係る深層学習用分散処理システムの分散処理制御部の構成例を示すブロック図である。 図17は、本発明の第3の実施例において各リングノードが、分散処理ノードあるいは中継ノードの何れかに指定された状態を示す図である。 図18は、本発明の第3の実施例において各リングノードが、分散処理ノードあるいは中継ノードの何れかに指定された状態を示す図である。 図19は、本発明の第4の実施例において各リングノードが、分散処理ノードあるいは中継ノードの何れかに指定された状態を示す図である。 図20は、本発明の第4の実施例に係る深層学習用分散処理システムの分散処理ノードの構成例を示すブロック図である。 図21は、本発明の第4の実施例に係る深層学習用分散処理システムの分散処理制御部の構成例を示すブロック図である。 図22は、従来の深層学習用分散処理システムの構成例を示すブロック図である。 図23は、従来の深層学習の分散処理のシーケンスを示す図である。 図24は、従来の分散処理システムにおける分散処理ノード数と深層学習の処理性能との関係を示す図である。
[第1の実施例]
 以下、本発明の実施例について図面を参照して説明する。図1は本発明の第1の実施例に係る深層学習用分散処理システムの構成例を示すブロック図である。図1の分散処理システムは、ニューラルネットワークのサンプルデータ(学習データ)の集合毎に設けられたN個(Nは2以上の整数)の分散処理ノード1[n](n=1,・・・,N)と、各分散処理ノード1[j](j=1,・・・,N-1)から分散処理ノード1[j+1]に対して、中間集計データR*[m,j]を転送し、分散処理ノード1[N]から各分散処理ノード1[j](j=1,・・・,N-1)に対して集計データR[m]を分配するための、分散処理用ネットワーク2とを備える。分散処理用ネットワーク2は、双方向の通信が可能なネットワークである。なお、本発明において、「ノード」とは、ネットワーク上に分散配置されているサーバ等の機器を意味する。
 図2は分散処理ノード1[n]の構成例を示すブロック図である。各分散処理ノード1[n]は、それぞれ図示しないデータ収集ノードから学習用のサンプルデータを受け取るサンプル入力部10と、サンプルデータが入力されたときに、ニューラルネットワークの重みの各々について、ニューラルネットワークの損失関数の勾配をサンプルデータ毎に計算する勾配計算処理部11と、サンプルデータ毎の勾配を集計した数値である分散データを重み毎に生成して保持するノード内集計処理部12と、中間集計データおよび集計データを送信する集計データ送信部13と、中間集計データおよび集計データを受信する受信部14と、自ノードが中間の分散処理ノードである場合に中間集計データを生成し、自ノードが最終の分散処理ノードである場合に集計データを生成する集計データ生成部15と、集計データに基づいてニューラルネットワークの重みを更新する重み更新処理部16と、ソフトウェア的に構築された数学モデルであるニューラルネットワーク17とを備えている。
 図3は分散処理ノード1[n]のサンプルデータ入力処理と勾配計算処理とノード内集計処理を説明するフローチャートである。各分散処理ノード1[n](n=1,・・・,N)のサンプル入力部10は、図示しないデータ収集ノードから異なるS個(Sは2以上の整数)のサンプルデータx[n,s](s=1,・・・,S)をミニバッチ毎に入力する(図3ステップS100)。
 なお、本発明は、データ収集ノードによるサンプルデータの収集方法、および収集したサンプルデータをN個の集合に振り分けて各分散処理ノード1[n]へ分配する方法に限定されるものではなく、これらの方法の如何を問わず適用が可能である。
 各分散処理ノード1[n](n=1,・・・,N)の勾配計算処理部11は、サンプルデータx[n,s]が入力されたとき、学習対象のニューラルネットワーク17のM個(Mは2以上の整数)の重みw[m](m=1,・・・,M)の各々について、ニューラルネットワーク17の損失関数の勾配G[m,n,s]をサンプルデータx[n,s]毎に計算する(図3ステップS101)。
 ニューラルネットワーク17を各分散処理ノード1[n]にソフトウェアで構築する方法、ニューラルネットワーク17の重みw[m]、ニューラルネットワーク17の性能の悪さを示す指標である損失関数、および損失関数の勾配G[m,n,s]については周知の技術であるので、詳細な説明は省略する。
 続いて、各分散処理ノード1[n](n=1,・・・,N)のノード内集計処理部12は、サンプルデータ毎の勾配G[m,n,s]を集計した数値である分散データD[m,n]を、重みw[m]毎に生成して保持する(図3ステップS102)。分散データD[m,n]の計算式は以下のとおりである。
Figure JPOXMLDOC01-appb-M000001
 なお、勾配計算処理部11による勾配計算処理とノード内集計処理部12によるノード内集計処理とは、サンプルデータ単位でパイプライン化する(あるサンプルデータに対して勾配計算処理を行うと同時にその一つ前のサンプルデータから得た勾配を集計するノード内集計処理とを同時に実行する)ことができる。
 さらに、各分散処理ノード1[n](n=1,・・・,N)は、分散データD[m,n]を生成した後、分散処理ノード間の集約通信を行い、集計データを生成するためのノード間集計処理を行う。
 図4は分散処理ノード1[n]の集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。
 まず、複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた1番目の分散処理ノード1[1]の集計データ送信部13は、自ノードで生成されたM個の分散データD[m,1](m=1,・・・,M)を、中間集計データR*[m,1]として、予め定められた次の番の分散処理ノード1[2]に分散処理用ネットワーク2を介して送信する(図4ステップS103,S104)。すなわち、このときの中間集計データR*[m,1]は、分散データD[m,1]と同じである。
 R*[m,1]=D[m,1]           ・・・(2)
 次に、複数の分散処理ノード1[n](n=1,・・・,N)のうち、1番目と最終とを除く、予め定められた中間の分散処理ノード1[i](i=2,・・・,N-1)の受信部14は、分散処理ノード1[i-1]から中間集計データR*[m,i-1]を分散処理用ネットワーク2を介して受信する(図4ステップS105,S106)。
 中間の分散処理ノード1[i]の集計データ生成部15は、受信した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより、中間集計データR*[m,i]を生成する(図4ステップS107)。すなわち、中間集計データR*[m,i]は、M個の数値から構成される。中間集計データR*[m,i]の計算式は以下のとおりである。
 R*[m,i]=R*[m,i-1]+D[m,i]  ・・・(3)
 そして、中間の分散処理ノード1[i]の集計データ送信部13は、自ノードで生成された中間集計データR*[m,i]を、予め定められた次の番の分散処理ノード1[i+1]に分散処理用ネットワーク2を介して送信する(図4ステップS108)。
 複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた最終の分散処理ノード1[N]の受信部14は、分散処理ノード1[N-1]から中間集計データR*[m,N-1]を分散処理用ネットワーク2を介して受信する(図4ステップS109,S110)。
 最終の分散処理ノード1[N]の集計データ生成部15は、受信した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより、集計データR[m]を生成する(図4ステップS111)。すなわち、集計データR[m]は、M個の数値から構成される。集計データR[m]の計算式は以下のとおりである。
 R[m]=R*[m,N-1]+D[m,N]      ・・・(4)
 このように、式(2)、式(3)、式(4)により計算された、M個の数値から構成される集計データR[m](m=1,・・・,M)は、各分散処理ノード1[n](n=1,・・・,N)で生成されたM個の数値から構成される分散データD[m,n]に基づいて計算され、その値は以下の式により表すことができる。
Figure JPOXMLDOC01-appb-M000002
 そして、最終の分散処理ノード1[N]の集計データ送信部13は、自ノードで生成された集計データR[m]を、1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)に分散処理用ネットワーク2を介して分配する分配通信を行う(図4ステップS112)。
 最終の分散処理ノード1[N]の重み更新処理部16は、自ノードで生成された集計データR[m]に基づいて、自ノード内のニューラルネットワーク17の重みw[m]を更新する重み更新処理を行う(図4ステップS113)。重み更新処理においては、集計データR[m]が示す、損失関数の勾配に基づいて損失関数が最小になるように重みw[m]を番号m毎に更新すればよい。重みw[m]の更新は周知の技術であるので、詳細な説明は省略する。
 このように、重み更新処理は、重みw[m]の番号mの順番に取得した集計データR[m]に基づいて、重みw[m]を更新する処理である。このため、分散処理ノード1[N]は、重みw[m]に対する重み更新処理を、番号mの順番に行うことができる。
 一方、1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)の受信部14は、分散処理ノード1[N]から集計データR[m]を分散処理用ネットワーク2を介して受信する(図4ステップS114,S115)。前記の分配通信により、1番目および中間の分散処理ノード1[j]は、同一の集計データR[m]を取得することができる。
 1番目および中間の分散処理ノード1[j]の重み更新処理部16は、受信した集計データR[m]に基づいて、自ノード内のニューラルネットワーク17の重みw[m]を更新する重み更新処理を行う(図4ステップS116)。この重み更新処理は、最終の分散処理ノード1[N]における重み更新処理と同様である。
 重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード1[n](n=1,・・・,N)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード1[n]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
 上記の説明では、M個の分散データD[m,n]を1度に処理する動作で説明しているが、実際にはM個の分散データD[m,n]を複数のパケットに振り分けてパイプライン処理を行う。
 各分散処理ノード1[n](n=1,・・・,N)の処理における手順(重みw[m]の番号mの順番にパイプライン処理を行う動作)を、以下に説明する。
 複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた1番目の分散処理ノード1[1]の集計データ送信部13は、自ノードで生成されたM個の分散データD[m,1](m=1,・・・,M)を、中間集計データR*[m,1]として、予め定められた次の番の分散処理ノード1[2]に分散処理用ネットワーク2を介して送信する集約通信を行う(図4ステップS103,S104)。
 このとき、分散処理ノード1[1]の集計データ送信部13は、保持するM個の中間集計データR*[m,1](=D[m,1])を、重みw[m]の番号mの順番にL(Lは1以上M未満の整数)個ずつP個(Pは2以上の整数)の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番の分散処理ノード1[2]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,1]には、L個の中間集計データR*[r,1](r=L×(p-1)+l、l=1,・・・,L)が格納される。
 なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,1]には、(M-L×(P-1))個の中間集計データR*[r,1](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
 P番目の集約通信パケットSP[P,1]については、(M-L×(P-1))個の中間集計データR*[r,1]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
 次に、複数の分散処理ノード1[n](n=1,・・・,N)のうち、1番目と最終とを除く中間の分散処理ノード1[i](i=2,・・・,N-1)の受信部14は、分散処理ノード1[i-1]から集約通信パケットSP[p,i-1](p=1,・・・,P)を受信する(図4ステップS105,S106)。
 中間の分散処理ノード1[i]の受信部14は、受信した集約通信パケットSP[p,i-1]から、送信元の分散処理ノード1[i-1]が生成したL個の中間集計データR*[r,i-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード1[i-1]からP個の集約通信パケットSP[p,i-1](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード1[i]の受信部14は、最終的にM個の中間集計データR*[m,i-1]を取得することができる。
 そして、中間の分散処理ノード1[i]の集計データ生成部15は、取得した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより(式(3))、中間集計データR*[m,i]を生成する(図4ステップS107)。
 次に、中間の分散処理ノード1[i]の集計データ送信部13は、自ノードで生成されたM個の中間集計データR*[m,i](m=1,・・・,M)を、予め定められた次の番の分散処理ノード1[i+1]に分散処理用ネットワーク2を介して送信する集約通信を行う(図4ステップS108)。
 このとき、分散処理ノード1[i]の集計データ送信部13は、生成されたM個の中間集計データR*[m,i]を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番の分散処理ノード1[i+1]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,i]には、L個の中間集計データR*[r,i](r=L×(p-1)+l、l=1,・・・,L)が格納される。
 なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,i]には、(M-L×(P-1))個の中間集計データR*[r,i](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
 P番目の集約通信パケットSP[P,i]については、(M-L×(P-1))個の中間集計データR*[r,i]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
 複数の分散処理ノード1[n](n=1,・・・,N)のうち、予め定められた最終の分散処理ノード1[N]の受信部14は、分散処理ノード1[N-1]から集約通信パケットSP[p,N-1](p=1,・・・,P)を受信する(図4ステップS109,S110)。
 最終の分散処理ノード1[N]の受信部14は、受信した集約通信パケットSP[p,N-1]から、送信元の分散処理ノード1[N-1]が生成したL個の中間集計データR*[r,N-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード1[N-1]からP個の集約通信パケットSP[p,N-1](p=1,・・・,P)が順番に送信されることにより、最終の分散処理ノード1[N]の受信部14は、最終的にM個の中間集計データR*[m,N-1]を取得することができる。
 そして、最終の分散処理ノード1[N]の集計データ生成部15は、取得した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより(式(4))、集計データR[m]を生成する(図4ステップS111)。
 次に、最終の分散処理ノード1[N]の集計データ送信部13は、自ノードで生成された集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にパケット化して、このパケットを、1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)に分配する分配通信を行う(図4ステップS112)。
 このとき、分散処理ノード1[N]の集計データ送信部13は、生成されたM個の集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に次の番の分散処理ノード1[j]に送信する。すなわち、p番目(p=1,・・・,P)に送信する分配通信パケットDP[p]には、L個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)が格納される。
 なお、MがLで割り切れない条件では、P番目の分配通信パケットDP[p]には、(M-L×(P-1))個の集計データR[r](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
 P番目の分配通信パケットDP[p]については、(M-L×(P-1))個の集計データR[r]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての分配通信パケットが等しくL個のデータを格納するようにしてもよい。
 1番目および中間の分散処理ノード1[j](j=1,・・・,N-1)の受信部14は、分散処理ノード1[N]から分配通信パケットDP[p](p=1,・・・,P)を受信する(図4ステップS114,S115)。
 1番目および中間の分散処理ノード1[j]の受信部14は、受信した分配通信パケットDP[p]から、送信元の分散処理ノード1[N]が生成したL個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード1[N]からP個の分配通信パケットDP[p](p=1,・・・,P)が順番に送信されることにより、1番目および中間の分散処理ノード1[j]の受信部14は、最終的にM個の集計データR[m]を取得することができる。
 各分散処理ノード1[n]における重み更新処理は、上記で説明したとおりである。
 このように、分散処理ノード1[j](j=1,・・・,N-1)から分散処理ノード1[j+1]への集約通信(中間集計データR*[m,j]を分散処理ノード1[j+1]に送信する処理)、中間の分散処理ノード1[i](i=2,・・・,N-1)が行うノード間集計処理(受信した中間集計データR*[m,i-1]と自ノードで生成した分散データD[m,i]に基づいて、中間集計データR*[m,i]を計算する処理)、分散処理ノード1[N]が行うノード間集計処理(受信した中間集計データR*[m,N-1]と自ノードで生成した分散データD[m,N]に基づいて、集計データR[m]を計算する処理)、分散処理ノード1[N]から各分散処理ノード1[j](j=1,・・・,N-1)への分配通信(集計データR[m]を各分散処理ノード1[j]に分配する処理)、の全ては、前記の重みw[m]の番号mの順番に行われており、番号mを単位としたパイプライン化が可能である。
 図5、図6に、上記の各分散処理ノード1[n](n=1,・・・,N)の処理のシーケンスを示す。なお、図6は、図5の60の部分の処理を示している。また、61は分散処理ノード1[N]におけるノード間集計処理を示している。同様に、図6の70,71,72は分散処理ノード1[α-1],1[α]、1[α+1](α=3,・・・,N-2)におけるノード間集計処理を示している。
 本実施例では、図5、図6に示すように、集約通信処理とノード間集計処理と分配通信処理とを、並行してほぼ同時に(パイプライン処理で)行うことが可能であり、各通信や各処理が終了するまで、次の処理を開始できなかった従来技術と比較したとき、処理時間の大幅な短縮が可能となる。
 したがって、例えば、集約通信処理とノード間集計処理と分配通信処理のそれぞれで時間Tを要する場合、従来技術では、全データを単位として各処理を順番に行っていたため、これらの全ての処理を終えるのに3Tの時間を要したが、本実施例ではT+αの時間で済む。ここで、前記αは、任意の分散処理ノード1[n]が任意の番号mに対応する分散データD[m,n]を送信した時点から前記番号mに対応する集計データR[m]を受信するまでの遅延時間である。本実施例では、番号mの単位で処理をパイプライン化しているため、時間αはTと比較すると十分に小さい時間である。したがって、本実施例では、従来技術と比較して、集約通信処理とノード間集計処理と分配通信処理とに要する時間を、約1/3に短縮することが可能である。
[第2の実施例]
 次に、本発明の第2の実施例について説明する。本実施例の深層学習用分散処理システムの構成例を図7に示す。図7の分散処理システムは、K個(Kは3以上の整数)のリングノード3[k](k=1,・・・,K)と、番号kのリングノード3[k](k=1,・・・,K)が次の番号k+(k+=k+1、ただしk=Kの場合はk+=1)のリングノード3[k+]と双方向に通信するための通信路4[k](k=1,・・・,K)と、分散処理制御部5と、制御用ネットワーク6とを備える。
 分散処理制御部5は、制御用ネットワーク6を介して各リングノード3[k](k=1,・・・,K)と接続される。分散処理制御部5は、各リングノード3[k](k=1,・・・,K)に対して、制御用ネットワーク6を介して、これら各リングノードの機能を、分散処理ノードあるいは中継ノードの何れかに指定する。ただし、この指定において、分散処理ノードに指定されたリングノードは、1個以上の通信路4と1個以上の中継ノードのうち少なくとも1つを介して、前後の番号の分散処理ノードと接続されるように、指定される必要がある。
 図8(A)、図8(B)、図8(C)に、各リングノード3[k](k=1,・・・,K)が、分散処理ノード3a[n](n=1,・・・,N、本実施例ではNは2以上K以下の整数)あるいは中継ノード3bの何れかに指定された状態の例を示す。
 図8(A)は、K=N=4の場合を示しており、全リングノード3[4]は、分散処理ノード3a[n](n=1,・・・,N)の何れかに指定され、中継ノードに指定されたリングノードはない。分散処理ノード3a[j](j=1,・・・,N-1)と分散処理ノード3a[j+1]に各々指定されたリングノードは、1個の通信路4のみを介して接続される。
 図8(B)は、K>N=4の場合を示しており、中継ノード3bに指定されたリングノード3の個数は(K-N)である(ここではK=7)。ただし、図8(A)と同様に、分散処理ノード3a[j](j=1,・・・,N-1)と分散処理ノード3a[j+1]に各々指定されたリングノードは、1個の通信路4のみを介して接続され、中継ノード3bを介さない。中継ノード3bは、分散処理ノード3a[1]と分散処理ノード3a[N]との間にあるリングノードにのみ指定される。
 図8(C)は、K>N=4の場合を示しており、図8(B)と同じく、中継ノードに指定されたリングノード3の個数は(K-N)である(ここではK=11)。ただし、分散処理ノード3a[z](zは1以上N-1以下の整数)と分散処理ノード3a[z+1]に各々指定されたリングノード3は、1個以上の通信路4および1個以上の中継ノード3bを介して接続されている点が、図8(B)との差異である。
 図9は、各リングノード3を分散処理ノード3a[n]と中継ノード3bの何れかに指定することによって、第1の実施例に示した分散処理システムと等価なシステムを構成した例である。図10は分散処理ノード3a[n]の構成例を示すブロック図であり、図2と同一の構成には同一の符号を付してある。各分散処理ノード3a[n]は、サンプル入力部10と、勾配計算処理部11と、ノード内集計処理部12と、集計データ送信部13aと、受信部14aと、集計データ生成部15と、重み更新処理部16と、ニューラルネットワーク17と、分散処理制御部5からの指定を受けて自ノードを分散処理ノードあるいは中継ノードとして機能設定する機能設定部18とを備えている。なお、機能設定部18は、自分散処理ノードの前後の番号の分散処理ノード3aのアドレスを含む、全ての分散処理ノード3aのアドレスを分散処理制御部5から受け取る。
 図11は、図9の深層学習用分散処理システムの動作を説明する図、図12は各分散処理ノード3a[n]の集約通信処理とノード間集計処理と重み更新処理を説明するフローチャートである。各分散処理ノード3a[n]のサンプルデータ入力処理と勾配計算処理とノード内集計処理は第1の実施例と同様である。
 1番目の分散処理ノード3a[1]として機能するリングノード3[h]のノード内集計処理部12は、第1の実施例と同様に分散データD[m,1](m=1,・・・,M)を生成する。
 そして、分散処理ノード3a[1]の集計データ送信部13aは、自ノードで生成されたM個の分散データD[m,1]を、中間集計データR*[m,1]として、次の番号のリングノード3[h+](h+=h+1、ただしh=Kの場合はh+=1)に通信路4[h]を介して送信する(図12ステップS203,S204)。すなわち、集計データ送信部13aは、次の番号の分散処理ノード3a[2]に向けて中間集計データR*[m,1]を送信する。
 中継ノード3bとして機能するリングノード3[t]は、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]から通信路4[t-]を介して受信した中間集計データR*を、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]に通信路4[t]を介して転送する。中継ノード3bとして機能するリングノード3[u]もリングノード3[t]と同様である。
 1番目と最終とを除く中間の分散処理ノード3a[i](i=2,・・・,N-1)として機能するリングノード3[z]のノード内集計処理部12は、第1の実施例と同様に分散データD[m,i](m=1,・・・,M)を生成する。
 中間の分散処理ノード3a[i]の受信部14aは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]から通信路4[z-]を介して中間集計データR*[m,i-1]を受信する(図12ステップS205,S206)。
 中間の分散処理ノード3a[i]の集計データ生成部15は、受信した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより、中間集計データR*[m,i]を生成する(図12ステップS207)。
 そして、中間の分散処理ノード3a[i]の集計データ送信部13aは、自ノードで生成された中間集計データR*[m,i]を、次の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]に通信路4[z]を介して送信する(図12ステップS208)。すなわち、集計データ送信部13aは、次の番号の分散処理ノード3a[i+1]に向けて中間集計データR*[m,i]を送信する。
 最終の分散処理ノード3a[N]として機能するリングノード3[e]のノード内集計処理部12は、第1の実施例と同様に分散データD[m,N](m=1,・・・,M)を生成する。
 最終の分散処理ノード3a[N]の受信部14aは、前の番号e-(e-=e-1、ただしe=1の場合はe-=K)のリングノード3[e-]から通信路4[e-]を介して中間集計データR*[m,N-1]を受信する(図12ステップS209,S210)。
 最終の分散処理ノード3a[N]の集計データ生成部15は、受信した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより、集計データR[m]を生成する(図12ステップS211)。
 そして、最終の分散処理ノード3a[N]の集計データ送信部13aは、自ノードで生成された集計データR[m]を、前の番号e-のリングノード3[e-]に送信する(図12ステップS212)。すなわち、集計データ送信部13aは、前の番号の分散処理ノード3a[N-1]に向けて集計データR[m]を送信する。最終の分散処理ノード3a[N]の重み更新処理部16の動作(図12ステップS213)は、第1の実施例と同様である。
 中継ノード3bとして機能するリングノード3[t]は、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]から、通信路4[t+]を介して受信した集計データR[m]を、前の番号t-(t-=t-1、ただしt=1の場合はt-==K)のリングノード3[t-]に通信路4[t-]を介して転送する。中継ノード3bとして機能するリングノード3[u]もリングノード3[t]と同様である。
 中間の分散処理ノード3a[i](i=2,・・・,N-1)として機能するリングノード3[z]の受信部14aは、後の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]から通信路4[z+]を介して集計データR[m]を受信する(図12ステップS214,S215)。
 中間の分散処理ノード3a[i]の集計データ送信部13aは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]に通信路4[z-]を介して集計データR[m]を送信する(図12ステップS216)。すなわち、集計データ送信部13aは、前の番号の分散処理ノード3a[i-1]に向けて集計データR[m]を送信する。中間の分散処理ノード3a[i]の重み更新処理部16の動作(図12ステップS217)は、第1の実施例と同様である。
 1番目の分散処理ノード3a[1]として機能するリングノード3[h]の受信部14aは、後の番号h+(h+=h+1、ただしh=Kの場合はh+=1)のリングノード3[h+]から通信路4[h+]を介して集計データR[m]を受信する(図12ステップS218,S219)。1番目の分散処理ノード3a[1]の重み更新処理部16の動作(図12ステップS220)は、第1の実施例と同様である。
 なお、中継ノード3bとして機能するリングノード3[v]は、分散処理ノード3a[1]と分散処理ノード3a[n]との間に位置するため、本実施例では、中間集計データや集計データの転送は行わない。
 重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード3a[n](n=1,・・・,N)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード3a[n]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
 上記の説明では、M個の分散データD[m,n]を1度に処理する動作で説明しているが、実際には第1の実施例と同様にM個の分散データD[m,n]を複数のパケットに振り分けてパイプライン処理を行う。
 各分散処理ノード3a[n](n=1,・・・,N)の処理における手順(重みw[m]の番号mの順番にパイプライン処理を行う動作)を、以下に説明する。
 1番目の分散処理ノード3a[1]の集計データ送信部13aは、自ノードで生成されたM個の分散データD[m,1](m=1,・・・,M)を、中間集計データR*[m,1]として、次の番号のリングノード3[h+]に送信する集約通信を行う(図12ステップS203,S204)。
 このとき、分散処理ノード3a[1]の集計データ送信部13aは、保持するM個の中間集計データR*[m,1](=D[m,1])を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番号のリングノード3[h+]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,1]には、L個の中間集計データR*[r,1](r=L×(p-1)+l、l=1,・・・,L)が格納される。
 なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,1]には、(M-L×(P-1))個の中間集計データR*[r,1](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
 P番目の集約通信パケットSP[P,1]については、(M-L×(P-1))個の中間集計データR*[r,1]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
 1番目と最終とを除く中間の分散処理ノード3a[i](i=2,・・・,N-1)の受信部14aは、分散処理ノード3a[i-1]が送信した集約通信パケットSP[p,i-1](p=1,・・・,P)を受信する(図12ステップS205,S206)。
 中間の分散処理ノード3a[i]の受信部14aは、受信した集約通信パケットSP[p,i-1]から、送信元の分散処理ノード3a[i-1]が生成したL個の中間集計データR*[r,i-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[i-1]からP個の集約通信パケットSP[p,i-1](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード3a[i]の受信部14aは、最終的にM個の中間集計データR*[m,i-1]を取得することができる。
 そして、中間の分散処理ノード3a[i]の集計データ生成部15は、取得した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより(式(3))、中間集計データR*[m,i]を生成する(図12ステップS207)。
 次に、中間の分散処理ノード3a[i]の集計データ送信部13aは、自ノードで生成されたM個の中間集計データR*[m,i](m=1,・・・,M)を、次の番号z+のリングノード3[z+]に送信する集約通信を行う(図12ステップS208)。
 このとき、分散処理ノード3a[i]の集計データ送信部13aは、生成されたM個の中間集計データR*[m,i]を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に次の番の分散処理ノード3a[i+1]に送信する。すなわち、p番目(p=1,・・・,P)に送信する集約通信パケットSP[p,i]には、L個の中間集計データR*[r,i](r=L×(p-1)+l、l=1,・・・,L)が格納される。
 なお、MがLで割り切れない条件では、P番目の集約通信パケットSP[P,i]には、(M-L×(P-1))個の中間集計データR*[r,i](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
 P番目の集約通信パケットSP[P,i]については、(M-L×(P-1))個の中間集計データR*[r,i]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての集約通信パケットが等しくL個のデータを格納するようにしてもよい。
 最終の分散処理ノード3a[N]の受信部14aは、分散処理ノード3a[N-1]が送信した集約通信パケットSP[p,N-1](p=1,・・・,P)を受信する(図12ステップS209,S210)。
 最終の分散処理ノード3a[N]の受信部14aは、受信した集約通信パケットSP[p,N-1]から、送信元の分散処理ノード3a[N-1]が生成したL個の中間集計データR*[r,N-1](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[N-1]からP個の集約通信パケットSP[p,N-1](p=1,・・・,P)が順番に送信されることにより、最終の分散処理ノード3a[N]の受信部14aは、最終的にM個の中間集計データR*[m,N-1]を取得することができる。
 そして、最終の分散処理ノード3a[N]の集計データ生成部15は、取得した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより(式(4))、集計データR[m]を生成する(図12ステップS211)。
 次に、最終の分散処理ノード3a[N]の集計データ送信部13aは、自ノードで生成された集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にパケット化して、このパケットを、前の番号e-のリングノード3[e-]に送信する分配通信を行う(図12ステップS212)。
 このとき、分散処理ノード3a[N]の集計データ送信部13aは、生成されたM個の集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に、前の番号e-のリングノード3[e-]に送信する。すなわち、p番目(p=1,・・・,P)に送信する分配通信パケットDP[p,N]には、L個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)が格納される。
 なお、MがLで割り切れない条件では、P番目の分配通信パケットDP[p,N]には、(M-L×(P-1))個の集計データR[r](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
 P番目の分配通信パケットDP[p,N]については、(M-L×(P-1))個の集計データR[r]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての分配通信パケットが等しくL個のデータを格納するようにしてもよい。
 次に、中間の分散処理ノード3a[i](i=2,・・・,N-1)の受信部14aは、分配通信パケットDP[p,i-1]を受信する(図12ステップS214,S215)。
 中間の分散処理ノード3a[i]の受信部14aは、受信した分配通信パケットDP[p,i-1]から、分散処理ノード3a[i-1]が生成したL個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[i-1]からP個の分配通信パケットDP[p,i-1](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード3a[i]の受信部14aは、最終的にM個の集計データR[m]を取得することができる。
 次に、中間の分散処理ノード3a[i]の集計データ送信部13aは、取得した集計データR[m](m=1,・・・,M)を、前の番号z-のリングノード3[z-]に送信する分配通信を行う(図12ステップS216)。
 このとき、分散処理ノード3a[i]の集計データ送信部13aは、M個の集計データR[m](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に、前の番号z-のリングノード3[z-]に送信する。すなわち、p番目(p=1,・・・,P)に送信する分配通信パケットDP[p,i]には、L個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)が格納される。
 なお、MがLで割り切れない条件では、P番目の分配通信パケットDP[p,i]には、(M-L×(P-1))個の集計データR[r](r=L×(P-1)+q、q=1,・・・,M-L×(P-1))が格納される。
 P番目の分配通信パケットDP[p,i]については、(M-L×(P-1))個の集計データR[r]の後に、{L-(M-L×(P-1))}個のダミーの数値を追加し、全ての分配通信パケットが等しくL個のデータを格納するようにしてもよい。
 1番目の分散処理ノード3a[1]の受信部14aは、後の番号h+のリングノード3[h+]から分配通信パケットDP[p,2]を受信する(図12ステップS218,S219)。
 1番目の分散処理ノード3a[1]の受信部14aは、受信した分配通信パケットDP[p,2]から、分散処理ノード3a[2]が生成したL個の集計データR[r](r=L×(p-1)+l、l=1,・・・,L)を取得する。分散処理ノード3a[2]からP個の分配通信パケットDP[p,2](p=1,・・・,P)が順番に送信されることにより、中間の分散処理ノード3a[i]の受信部14aは、最終的にM個の集計データR[m]を取得することができる。
 図13、図14に、上記の各分散処理ノード3a[n](n=1,・・・,N)の処理のシーケンスを示す。なお、図13の60の部分の処理は、図6と同様なので、記載は省略する。61は分散処理ノード3a[N]におけるノード間集計処理を示している。図14は、図13の62の部分の処理、すなわち分散処理ノード3a[β+1],3a[β]、3a[β-1](β=N-2,・・・,3)の分配通信処理を示している。
 このように、分散処理ノード3a[j](j=1,・・・,N-1)から分散処理ノード3a[j+1]への集約通信(中間集計データR*[m,j]を分散処理ノード1[j+1]に送信する処理)、中間の分散処理ノード3a[i](i=2,・・・,N-1)が行うノード間集計処理(受信した中間集計データR*[m,i-1]と自ノードで生成した分散データD[m,i]に基づいて、中間集計データR*[m,i]を計算する処理)、分散処理ノード3a[N]が行うノード間集計処理(受信した中間集計データR*[m,N-1]と自ノードで生成した分散データD[m,N]に基づいて、集計データR[m]を計算する処理)、分散処理ノード3a[j+1]から分散処理ノード3a[j](j=1,・・・,N-1)への分配通信(分散処理ノード3a[N]が生成した集計データR[m]を各分散処理ノード3a[j]に分配する処理)、の全ては、前記の重みw[m]の番号mの順番に行われており、番号mを単位としたパイプライン化が可能である。
 本実施例では、第1の実施例で示した深層学習用分散処理システムと同様に、集約通信処理とノード間集計処理と分配通信処理とを、並行してほぼ同時に(パイプライン処理で)行うことが可能であり、各通信や各処理が終了するまで、次の処理を開始できなかった従来技術と比較したとき、処理時間の大幅な短縮が可能となる。
 特に、リングノード間を接続する双方向の通信路4のビットレートが同じ(分散処理ノード3a[n]から分散処理ノード3a[n+1]への集約通信のビットレートと分散処理ノード3a[n+1]から分散処理ノード3a[n]への分配通信のビットレートが同一となる)一般的な通信路を用い、同じビットレートでノード間集計処理が可能な場合は、通信路の帯域を最も効率的に使用した処理が可能であり、処理時間の短縮に寄与する。
 また、リングノード数K以下の個数を有する、第1の実施例で示した深層学習用分散処理システムを、本システム上に構築することが可能である。このため、物理的なシステムの構成を変更することなく(リングノード数を増減させることなく)、学習の規模(サンプルデータ数や計算量)に応じて適切なノード数でシステムを稼働させることが可能となる(分散処理ノード3aに割り当てられないリングノードは中継ノード3bとして動作を停止させておくことが可能である)ため、無駄な電力の消費を抑制することが可能となる。
 なお、以上の説明から明らかなとおり、図10の構成は中継ノード3bとしても機能し得る。リングノード3が中継ノード3bとして機能する場合、受信部14aで受信したデータを集計データ送信部13aから送信することになる。
[第3の実施例]
 次に、本発明の第3の実施例について説明する。本実施例では、第2の実施例の深層学習用分散処理システムに関して、分散処理ノード間の通信に障害が発生した場合の前記障害を回避するための分散処理制御部5の動作(各リングノードへの分散処理ノード3a[n](n=1,・・・,N)の再指定)について説明する。
 本実施例の分散処理システムは、第2の実施例における図7、図9の分散処理システムと同様なので、図7、図9の符号を用いて説明する。すなわち、本実施例の分散処理システムは、K個(Kは3以上の整数)のリングノード3[k](k=1,・・・,K)と、番号kのリングノード3[k](k=1,・・・,K)が次の番号k+(k+=k+1、ただしk=Kの場合はk+=1)のリングノード3[k+]と双方向に通信するための通信路4[k](k=1,・・・,K)と、分散処理制御部5と、制御用ネットワーク6とを備える。
 分散処理制御部5は、制御用ネットワーク6を介して各リングノード3[k](k=1,・・・,K)と接続される。分散処理制御部5は、各リングノード3[k](k=1,・・・,K)に対して、制御用ネットワーク6を介して、これら各リングノードの機能を、分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定する。ただし、この指定において、分散処理ノード3a[j](j=1,・・・,N-1)に指定されたリングノード3は、1個以上の通信路4と1個以上の中継ノード3bのうち少なくとも1つを介して、前後の番号の分散処理ノード3a[j+1]と接続されるように、指定される必要がある。
 図15は本実施例の分散処理ノード3a[n]の構成例を示すブロック図である。各分散処理ノード3a[n]は、サンプル入力部10と、勾配計算処理部11と、ノード内集計処理部12と、集計データ送信部13bと、受信部14aと、集計データ生成部15と、重み更新処理部16と、ニューラルネットワーク17と、機能設定部18とを備えている。
 図16は分散処理制御部5の構成例を示すブロック図である。分散処理制御部5は、第1の実施例および本実施例のように各リングノード3[k](k=1,・・・,K)を分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定する機能指定部50と、分散処理ノード3a[n](n=1,・・・,N)からの障害検知通知を受信する障害検知通知受信部51と、障害検知通知を受信したときに、各リングノード3[k](k=1,・・・,K)の機能指定を変更する機能指定変更部52とを備えている。
 図17、図18に、各リングノード3[k](k=1,・・・,K)が、分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定された状態を示す。なお、図17、図18では中継ノード3bおよび制御用ネットワーク6の記載を省略している。また、図17、図18における80は集約通信の流れを示し、81は分配通信の流れを示している。各分散処理ノード3a[n](n=1,・・・,N)や中継ノード3bの機能は、第2の実施例において説明したものと同じである。
 分散処理ノード3a[f](f=1,・・・,N-1)として機能するリングノード3は、第2の実施例と同様に分散データD[m,f]を生成する。f=1の場合、すなわち1番目の分散処理ノード3a[1]の場合は、自ノードで生成された分散データD[m,1]を中間集計データR*[m,1]として、次の番号の分散処理ノード3a[2]に向けて送信する。f>1の場合、すなわち中間の分散処理ノード3a[f]の場合は、自ノードで生成された分散データD[m,f]と分散処理ノード3a[f-1]から受信した中間集計データR*[m,f-1]とから中間集計データR*[m,f]を生成して、次の番号の分散処理ノード3a[f+1]に向けて送信する。
 分散処理ノード3a[f+1](f=2,・・・,N-1)として機能するリングノード3は、分散データD[m,f+1]を生成する。f<N-1の場合、分散処理ノード3a[f+1]は、自ノードで生成された分散データD[m,f+1]と分散処理ノード3a[f]から受信した中間集計データR*[m,f]とから中間集計データR*[m,f+1]を生成して、次の番号の分散処理ノード3a[f+2]に向けて送信する。
 f=N-1の場合、分散処理ノード3a[N]は、自ノードで生成された分散データD[m,N]と分散処理ノード3a[N-1]から受信した中間集計データR*[m,N-1]とから集計データR[m]を生成して、前の番号の分散処理ノード3a[N-1]に向けて送信する。この分配通信により、全ての分散処理ノード3a[n](n=1,・・・,N)は、同一の集計データR[m]を取得することができる。
 その後、集計データR[m]を取得した各分散処理ノード3a[n](n=1,・・・,N)は、集計データR[m]に基づいて、自ノード内のニューラルネットワーク17の重みw[m]を更新する重み更新処理を行う。
 重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード3a[n](n=1,・・・,N)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード3a[n]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
 分散処理ノード3a[n](n=1,・・・,N)の集計データ送信部13bは、隣接する分散処理ノード3a(前の番号または次の番号の分散処理ノード3a)として機能するリングノード3との間で、中間集計データR*あるいは集計データRを転送できない障害を検知するための障害検知機能を有する。また、集計データ送信部13bは、障害を検知したときに、制御用ネットワーク6を介して分散処理制御部5に、障害検知を通知する機能を有する。
 分散処理制御部5の障害検知通知受信部51は、分散処理ノード3a[n]の集計データ送信部13bから障害検知の通知を受信する。分散処理制御部5の機能指定変更部52は、障害検知の通知を受信した場合、各リングノード3[k](k=1,・・・,K)の機能指定の変更(分散処理ノード3a[n]の指定の変更)によって、障害を回避させる。
 各リングノード3[k](k=1,・・・,K)の機能指定の変更後、分散処理システムは、上記の障害によって中断された集約通信処理とノード間集計処理と分配通信処理の再処理を行い、その後の集約通信処理とノード間集計処理と分配通信処理を継続する。
 図17は、分散処理制御部5により、各リングノード3が分散処理ノード3a[n](n=1,・・・,N)あるいは中継ノード3bの何れかに指定された状態を示しており、第1の実施例に示した分散処理システムと等価な系が構築されている。図17では、障害が発生しておらず、正常な処理が継続的に行われる。
 ここで、分散処理ノード3a[f](f=1,・・・,N-1)から分散処理ノード3a[f+1]に中間集計データR*[m,f]を転送できない、または分散処理ノード3a[f+1]から分散処理ノード3a[f]に集計データR[m]を転送できない障害を検知した場合、分散処理ノード3a[f]または分散処理ノード3a[f+1]のうち少なくとも一方の集計データ送信部13bが、分散処理制御部5に障害検知を通知する。
 なお、上記の障害は、完全に転送ができない障害のみならず、転送中のデータに対する誤り率が高いために再送等の処理が頻発し、正常なシステム運用が困難となるような場合(誤り率が閾値を超過するような場合)を含むことができる。
 また、分散処理ノード間でのデータ転送ができない障害を検知するのではなく、通信路を介して接続された任意のリングノード間において信号断や誤り率劣化を検出し、前記のリングノード間の通信路を介して通信する分散処理ノード間での障害として扱うことも可能である。すなわち、リングノード3が中継ノード3bとして機能する場合に、この中継ノード3bの集計データ送信部13bは、中間集計データR*または集計データRを転送すべき方向に存在する隣接するリングノード3に中間集計データR*または集計データRを転送できないとき(または誤り率が閾値を超過したとき)に、分散処理制御部5に障害検知を通知することができる。
 障害検知の通知を受けた分散処理制御部5の機能指定変更部52は、各リングノード3[k](k=1,・・・,K)の機能指定を変更することで、障害が発生している分散処理ノード3a[f]と分散処理ノード3a[f+1]との間の通信路4および中継ノード3bを使用しない、分散処理ノード3a[n’](n’=1,・・・,N-1)から構成される系、すなわち障害を検知する前と等価な分散処理システムに変更する。この変更は、分散処理ノード3a[n](n=1,・・・,N)として機能していた各リングノード3を、分散処理ノード3a[n’](n’=n-f、ただしn-f<1の場合はn’=n-f+N)として機能させるものである。
 図18は、障害を検知した後に、分散処理制御部5により、各リングノード3が分散処理ノード3a[n’](n’=1...N)あるいは中継ノード3bの何れかに指定された状態を示しており、障害を検知する前の系と同じく、第1の実施例に示した分散処理システムと等価な系となっている。
 障害を検知する前に分散処理ノード3a[f]であったリングノード3は、分散処理ノード3a[N]に変更される。また、障害を検知する前に分散処理ノード3a[f+1]であったリングノード3は、分散処理ノード3a[1]に変更される。また、変更後の分散処理ノード3a[n’](n=1,・・・,N-1)に指定されたリングノード3は、1個以上の通信路4を介して、あるいは1個以上の通信路4と1個以上の中継ノード3bとを介して、分散処理ノード3a[n’+1]と接続されるように変更される。
 このように、本実施例では、分散処理ノード3aと隣接する分散処理ノード3aとの間で中間集計データR*や集計データRを転送できない障害が発生した場合に、この障害を回避しつつ、障害前と等価な分散処理システムに変更することができるため、障害に対してロバストなシステムを提供することができる。
[第4の実施例]
 次に、本発明の第4の実施例について説明する。第2の実施例、第3の実施例、および本実施例の深層学習用分散処理システムは、リングシステムであり、K個(Kは3以上の整数)のリングノード3[k](k=1,・・・,K)と、番号kのリングノード3[k](k=1,・・・,K)が次の番号k+(k+=k+1、ただしk=Kの場合はk+=1)のリングノード3[k+]と双方向に通信するための通信路4[k](k=1,・・・,K)と、分散処理制御部5と、制御用ネットワーク6とを備える。分散処理制御部5は、制御用ネットワーク6を介して各リングノード3[k](k=1,・・・,K)と接続される。
 第2の実施例および第3の実施例では、第1の実施例に示した分散処理システムをリングシステム上に構築する例について説明した。本実施例は、異なる2つの分散処理システムを、1つのリングシステム上に構築する例について説明する。
 なお、3つ以上の分散処理システムを、1つのリングシステム上に構築することも可能であるが、リングノードに対する機能要件は同じであり、説明を簡単にするため、2つの分散処理システム(グループAとグループB)を構築する場合について説明する。
 分散処理制御部5は、制御用ネットワーク6を介して、各リングノード3[k](k=1,・・・,K)を、グループAに属するNa個の分散処理ノード3aA[γ](γ=1,・・・,Na)のうちの1つ、グループBに属するNb個の分散処理ノード3aB[δ](δ=1,・・・,Nb)のうちの1つ、あるいは中継ノード3bの何れかに指定する。リングノード3のノード数Kは、リングシステムに同時に存在し得る各グループに属する分散処理ノードの個数の和以上である必要があり、本実施例では、K≧Na+Nbが必要要件となる(Na,Nbはそれぞれ2以上の整数で、NaとNbの和はK以下)。
 また、グループAに属する分散処理ノード3aA[γ](γ=1,・・・,Na-1)に指定されたリングノード3は、1個以上の通信路4と1個以上の中継ノード3bと他グループ(グループB)の1個以上の分散処理ノード3aB[δ]のうち少なくとも1つを介して、同じグループAに属する前後の番号の分散処理ノード3a[γ+1]と接続されるように、指定される必要がある。
 同様に、グループBに属する分散処理ノード3aB[δ](δ=1,・・・,Nb-1)に指定されたリングノード3は、1個以上の通信路4と1個以上の中継ノード3bと他グループ(グループA)の1個以上の分散処理ノード3aA[γ]のうち少なくとも1つを介して、同じグループBに属する前後の番号の分散処理ノード3a[δ+1]と接続されるように、指定される必要がある。
 グループが3個以上となる場合も同様であり、各グループに属する分散処理ノード3aは、1個以上の通信路4と1個以上の中継ノード3bと他グループの1個以上の分散処理ノード3aのうち少なくとも1つを介して、同じグループに属する前後の番号の分散処理ノード3aと接続されるように、指定される必要がある。
 図19(A)、図19(B)に、各リングノード3[k](k=1,・・・,K)を、グループAに属するNa個(ここではNa=5)の分散処理ノード3aA[γ](γ=1,・・・,Na)、グループBに属するNb個(ここではNb=6)の分散処理ノード3aB[δ](δ=1,・・・,Nb)、あるいは中継ノード3bの何れかに指定した状態を示す。なお、図19(A)、図19(B)では中継ノード3bと分散処理制御部5のおよび制御用ネットワーク6の記載を省略している。
 図19(A)は、同一グループに属する分散処理ノード間の経路と他のグループに属する分散処理ノード間の経路とが重なっている区間がない構成を示している。図19(B)は、同一グループに属する分散処理ノード間の経路と他のグループに属する分散処理ノード間の経路とが重なっている区間がある構成を示している。どちらの構成についても、分散処理ノードとして機能する各リングノード3が後述する処理を行うことによって、各構成の2グループは、それぞれ、独立した第1の実施例の分散処理システムとして動作することができる。
 なお、中継ノード3bとして機能する各リングノード3については、第2の実施例において説明した処理と同じ処理を行えばよく、通信路4を介して接続された隣接するリングノード3から受け取った中間集計データR*または集計データRを、これらデータを転送すべき方向に存在する隣接するリングノード3に転送すればよい。この転送処理は、中間集計データR*または集計データRを送受信する分散処理ノードのグループに依存しない。
 図20はグループAに属する分散処理ノード3aA[γ]の構成例を示すブロック図であり、図2、図10と同一の構成には同一の符号を付してある。各分散処理ノード3aA[γ]は、サンプル入力部10と、勾配計算処理部11と、ノード内集計処理部12と、集計データ送信部13cと、受信部14aと、集計データ生成部15と、重み更新処理部16と、ニューラルネットワーク17と、機能設定部18aとを備えている。
 本実施例の機能設定部18aは、自分散処理ノードの前後の番号の分散処理ノード3aのアドレスを含む、全ての分散処理ノード3aのアドレスを分散処理制御部5から受け取ると共に、自分散処理ノードのグループ識別子を分散処理制御部5から受け取る。
 グループBに属する分散処理ノード3aB[δ]の構成も、分散処理ノード3aA[γ]と同様である。
 図21は本実施例の分散処理制御部5の構成例を示すブロック図である。本実施例の分散処理制御部5は、機能指定部50aと、障害検知通知受信部51と、機能指定変更部52aとを備えている。
 機能指定部50aは、第2、第3の実施例と同様に各リングノード3[k](k=1,・・・,K)を分散処理ノード3aA[γ],3aB[δ]あるいは中継ノード3bの何れかに指定する際に、各分散処理ノード3aA[γ],3aB[δ]に対して全ての分散処理ノード3aA[γ],3aB[δ]のアドレスを通知すると共に、グループ識別子を通知する。
 機能指定変更部52は、第3の実施例と同様に各リングノード3[k](k=1,・・・,K)の機能指定を変更する際に、変更後の各分散処理ノード3aA[γ],3aB[δ]に対して変更後の全ての分散処理ノード3aA[γ],3aB[δ]のアドレスを通知すると共に、変更後のグループ識別子を通知する。
 グループAまたはBに属する1番目の分散処理ノード3aA[1]または3aB[1]として機能するリングノード3[h]のノード内集計処理部12は、第1~第3の実施例と同様に分散データD[m,f]を生成する。
 そして、分散処理ノード3aA[1]または3aB[1]の集計データ送信部13cは、自ノードで生成された分散データD[m,1]を中間集計データR*[m,1]として、次の番号のリングノード3[h+](h+=h+1、ただしh=Kの場合はh+=1)に通信路4[h]を介して送信する。すなわち、集計データ送信部13cは、同じグループに属する次の番号の分散処理ノード3aA[2]または3aB[2]に向けて中間集計データR*[m,1]を送信する。
 中継ノード3bとして機能するリングノード3[t]は、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]から通信路4[t-]を介して受信した中間集計データR*を、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]に通信路4[t]を介して転送する。中継ノード3bとして機能するリングノード3[u]もリングノード3[t]と同様である。
 グループAまたはBに属する中間の分散処理ノード3aA[i]または3aB[i](i=2,・・・,N-1)として機能するリングノード3[z]のノード内集計処理部12は、第1~第3の実施例と同様に分散データD[m,i](m=1,・・・,M)を生成する。
 中間の分散処理ノード3aA[i]または3aB[i]の受信部14aは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]から通信路4[z-]を介して、同じグループに属する分散処理ノード3aA[i-1]または3aB[i-1]が生成・送信した中間集計データR*[m,i-1]を受信する。
 中間の分散処理ノード3aA[i]または3aB[i]の集計データ生成部15は、受信した中間集計データR*[m,i-1]と自ノードで生成された分散データD[m,i]との和を、対応する重みw[m]毎に求めることにより、中間集計データR*[m,i]を生成する。
 そして、中間の分散処理ノード3aA[i]または3aB[i]の集計データ送信部13cは、自ノードで生成された中間集計データR*[m,i]を、次の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]に通信路4[z]を介して送信する。すなわち、集計データ送信部13cは、同じグループに属する次の番号の分散処理ノード3aA[i+1]または3aB[i+1]に向けて中間集計データR*[m,i]を送信する。
 グループAまたはBに属する最終の分散処理ノード3aA[N]または3aB[N]として機能するリングノード3[e]のノード内集計処理部12は、第1~第3の実施例と同様に分散データD[m,N](m=1,・・・,M)を生成する。
 最終の分散処理ノード3aA[N]または3aB[N]の受信部14aは、前の番号e-(e-=e-1、ただしe=1の場合はe-=K)のリングノード3[e-]から通信路4[e-]を介して、同じグループに属する分散処理ノード3aA[N-1]または3aB[N-1]が生成・送信した中間集計データR*[m,N-1]を受信する。
 最終の分散処理ノード3aA[N]または3aB[N]の集計データ生成部15は、受信した中間集計データR*[m,N-1]と自ノードで生成された分散データD[m,N]との和を、対応する重みw[m]毎に求めることにより、集計データR[m]を生成する。
 そして、最終の分散処理ノード3aA[N]または3aB[N]の集計データ送信部13cは、自ノードで生成された集計データR[m]を、前の番号e-のリングノード3[e-]に送信する。すなわち、集計データ送信部13cは、同じグループに属する前の番号の分散処理ノード3aA[N-1]または3aB[N-1]に向けて集計データR[m]を送信する。最終の分散処理ノード3aA[N]または3aB[N]の重み更新処理部16の動作は、第1の実施例と同様である。
 グループAまたはBに属する中間の分散処理ノード3aA[i]または3aB[i](i=2,・・・,N-1)として機能するリングノード3[z]の受信部14aは、後の番号z+(z+=z+1、ただしz=Kの場合はz+=1)のリングノード3[z+]から通信路4[z+]を介して、同じグループに属する分散処理ノード3aA[i+1]または3aB[i+1]が送信した集計データR[m]を受信する。
 中間の分散処理ノード3aA[i]または3aB[i]の集計データ送信部13cは、前の番号z-(z-=z-1、ただしz=1の場合はz-=K)のリングノード3[z-]に通信路4[z-]を介して集計データR[m]を送信する。すなわち、集計データ送信部13cは、同じグループに属する前の番号の分散処理ノード3a[i-1]に向けて集計データR[m]を送信する。中間の分散処理ノード3aA[i]または3aB[i]の重み更新処理部16の動作は、第1の実施例と同様である。
 グループAまたはBに属する1番目の分散処理ノード3aA[1]または3aB[1]として機能するリングノード3[h]の受信部14aは、後の番号h+(h+=h+1、ただしh=Kの場合はh+=1)のリングノード3[h+]から通信路4[h+]を介して、同じグループに属する分散処理ノード3aA[2]または3aB[2]が送信した集計データR[m]を受信する。1番目の分散処理ノード3aA[1]または3aB[1]の重み更新処理部16の動作は、第1の実施例と同様である。
 重み更新処理の終了により、1回のミニバッチ学習が終了し、各分散処理ノード3aA[γ](γ=1,・・・,Na),3aB[δ](δ=1,・・・,Nb)は、更新された重みに基づき、次のミニバッチ学習の処理を継続して行う。すなわち、各分散処理ノード3aA[γ],3aB[δ]は、次のミニバッチ学習用のサンプルデータを図示しないデータ収集ノードから受け取り、上記で説明したミニバッチ学習の処理を繰り返すことにより、ニューラルネットワーク17の推論精度を向上させる。
 以上の処理は、グループAまたはBに属する分散処理ノード3aA[γ]または3aB[δ]が、同じグループに属する分散処理ノードが生成したデータを受信した場合の処理であり、第2の実施例で説明した分散処理ノードの処理と同様である。
 一方、他のグループに属する分散処理ノードが生成した中間集計データR*や集計データRを受信した分散処理ノードは、これら中間集計データR*や集計データRに対して中継ノード3bとして機能する。
 具体的には、あるグループに属する分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3[t]は、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]から通信路4[t-]を介して受信した、他のグループの分散処理ノードによって生成された中間集計データR*を、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]に通信路4[t]を介して転送する。また、このリングノード3[t]は、後の番号t+(t+=t+1、ただしt=Kの場合はt+=1)のリングノード3[t+]から通信路4[t+]を介して受信した、他のグループの分散処理ノードから送信された集計データRを、前の番号t-(t-=t-1、ただしt=1の場合はt-=K)のリングノード3[t-]に通信路4[t-]を介して転送する。このように、分散処理ノード3aA[γ]または3aB[δ]は、自グループに属さない分散処理ノードによって生成・送信されたデータを隣接するリングノード3から受け取った場合、このデータをそのまま他方の隣接するリングノード3に送出する。
 第2の実施例では、各分散処理ノード3a[n](n=1,・・・,N-1)が生成した中間集計データR*[m,n](m=1,・・・,M)を、重みw[m]の番号mの順番にL個ずつP個の集約通信パケットに振り分けて、全ての集約通信パケットを送信し終えるまで、P個の集約通信パケットを順番に送信する集約通信を行う。また、分散処理ノード3a[n]が生成した集計データR[m](m=1,・・・,M)を、番号mの順番にL個ずつP個の分配通信パケットに振り分けて、全ての分配通信パケットを送信し終えるまで、P個の分配通信パケットを順番に送信する分配通信を行う。
 本実施例においても第2の実施例と同様に、分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3は、データをパケット化して送受信するが、このリングノード3の集計データ送信部13cは、自ノードがどのグループに属するか(パケットがどのグループに属するか)を示すグループ識別子を、集約通信パケットおよび分配通信パケットに付与する。上記のとおり、グループ識別子は、分散処理制御部5から通知される。
 さらに、分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3の集計データ送信部13cは、受信部14aで受信した集約通信パケットまたは分配通信パケットに付与されたグループ識別子に基づいて、同じグループに属する分散処理ノードが生成・送信したパケット(自グループに属するパケット)か否かを判定する。
 分散処理ノード3aA[γ]または3aB[δ]として機能するリングノード3の集計データ送信部13cは、受信した集約通信パケットまたは分配通信パケットが自グループのパケットであれば、これらのパケットから取得したデータ(中間集計データR*または集計データR)を、同じグループに属する分散処理ノードが生成・送信したデータとして第2、第3の実施例と同様に処理する。また、集計データ送信部13cは、受信した集約通信パケットまたは分配通信パケットが自グループのパケットでない場合は、これらのパケットから取得したデータ(中間集計データR*または集計データR)を、転送すべき方向に存在する隣接するリングノード3に送出する。
 なお、上記のグループ識別子は、集約通信パケットまたは分配通信パケット内の定められた位置に配置すればよい。パケットがイーサネット(登録商標)フレームの形式に準拠するのであれば、宛先MAC(Media Access Control )アドレスあるいは宛先MACアドレスの一部に、VLANタグ(VLAN-ID)を付与して、このVLANタグをグループ識別子とする、などの実装が可能である。
 本実施例では、K個(Kは3以上の整数)のリングノードから構成される物理的なリングシステムを、同時に複数の深層学習を行うシステムとして構成することが可能となる。また、本実施例では、合計の分散処理ノード数がリングノード数以下であるという条件の下、各深層学習においてその学習の規模(サンプルデータ数や計算量)に応じて適切な分散処理ノード数を定めることができる。したがって、1つの深層学習では使いきれなかったリングノードを別の深層学習に割り当てることができるため、効率的な(リングノードの稼働率が高い)システムの運用が可能となる。
 なお、本実施例では、第2の実施例において複数の分散処理システムを1つのリングシステム上に構築する例で説明しているが、第3の実施例において複数の分散処理システムを1つのリングシステム上に構築してもよいことは言うまでもない。
 第1~第4の実施例で説明した分散処理ノード1とリングノード3(分散処理ノード3a、中継ノード3b)と分散処理制御部5の各々は、CPU(Central Processing Unit)、記憶装置及びインタフェースを備えたコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。分散処理ノード1とリングノード3と分散処理制御部5の各々のCPUは、各々の記憶装置に格納されたプログラムに従って第1~第4の実施例で説明した処理を実行する。
 本発明は、ニューラルネットワークの機械学習を行う技術に適用することができる。
 1,3a…分散処理ノード、2…分散処理用ネットワーク、3…リングノード、3b…中継ノード、4…通信路、5…分散処理制御部、6…制御用ネットワーク、10…サンプル入力部、11…勾配計算処理部、12…ノード内集計処理部、13,13a,13b,13c…集計データ送信部、14,14a…受信部、15…集計データ生成部、16…重み更新処理部、17…ニューラルネットワーク、18,18a…機能設定部、50,50a…機能指定部、51…障害検知通知受信部、52,52a…機能指定変更部。

Claims (8)

  1.  ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードを備え、
     各分散処理ノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、
     N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、
     N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、
     N個の分散処理ノードのうち、予め定められた最終の分散処理ノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信し、
     各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とする分散処理システム。
  2.  請求項1記載の分散処理システムにおいて、
     各分散処理ノードは、
     自ノードが前記1番目の分散処理ノードである場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する集計データ送信部と、
     自ノードが前記中間の分散処理ノードである場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードである場合に、前記第2の集計データを生成する集計データ生成部と、
     自ノードが前記1番目または前記中間の分散処理ノードである場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードである場合に、前記第1の集計データを受信する受信部と、
     前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とする分散処理システム。
  3.  リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードと、
     前記K個のリングノードの各々を、分散処理ノードあるいは中継ノードの何れかに指定する分散処理制御部とを備え、
     K個のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードは、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成し、
     N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、
     N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、
     N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードは、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、
     N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、
     K個のリングノードのうち、前記中継ノードとして機能する各リングノードは、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信し、
     各分散処理ノードは、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とする分散処理システム。
  4.  請求項3記載の分散処理システムにおいて、
     各リングノードは、
     自ノードが前記1番目の分散処理ノードとして機能する場合に、前記第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信し、自ノードが前記中継ノードとして機能する場合に、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する集計データ送信部と、
     自ノードが前記中間の分散処理ノードとして機能する場合に、前記更新後の第1の集計データを生成し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第2の集計データを生成する集計データ生成部と、
     自ノードが前記1番目または前記中間の分散処理ノードとして機能する場合に、前記第1の集計データと前記第2の集計データとを受信し、自ノードが前記最終の分散処理ノードとして機能する場合に、前記第1の集計データを受信する受信部と、
     自ノードが前記分散処理ノードとして機能する場合に、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する重み更新処理部とを備えることを特徴とする分散処理システム。
  5.  請求項3または4記載の分散処理システムにおいて、
     前記分散処理制御部は、
     前記K個のリングノードの各々を、前記分散処理ノードあるいは前記中継ノードの何れかに指定する機能指定部と、
     前記第1の集計データまたは前記第2の集計データを転送先の分散処理ノードに送信できない障害が発生したときに、この障害を回避するように各リングノードの機能指定を変更する機能指定変更部とを備えることを特徴とする分散処理システム。
  6.  請求項3乃至5のいずれか1項に記載の分散処理システムにおいて、
     前記分散処理制御部は、前記分散処理ノードとして指定するリングノードの各々を、複数の異なるグループのうちいずれか1つのグループに属するように指定し、
     N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードは、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、
     N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された次の番号の分散処理ノードに向けて送信し、
     N個の分散処理ノードのうち、予め定められた最終の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、
     N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードは、同じグループの分散処理ノードから送信された第2の集計データを前記番号mの順番にパケット化して、同じグループに属する、予め指定された前の番号の分散処理ノードに向けて送信し、
     各分散処理ノードは、同じグループの分散処理ノードで生成・送信された前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新することを特徴とする分散処理システム。
  7.  ネットワークを介して互いに接続されたN個(Nは2以上の整数)の分散処理ノードの各々が、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、
     N個の分散処理ノードのうち、予め定められた1番目の分散処理ノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第2のステップと、
     N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに送信する第3のステップと、
     N個の分散処理ノードのうち、予め定められた最終の分散処理ノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、前記1番目および前記中間の分散処理ノードに送信する第4のステップと、
     各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第5のステップとを含むことを特徴とする分散処理方法。
  8.  リング状に配置され、隣接するノードと通信路を介して互いに接続されたK個(Kは3以上の整数)のリングノードのうち、分散処理ノードとして機能するN個(Nは2以上K以下の整数)の各リングノードが、学習対象のニューラルネットワークのM個(Mは2以上の整数)の重みw[m]毎(m=1,・・・,M)の分散データを生成する第1のステップと、
     N個の分散処理ノードのうち、予め指定された1番目の分散処理ノードとして機能するリングノードが、自ノードで生成された分散データを第1の集計データとして、この第1の集計データを重みw[m]の番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第2のステップと、
     N個の分散処理ノードのうち、前記1番目と最終とを除く中間の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて更新後の第1の集計データを生成し、この第1の集計データを前記番号mの順番にパケット化して、予め指定された次の番号の分散処理ノードに向けて送信する第3のステップと、
     N個の分散処理ノードのうち、予め指定された最終の分散処理ノードとして機能するリングノードが、受信した第1の集計データと自ノードで生成された分散データとの和を、対応する重みw[m]毎に求めて第2の集計データを生成し、この第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第4のステップと、
     N個の分散処理ノードのうち、前記中間の分散処理ノードとして機能するリングノードが、受信した第2の集計データを前記番号mの順番にパケット化して、予め指定された前の番号の分散処理ノードに向けて送信する第5のステップと、
     K個のリングノードのうち、中継ノードとして機能する各リングノードが、前記第1の集計データまたは前記第2の集計データを受信したときに、受信した前記第1の集計データまたは前記第2の集計データを、転送先の分散処理ノードに向けて送信する第6のステップと、
     各分散処理ノードが、前記第2の集計データに基づいて前記ニューラルネットワークの重みw[m]を更新する第7のステップとを含むことを特徴とする分散処理方法。
PCT/JP2019/019895 2018-06-11 2019-05-20 分散処理システムおよび分散処理方法 WO2019239802A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/973,717 US20210209443A1 (en) 2018-06-11 2019-05-05 Distributed Processing System and Distributed Processing Method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018110926A JP7135468B2 (ja) 2018-06-11 2018-06-11 分散処理システムおよび分散処理方法
JP2018-110926 2018-06-11

Publications (1)

Publication Number Publication Date
WO2019239802A1 true WO2019239802A1 (ja) 2019-12-19

Family

ID=68842478

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/019895 WO2019239802A1 (ja) 2018-06-11 2019-05-20 分散処理システムおよび分散処理方法

Country Status (3)

Country Link
US (1) US20210209443A1 (ja)
JP (1) JP7135468B2 (ja)
WO (1) WO2019239802A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7412699B2 (ja) 2020-01-14 2024-01-15 慶應義塾 情報処理システム、情報処理装置、及びプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083383A (ja) * 1996-09-09 1998-03-31 Toshiba Corp ニューロ演算装置
JP2017168950A (ja) * 2016-03-15 2017-09-21 株式会社日立製作所 通信制御装置、通信システム、および、通信制御方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436433B2 (en) * 2017-12-28 2022-09-06 Intel Corporation Malleable fabric attached virtual artificial intelligence (AI) training appliances
US10728091B2 (en) * 2018-04-04 2020-07-28 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083383A (ja) * 1996-09-09 1998-03-31 Toshiba Corp ニューロ演算装置
JP2017168950A (ja) * 2016-03-15 2017-09-21 株式会社日立製作所 通信制御装置、通信システム、および、通信制御方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HEGDE, V. ET AL., PARALLEL AND DISTRIBUTED DEEP LEARNING, 9 June 2016 (2016-06-09), pages 1 - 8, XP055587479, Retrieved from the Internet <URL:https://stanford.edu/rezab/classes/cme323/S16/projects_reports/hedge_usmani.pdf> [retrieved on 20190312] *
SHOU KING FOO ET AL.: "Parallel Implementation of Backpropagation Neural Networks on a Heterogeneous Array of Transputers", IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS, PART B (CYBERNETICS, vol. 27, no. 1, February 1997 (1997-02-01), pages 118 - 126, XP000642229, ISSN: 1083-4419, DOI: 10.1109/3477.552191 *

Also Published As

Publication number Publication date
JP2019215603A (ja) 2019-12-19
JP7135468B2 (ja) 2022-09-13
US20210209443A1 (en) 2021-07-08

Similar Documents

Publication Publication Date Title
US10541861B2 (en) Network system, method, and switch device
CN103348638B (zh) 通信系统、控制装置、通信节点以及通信方法
CN110611619A (zh) 一种基于ddpg强化学习算法的智能化路由决策方法
CN103348639B (zh) 路径选择方法以及控制服务器
CN106209615B (zh) 一种基于spfa算法计算转发路径的动态路由控制方法和系统
CN112087329B (zh) 一种网络服务功能链部署方法
CN101013955B (zh) 用于业务量矩阵估计的快速模拟退火
US20210357723A1 (en) Distributed Processing System and Distributed Processing Method
WO2019239802A1 (ja) 分散処理システムおよび分散処理方法
CN111064667A (zh) 卫星网络路由优化方法、控制器及数据系统
Zehtabi et al. Event-triggered decentralized federated learning over resource-constrained edge devices
CN112073983B (zh) 基于流量预测的无线数据中心网络拓扑优化方法及系统
JP7287492B2 (ja) 分散深層学習システムおよびデータ転送方法
CN111901237B (zh) 源路由选路方法及系统、相关设备及计算机可读存储介质
JP6915562B2 (ja) 分散処理システムおよび分散処理方法
JP7192984B2 (ja) 分散処理システムおよび分散処理方法
KR20190120057A (ko) 로드 균형을 위한 확률 기반 적응형 라우팅 알고리즘
CN107493254A (zh) Tcp报文转发的方法、装置和系统
JP2006287919A (ja) 通信ネットワーク、コンテンツ配信ノード、ツリー構築方法、コンテンツ配信制御プログラム
CN110431824B (zh) 通过对等消息彼此通信的节点的计算机网络以及关联的用于使节点之间互连的方法
WO2020085058A1 (ja) 分散処理システムおよび分散処理方法
CN110138670B (zh) 一种基于动态路径的负载迁移方法
CN113705826B (zh) 面向分布式机器学习的参数同步组播方法
JP7074018B2 (ja) 分散処理システムおよび分散処理方法
JP2015037198A (ja) パス復旧制御装置

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: 19820600

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19820600

Country of ref document: EP

Kind code of ref document: A1