WO2023022321A1 - 분산 학습용 서버 및 분산 학습 방법 - Google Patents

분산 학습용 서버 및 분산 학습 방법 Download PDF

Info

Publication number
WO2023022321A1
WO2023022321A1 PCT/KR2022/004806 KR2022004806W WO2023022321A1 WO 2023022321 A1 WO2023022321 A1 WO 2023022321A1 KR 2022004806 W KR2022004806 W KR 2022004806W WO 2023022321 A1 WO2023022321 A1 WO 2023022321A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
nodes
server
computer cluster
node
Prior art date
Application number
PCT/KR2022/004806
Other languages
English (en)
French (fr)
Inventor
김태정
조규남
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to US17/735,352 priority Critical patent/US20230059674A1/en
Publication of WO2023022321A1 publication Critical patent/WO2023022321A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Definitions

  • Distributed learning servers and distributed learning methods for performing distributed learning using a plurality of nodes in a computer cluster are provided.
  • distributed learning which trains an artificial intelligence model through distributed computing using a computer cluster
  • a master node of the computer cluster may collect training results from each node to train an artificial intelligence model.
  • the acquisition of the processed calculation result from some nodes in the computer cluster is delayed due to differences in computing performance or network speed of nodes included in the cluster, the entire process of distributed learning may be delayed.
  • Disclosed embodiments are to provide a distributed learning server and a distributed learning method for performing distributed learning using a plurality of nodes in a computer cluster.
  • a computer cluster is constructed by selecting worker nodes to perform distributed learning from among a plurality of nodes, and the nodes in the computer cluster are master nodes. comprising the server and the worker nodes; determining the data subsets by partitioning the training dataset such that each of the data subsets corresponds to each of the nodes in the computer cluster; obtaining training results from nodes in the computer cluster by training each artificial intelligence model stored in each of the nodes in the computer cluster based on each of the data subsets; updating weights of the artificial intelligence model stored in the server based on the training results; identifying, for each of the nodes in the computer cluster, a computation time required for each of the nodes in the computer cluster to perform training; and adjusting the number of data included in each of the data subsets based on an operation time of each of the nodes in the computer cluster.
  • a server for performing distributed learning includes a communication interface; a memory that stores one or more instructions; and at least one processor executing one or more instructions stored in the memory, wherein the at least one processor constructs a computer cluster by selecting worker nodes to perform distributed learning among a plurality of nodes, My nodes include the server as a master node and the worker nodes, and determine the data subsets by dividing a training dataset so that each of the data subsets corresponds to each of the nodes in the computer cluster, and By training each artificial intelligence model stored in each of the nodes in the computer cluster based on each, training results are obtained from the nodes in the computer cluster, and the weight of the artificial intelligence model stored in the server is based on the training results.
  • the data A server may be provided that adjusts the number of data included in each of the subsets.
  • a recording medium storing a program for performing the above-described method may be provided.
  • FIG. 1 is a diagram for explaining a computer cluster having a server as a master node according to an embodiment of the present disclosure.
  • FIG. 2 is a flowchart illustrating a method for performing distributed learning by a server constructing a computer cluster according to an embodiment of the present disclosure.
  • FIG. 3 is a diagram for explaining a method of constructing a computer cluster by a server selecting worker nodes from among a plurality of nodes according to an embodiment of the present disclosure.
  • FIG. 4 is a diagram for explaining a method for determining data subsets by dividing a training dataset by a server according to an embodiment of the present disclosure.
  • FIG. 5 is a diagram for explaining a data configuration of a data subset according to an embodiment of the present disclosure.
  • FIG. 6 is a diagram illustrating that nodes in a computer cluster perform distributed learning using data subsets according to an embodiment of the present disclosure.
  • FIG. 7 is a flowchart illustrating a method for performing distributed learning by a server operating a computer cluster according to an embodiment of the present disclosure.
  • FIG. 8 is a diagram for explaining a method for a server to adjust the number of data batches included in each data subset according to an embodiment of the present disclosure as an epoch, which is a part of a distributed learning process, is performed.
  • FIG. 9 is a diagram for further explanation of FIG. 8 and shows execution of Epoch 1 and Epoch 2 by nodes in a computer cluster, which are part of a distributed learning process.
  • FIG. 10 is a diagram for further explanation of FIG. 8 , and is a diagram illustrating execution of epochs 1 to 4 by a first worker node, which is part of a distributed learning process.
  • 11 is a diagram for explaining another method for a server to adjust the number of batches of data included in each data subset according to an embodiment of the present disclosure as an epoch, which is a part of a distributed learning process, is performed.
  • FIG. 12 is a diagram for explaining another method in which a server determines data subsets by dividing a training dataset according to an embodiment of the present disclosure.
  • FIG. 13 is a flowchart for explaining another method of performing distributed learning by a server operating a computer cluster according to an embodiment of the present disclosure.
  • FIG. 14 is a block diagram showing the configuration of a server according to an embodiment of the present disclosure.
  • the expression “at least one of a, b, or c” means “a”, “b”, “c”, “a and b”, “a and c”, “b and c”, “a, b” and c”, or variations thereof. Terms used in the present disclosure will be briefly described, and the present disclosure will be described in detail.
  • a part in the present disclosure, when a part "includes” a certain component, it means that it may further include other components without excluding other components unless otherwise stated.
  • terms such as “unit” and “module” described in this disclosure refer to a unit that processes at least one function or operation, and may be implemented as hardware or software or a combination of hardware and software.
  • FIG. 1 is a diagram for explaining a computer cluster having a server as a master node according to an embodiment of the present disclosure.
  • the computer cluster 1000 refers to a set of server nodes (hereinafter referred to as nodes) in which several computers are connected and operated as one system.
  • the computer cluster 100 is composed of a server 2000 as a master node and worker nodes providing processing resources.
  • the server 2000 according to an embodiment, as a master node, may distribute data to respective worker nodes and manage data throughput.
  • the server 2000 may perform distributed learning of the artificial intelligence model 104 stored in the server 2000 using the server 2000 and worker nodes in the computer cluster 100 .
  • Server 2000 may train artificial intelligence model 104 based on training dataset 102 .
  • the server 2000 may perform distributed learning using a data parallelism method.
  • the computer cluster 100 may consist of a server 2000 as a master node, worker node 1 110, and worker node 2 120.
  • the server 2000 may copy the artificial intelligence model 104 and generate a duplicate artificial intelligence model.
  • server 2000 copies artificial intelligence model 104, provides replica artificial intelligence model 1 114 to worker node 1 110, and replicate artificial intelligence model 2 124 to worker node 2. (120) can be provided.
  • server 2000 may partition training dataset 102 to perform distributed learning. For example, the server 2000 may partition the training dataset 102 into data subset 0 (106), data subset 1 (112), and data subset 2 (122). Server 2000 may provide data subset 1 112 to worker node 1 110 and data subset 2 122 to worker node 2 122 . Data subset 0 106 may be used by server 2000 to train artificial intelligence model 104 stored in server 2000 .
  • server 2000 executes training code 108 so that server 2000, worker node 1 independently runs on each of server 2000, worker node 1 110 and worker node 2 120. (110) and the stored artificial intelligence model in worker node 2 (120) to be trained.
  • server 2000 trains artificial intelligence model 104 based on data subset 0 106
  • worker node 1 110 trains replica artificial intelligence model 1 (based on data subset 1 112).
  • worker node 2 120 may train replica AI model 2 124 based on data subset 2 122.
  • the server 2000 obtains the training results of the server 2000 and the training results of the worker node 1 110 and the worker node 2 120 to update the weights of the artificial intelligence model 104 stored in the server 2000.
  • the server 2000 synchronizes the updated artificial intelligence model 104 with the cloned artificial intelligence model 1 114 and the cloned artificial intelligence model 2 124, thereby generating the cloned artificial intelligence model 1 114 and the cloned artificial intelligence model 1 114. 2 (124) can be updated.
  • FIG. 2 is a flowchart illustrating a method for performing distributed learning by a server constructing a computer cluster according to an embodiment of the present disclosure.
  • the server 2000 may build a computer cluster by selecting worker nodes to perform distributed learning from among a plurality of nodes.
  • the server 2000 may perform distributed learning of the artificial intelligence model in a data parallelism method according to embodiments described below.
  • the server 2000 may identify nodes available for distributed learning among a plurality of nodes.
  • An available node may be an idle node not performing other tasks or a node having spare computing resources capable of performing distributed learning.
  • the server 2000 may build a computer cluster by selecting worker nodes to perform distributed learning among available nodes. For example, the server 2000 may select all available nodes to build a computer cluster. The server 2000 may select some of the available nodes to build a computer cluster.
  • server 2000 acts as a master node of a computer cluster.
  • the server 2000 may control other worker nodes included in the computer cluster or transmit work commands to other worker nodes included in the computer cluster.
  • the server 2000 may determine data subsets by dividing the training dataset so that each of the data subsets corresponds to each node in the computer cluster.
  • server 2000 may determine data subsets based on the number of nodes in the computer cluster.
  • the server 2000 may determine a plurality of data subsets by dividing the training dataset based on the number of master nodes and worker nodes. In this case, one data subset may correspond to one node.
  • the server 2000 may determine data subsets by indexing the training data in the training dataset and distinguishing the data subsets based on the index number.
  • the first data subset may include training data of index numbers 1 to 25, and the second data subset may include training data of index numbers 26 to 50.
  • Data having the same index number may be plural.
  • a plurality of pieces of data having the same index number means that the server 2000 indexes a plurality of pieces of training data with the same index number based on a batch size.
  • the server 2000 may index a plurality of training data with the same index number based on a batch, which is a group of data, which is an input unit when a node trains an artificial intelligence model. For example, if the batch size is 10, the server 2000 may index 10 pieces of training data in the training dataset as index number 1 and index 10 pieces of other training data in the training dataset as index number 2. .
  • the first data subset includes training data of index numbers 1 to 25, and there are 10 training data for each index number, a total of 250 training data can be included in the first data subset.
  • step S230 the server 2000 according to an embodiment trains each artificial intelligence model stored in each of the nodes in the computer cluster based on each of the data subsets, thereby obtaining training results from the nodes in the computer cluster.
  • the server 2000 may copy artificial intelligence models stored in the server 2000 and transmit the replicated artificial intelligence models to worker nodes.
  • the server 2000 may allow nodes in a computer cluster to train an artificial intelligence model stored in nodes by executing a training code for performing distributed learning.
  • Server 2000 may obtain training results from nodes in a computer cluster.
  • the server 2000 transmits a first training result generated by a first worker node among worker nodes training an artificial intelligence model stored in the first worker node using a first data subset, from the first worker node. can be obtained.
  • the server 2000 may obtain a second training result generated by a second worker node among worker nodes training an artificial intelligence model stored in the second worker node using the second data subset, from the second worker node.
  • the server 2000 since the server 2000 also performs distributed learning as a master node, the training result of the master node generated by training the artificial intelligence model stored in the server 2000 using the data subset corresponding to the server 2000 can be obtained.
  • the server 2000 may update the weights of the artificial intelligence model stored in the server 2000 based on the training results.
  • the server 2000 may update weights of the artificial intelligence model stored in the server 2000 based on gradients obtained by each node in the computer cluster through calculation.
  • the server 2000 may synchronize artificial intelligence models stored in the server 2000 and artificial intelligence models stored in worker nodes.
  • the server 2000 may identify, with respect to each of the nodes in the computer cluster, the computation time required for each of the nodes in the computer cluster to perform training.
  • the training rates of nodes in a computer cluster may be different from each other.
  • the server 2000 acquires training results from the nodes in the cluster and updates the weights of the artificial intelligence model stored in the server 2000, so after the training of the node with the slowest training speed is completed, the server 2000 (2000) can be updated.
  • the server 2000 identifies the computation time required for each node in the computer cluster to perform training in order to reduce the number of training data of nodes whose training speed is slower than other nodes by a predetermined standard or more among the nodes in the computer cluster. can do.
  • the server 2000 may adjust the number of data included in each of the data subsets based on the calculation time of each node in the computer cluster.
  • the server 2000 determines the number of data included in the first data subset of the first worker node and the second worker node.
  • the number of data included in the second data subset of may be adjusted.
  • the first data subset may include training data index numbers 1 to 25, and the second data subset may include training data index numbers 26 to 50.
  • the server 2000 adjusts the number of data between the data subsets so that the first data subset includes training data with index numbers 1 to 26 and the second data subset includes training data with index numbers 27 to 50. You can have worker nodes compute more training data.
  • FIG. 3 is a diagram for explaining a method of constructing a computer cluster by a server selecting worker nodes from among a plurality of nodes according to an embodiment of the present disclosure.
  • the server 2000 may identify nodes 315 available for distributed learning among the plurality of nodes 310 .
  • An available node may be an idle node not performing other tasks or a node having spare computing resources capable of performing distributed learning.
  • Server 2000 may identify available nodes 315 and create a list of available nodes 315 .
  • the server 2000 may re-identify an available node according to whether each node of the plurality of nodes 310 is performing a task, and update the list of available nodes 315 .
  • server 2000 may select worker nodes 320 to perform distributed learning from among available nodes 315 .
  • server 2000 may select all of the available nodes 315 as worker nodes 320 .
  • server 2000 may select some of the available nodes 315 as worker nodes 320 .
  • the server 2000 may construct the computer cluster 300 using the server 2000 as a master node by selecting at least some worker nodes 320 from among the available nodes 315 .
  • the selected worker nodes 320 may be excluded from the list of available nodes 315.
  • the server 2000 removes at least some worker nodes from among the worker nodes 320 in the computer cluster 300, and selects at least some of the available nodes 315 as worker nodes.
  • the computer cluster 300 can be reconstructed.
  • FIG. 4 is a diagram for explaining a method for determining data subsets by dividing a training dataset by a server according to an embodiment of the present disclosure.
  • the server 2000 may determine a plurality of data subsets by dividing the training dataset 400 for training the artificial intelligence model.
  • the server 2000 may determine the number of data subsets to be created by dividing the training dataset 400 based on the number of nodes in the computer cluster. For example, the server 2000 may generate as many data subsets as the number of nodes in a computer cluster.
  • the nodes in the computer cluster are a total of four nodes including the server 2000 as a master node, a first worker node, a second worker node, and a third worker node will be described as an example.
  • the number of nodes in the computer cluster is not limited thereto.
  • the server 2000 may divide the training dataset 400 to generate data subsets corresponding to the number of nodes in the computer cluster. For example, the server 2000 divides the training dataset 400 into a first data subset 410, a second data subset 420, a third data subset 430, and a fourth data subset 440. can create
  • each of the data subsets 410, 420, 430, and 440 may correspond to each of the nodes in the computer cluster.
  • the first data subset 410 corresponds to a first worker node
  • the second data subset 420 corresponds to a second worker node
  • the third data subset 430 corresponds to a third worker node
  • the fourth data subset 440 may correspond to the server 2000.
  • Each of the nodes in the computer cluster may train an artificial intelligence model stored in the node using a corresponding subset of data.
  • the server 2000 When the server 2000 divides the training dataset 400 so as to correspond to each of the nodes in the computer cluster, the server 2000 indexes the training data in the training dataset 400 and separates the data subsets 410.
  • the data subsets 410, 420, 430, and 440 may be generated by determining index numbers to be included in , 420, 430, and 440.
  • An example in which the server 2000 distinguishes data subsets using data indexes will be further described in FIG. 5 .
  • FIG. 5 is a diagram for explaining a data configuration of a data subset according to an embodiment of the present disclosure.
  • the server 2000 may create data subsets by indexing training data in a training dataset and determining an index number to be included in each data subset.
  • the data subset 510 which is any one of a plurality of data subsets generated by the server 2000, may include N data batches.
  • a data batch refers to a group of data, which is a unit of input when a node trains an artificial intelligence model.
  • Data batches included in the data subset 510 may have index numbers assigned by the server 2000 .
  • the server 2000 may determine an index number to be included in the data subset 510 .
  • the server 2000 may generate the data subset 510 by determining index numbers to be included in the data subset 510 as index numbers 1 to N.
  • the data subset 510 includes data #1 (511), which is a data arrangement of index number 1, data #2 (512), which is a data arrangement of index number 2, and data #3 (513), which is a data arrangement of index number 3.
  • data #4 514 which is a data arrangement of index number 4, ..., data #N, which is a data arrangement of index number N.
  • data having the same index number included in one data arrangement may be plural.
  • a plurality of different pieces of data having the same index number may be included in one data arrangement.
  • data #1 511 may include a plurality of pieces of data 530 .
  • the number of pieces of data 530 in a data batch may be referred to as a batch size.
  • node 520 (eg, a master node or worker node) in the computer cluster, based on data batches included in data subset 510, the artificial intelligence model stored in node 520.
  • Node 520 may perform an epoch, performing operations on all training data in data subset 510 and updating weights.
  • the node 520 may output a loss by inputting a batch of data to an artificial intelligence model stored in the node 520.
  • the node 520 since the number of data batches included in the data subset 510 is N, the node 520 performs an operation for each data batch and outputs a loss, i.e. iteration, by N If the operation is performed on all training data in the data subset 510 by performing the operation twice, it can be said that the training epoch for the artificial intelligence model stored in the node 520 is performed once.
  • the server 2000 may adjust only the number of data batches of the data subsets while maintaining the batch size of the data batches.
  • FIG. 6 is a diagram illustrating that nodes in a computer cluster perform distributed learning using data subsets according to an embodiment of the present disclosure.
  • the nodes in the computer cluster are a total of 4 nodes: server 2000 as a master node, first worker node 610, second worker node 620, and third worker node 630. will be explained by way of example. However, the number of nodes in the computer cluster is not limited thereto.
  • server 2000 may determine the data subsets by partitioning the training dataset such that each of the data subsets corresponds to each of the nodes in the computer cluster. Since this has been described in the description of FIGS. 4 and 5, the same description will be omitted.
  • the server 2000 may cause the server 2000 and worker nodes to perform distributed learning by executing training code.
  • distributed learning of the artificial intelligence model may be performed in a computer cluster composed of the server 2000 and the first to third worker nodes 610, 620, and 630.
  • a training command is transmitted from the server 2000 to the first worker node 610, and the first worker node 610 performs a first data subset 612 using the first data subset 612.
  • the artificial intelligence model stored in the worker node 610 can be trained.
  • the server 2000 may obtain a first training result from the first worker node 610 .
  • a training command is transmitted from the server 2000 to the second worker node 620, and the second worker node 620 uses the second data subset 622
  • the artificial intelligence model stored in the second worker node 620 may be trained.
  • the server 2000 may obtain a second training result from the second worker node 620 .
  • a training command is transmitted from the server 2000 to the third worker node 630, and the third worker node 630 uses the third data subset 632
  • An artificial intelligence model stored in the third worker node 630 may be trained.
  • the server 2000 may obtain a third training result from the third worker node 630 .
  • the server 2000 may train the artificial intelligence model stored in the server 2000 using the fourth data subset 642.
  • the server 2000 collects the training results of the server 2000 and the training results of the first to third worker nodes 610, 620, and 630, and stores the data stored in the server 2000 based on the collected training results. You can update the weights of the AI model.
  • FIG. 7 is a flowchart illustrating a method for performing distributed learning by a server operating a computer cluster according to an embodiment of the present disclosure.
  • the server 2000 may build a computer cluster by selecting worker nodes to perform distributed learning among a plurality of nodes. Since this corresponds to step S210 of FIG. 2, the same description will be omitted.
  • step S720 the server 2000 according to an embodiment may determine data subsets by dividing the training dataset so that each of the data subsets corresponds to each node in the computer cluster. Since this corresponds to step S220 of FIG. 2, the same description will be omitted.
  • step S730 the server 2000 according to an embodiment transfers data indexes of data batches included in the data subset to nodes in the computer cluster, and then executes training codes.
  • the server 2000 and each of the worker nodes may perform training of the artificial intelligence model stored in each node using the data subset corresponding to each node.
  • the server 2000 may obtain output training results from nodes in the computer cluster at every predetermined epoch.
  • the server 2000 may obtain a training result of an artificial intelligence model stored in each of the nodes in the computer cluster whenever one epoch is performed in each of the nodes in the computer cluster.
  • the server 2000 may obtain a training result of an artificial intelligence model stored in each of the nodes in the computer cluster whenever a plurality of epochs are performed in each of the nodes in the computer cluster.
  • Steps S730 to S740 may correspond to step S230 of FIG. 2 .
  • the server 2000 may collect training results of nodes in the computer cluster and update weights of the artificial intelligence model stored in the server 2000.
  • the server 2000 may update weights of artificial intelligence models stored in the server 2000 and synchronize the artificial intelligence models stored in worker nodes with the artificial intelligence models stored in the server 2000 .
  • the server 2000 may identify data throughput and operation speed of nodes in the computer cluster and change a data arrangement index value included in a data subset corresponding to each node.
  • server 2000 may calculate an average operation time of nodes in a computer cluster.
  • the server 2000 may compare the average calculation time of nodes in the computer cluster with the calculation time of each node in the computer cluster.
  • the server 2000 may change the data arrangement index value included in the data subset corresponding to each node based on the comparison result.
  • the server 2000 may reduce the operation time of the first worker node by using the first worker node corresponding to the first worker node.
  • the number of batches of data in the data subset can be adjusted to decrease. That is, the server 2000 may reduce the calculation time of the first worker node by reducing the data throughput of the first worker node having a slow calculation speed.
  • the server 2000 sets the data arrangement indexes included in the first data subset as index numbers 1 to 24.
  • the server 2000 may adjust the data arrangement of the index number 25 excluded from the first data subset to be included in another data subset (eg, a data subset corresponding to a node with a high computational speed).
  • the server 2000 may transmit the updated data arrangement index of the data subset to the nodes in the computer cluster, and then execute the next epoch.
  • each node may load training data based on the updated data arrangement index and train an artificial intelligence model stored in each node.
  • the first worker node has index number 1 included in the first data subset. through index number 24, and train the artificial intelligence model stored in the first worker node.
  • a process in which the server 2000 performs distributed learning of the artificial intelligence model stored in the server 2000 using the server 2000 and worker nodes may consist of a plurality of epochs of a preset number. . After performing one or more epochs, the server 2000 may adjust the number of data batches among the training data subsets. The server 2000 may repeatedly perform steps S740 to S770 until the distributed learning process ends. In addition, when the server 2000 performs the last epoch when the number of epochs reaches a preset value, steps S760 to S770 may be omitted.
  • a method of adjusting the number of batches of data between data subsets while the server 2000 performs epochs, which are part of the distributed learning process, will be further described in the description of FIGS. 8 to 11 .
  • FIG. 8 is a diagram for explaining a method for a server to adjust the number of data batches included in each data subset according to an embodiment of the present disclosure as an epoch, which is a part of a distributed learning process, is performed.
  • the nodes in the computer cluster include a server 2000 as a master node, a first worker node, a second worker node, and a third worker node will be described as an example.
  • the number of nodes in the computer cluster is not limited thereto.
  • the server 2000 may allow nodes in a computer cluster to train an artificial intelligence model stored in the nodes by executing training code for performing distributed learning.
  • Server 2000 may obtain training results from nodes in a computer cluster.
  • the server 2000 may update weights of the artificial intelligence model stored in the server 2000 based on training results obtained from nodes in the computer cluster.
  • the training rates of nodes in a computer cluster may be different from each other.
  • the server 2000 may identify the computation time required for each of the nodes in the computer cluster to perform training with respect to each of the nodes in the computer cluster.
  • the server 2000 may adjust the number of batches of data included in each of the data subsets based on the calculation time of each node in the computer cluster. For example, the server 2000 performs an epoch, which is a training process of an artificial intelligence model stored in the node, in each of the nodes in the computer cluster, and then each of the nodes in the computer cluster performs a data subset of data for performing the next epoch.
  • the number of batches can be adjusted.
  • the server 2000 may calculate the number of data batches included in the data subset corresponding to the nodes in the computer cluster. In this case, the number of data arrangements of the data subset corresponding to any one node K in the computer cluster can be expressed by Equation 1 below.
  • the number of data batches to be allocated to node k when node k performs the next epoch is the number of next data batches of the data subset corresponding to node k
  • the number of data batches allocated when node k performs the current epoch is the average computation time of nodes in a computer cluster
  • is the computation time taken when node k performs the current epoch is the total number of training data in the current epoch
  • the server 2000 may cause the server 2000 and worker nodes to perform distributed learning by executing training code.
  • the server 2000, the first worker node, the second worker node, and the third worker node may independently train the artificial intelligence model stored in the node.
  • the server 2000 trains an artificial intelligence model stored in the server 2000 using a data subset (the number of data batches: 25) of the server 2000, and the first worker node is the first worker node.
  • the AI model stored in the first worker node is trained using the data subset (number of data batches: 25), and the second worker node uses the data subset (number of data batches: 25) of the second worker node to train the AI model.
  • 2 trains the artificial intelligence model stored in the worker node
  • the third worker node may train the artificial intelligence model stored in the third worker node using a data subset (number of data batches: 25) of the third worker node.
  • the server 2000 may identify the computation time required for the server 2000 and each of the worker nodes to perform Epoch 1 810 .
  • the calculation time required for the server 2000 to perform epoch 1 810 is 100 seconds
  • the calculation time required for the first worker node to perform epoch 1 810 is It can be identified that 120 seconds, the computation time taken by the second worker node to perform epoch 1 (810) is 130 seconds, and the computation time taken by the third worker node to perform epoch 1 (810) is 190 seconds. there is.
  • the server 2000 may calculate an average computation time of nodes in a computer cluster. For example, the server 2000 may calculate that the average calculation time required for the server 2000 and each of the worker nodes to perform Epoch 1 810 is 135 seconds.
  • the server 2000 may compare the average calculation time of nodes in the computer cluster with the calculation time of each node in the computer cluster. For example, the server 2000 may identify that the computation time of the server 2000, the first worker node, and the second worker node is shorter than the average computation time, and the computation time of the third worker node is longer than the average computation time. there is.
  • the server 2000 may adjust the number of data batches included in each of the data subsets based on the comparison result. For example, the server 2000 may adjust some data arrangements of a data subset corresponding to a node having a longer average computation time than the average computation time to be included in a data subset corresponding to a node having a shorter average computation time. In this case, the server 2000 may compare the comparison result of the average operation time and the operation time of each node with a threshold value, and adjust the number of data batches included in each of the data subsets only when the comparison result is greater than or equal to the threshold value.
  • the server 2000 may adjust the number of data batches included in each of the data subsets using Equation 1.
  • the number of data batches included in the data subset of the server 2000 is 33
  • the number of data batches included in the data subset of the first worker node is 28, and the data included in the data subset of the second worker node.
  • the number of batches can be adjusted to 25, and the number of data batches included in the data subset of the third worker node can be adjusted to 14.
  • the server 2000 when the number of batches of data in the training dataset used in the next epoch compared to the current epoch is changed, the server 2000 applies a ratio of the total number of data in the current epoch to the total number of data in the next epoch to obtain data The number of data batches included in the subset can be determined.
  • the server 2000, the first worker node, the second worker node, and the third worker node may each perform Epoch 2 (820) using the data subset in which the number of data batches is adjusted.
  • the server 2000 trains an artificial intelligence model stored in the server 2000 using a subset of data (number of data batches: 33) of the server 2000, and the first worker node uses the subset of data (data batches) of the first worker node.
  • the AI model stored in the first worker node is trained using the number of batches: 28), and the second worker node uses the data subset of the second worker node (the number of batches of data: 25) to train the artificial intelligence model stored in the second worker node.
  • the stored artificial intelligence model is trained, and the third worker node may train the stored artificial intelligence model in the third worker node using the data subset (number of data batches: 14) of the third worker node.
  • the server 2000 and each of the worker nodes may identify an operation time required to perform the epoch 2 820 .
  • the server 2000 may calculate an average of calculation times required for the server 2000 and each of the worker nodes to perform Epoch 2 820 .
  • the server 2000 may compare the average calculation time of nodes in the computer cluster with the calculation time of each node in the computer cluster, and adjust the number of data batches included in each of the data subsets based on the comparison result.
  • the server 2000 and worker nodes may perform Epoch 3 830 using the data subsets in which the number of data batches is adjusted, and adjust the number of data batches included in each of the data subsets according to the above-described embodiments.
  • the server 2000 may adjust the number of batches of data included in each of the data subsets according to the above-described embodiments, and may perform Epoch 4 (840).
  • the server 2000 may repeat operations of adjusting the number of batches of data included in each of the data subsets and performing the next epoch until the distributed learning process ends.
  • Block 850 representing the execution of epoch 1 810 and epoch 2 820, which are parts of a distributed learning process performed by the server 2000 according to an embodiment, will be further described with reference to FIG. 9 .
  • block 860 representing execution of epoch 1 810 to epoch 4 840 by the first worker node will be further described with reference to FIG. 10 . do.
  • FIG. 9 is a diagram for further explanation of FIG. 8 and shows execution of Epoch 1 and Epoch 2 by nodes in a computer cluster, which are part of a distributed learning process.
  • epoch 1 and epoch 2 of FIG. 9 may correspond to block 850 representing execution of epoch 1 810 and epoch 2 820 of FIG. 8 .
  • the server 2000 After performing Epoch 1, the server 2000 according to an embodiment collects training results of the artificial intelligence model stored in each node from each node, and calculates the weight of the artificial intelligence model stored in the server 2000 can update them.
  • the server 2000 may update weights of artificial intelligence models stored in the server and synchronize the artificial intelligence models stored in worker nodes with the artificial intelligence models stored in the server.
  • the data subset 950 of the server 2000 may consist of data batches index number 1 to index number 25.
  • the server 2000 may train an artificial intelligence model stored in the server 2000 using the data subset 950 of the server 2000 .
  • the server 2000 may perform epoch 1, which performs an operation on all data batches in the data subset 950 of the server 2000.
  • the data subset 912 (hereinafter referred to as the first data subset) of the first worker node 910 may consist of data batches of index numbers 26 to 50.
  • the first worker node 910 may train an artificial intelligence model stored in the first worker node 910 using the first data subset 912 .
  • the first worker node 910 may perform epoch 1 , performing operations on all batches of data in the first data subset 912 .
  • the data subset 922 (hereinafter referred to as the second data subset) of the second worker node 920 may consist of data batches of index numbers 51 to 75.
  • the second worker node 920 may train an artificial intelligence model stored in the second worker node 920 using the second data subset 922 .
  • the second worker node 920 may perform epoch 1, performing operations on all data batches in the second data subset 922.
  • the data subset 932 (hereinafter referred to as the third data subset) of the third worker node 930 may consist of data batches of index numbers 76 to 100.
  • the third worker node 930 may train an artificial intelligence model stored in the third worker node 930 using the third data subset 932 .
  • the third worker node 930 may perform epoch 1 , performing operations on all data batches in the third data subset 932 .
  • the server 2000 may identify data throughput and operation speed of each node and change a data arrangement index value included in a data subset corresponding to each node.
  • the updated data subset 952 of the server 2000 is composed of data arrangements of index numbers 1 to 33, and the updated first data
  • the subset 914 is composed of data batches of index numbers 34 to 61
  • the updated second data subset 924 is composed of data batches of index numbers 62 to 86
  • the subset 934 may consist of data batches of index numbers 87 to 100.
  • the server 2000 may allow the server 2000 and worker nodes to perform Epoch 2 using a data subset in which the number of data batches is adjusted.
  • the server 2000 may train an artificial intelligence model in the server 2000 using the updated data subset 952 of the server 2000 .
  • the first worker node 910 may train an artificial intelligence model in the first worker node 910 using the updated first data subset 914 .
  • the second worker node 920 may train an artificial intelligence model in the second worker node 920 using the updated second data subset 924 .
  • the third worker node 930 may train an artificial intelligence model within the third worker node 930 using the updated third data subset 934 .
  • the server 2000 may collect training results of the artificial intelligence model stored in each node from each node, and update the weights of the artificial intelligence model stored in the server 2000. .
  • the server 2000 may update weights of artificial intelligence models stored in the server and synchronize the artificial intelligence models stored in worker nodes with the artificial intelligence models stored in the server.
  • FIG. 10 is a diagram for further explanation of FIG. 8 , and is a diagram illustrating execution of epochs 1 to 4 by a first worker node, which is part of a distributed learning process.
  • epochs 1 to 4 (1010 to 1040) of the first worker node 1000 of FIG. 10 are executions of epochs 1 (810) to 4 (840) by the first worker node of FIG. may correspond to block 860 indicating
  • the first worker node 1000 may perform an operation on data batches of index numbers 1 to 25 included in the data subset of the first worker node 1000.
  • the first worker node 1000 may transmit the result of epoch 1 1010 in which data batches of index numbers 1 to 25 are trained to the server 2000 .
  • the server 2000 identifies the operation speed of Epoch 1 (1010) of the first worker node 1000 and adjusts the number of data batches included in the data subset of the first worker node 1000 according to the above-described embodiments.
  • the operation speed of the first worker node 1000 may be faster than the average operation speed of nodes in the computer cluster.
  • the server 2000 may increase the number of data batches included in the data subset of the first worker node 1000 so that the first worker node 1000 processes more data than other nodes.
  • the first worker node 1000 may perform an operation on data batches of index numbers 1 to 28 included in the data subset of the first worker node 1000. At this time, the data subset of the first worker node 1000 is updated based on the result of Epoch 1 (1010).
  • the first worker node 1000 may transmit the result of epoch 2 1020 in which data batches of index numbers 1 to 28 are trained to the server 2000 .
  • the server 2000 identifies the operation speed of Epoch 2 (1020) of the first worker node 1000 and adjusts the number of data batches included in the data subset of the first worker node 1000 according to the above-described embodiments.
  • the operation speed of the first worker node 1000 may be slower than the average operation speed of nodes in the computer cluster.
  • the server 2000 may reduce the number of data batches included in the data subset of the first worker node 1000 so that the first worker node 1000 processes less data than other nodes.
  • the first worker node 1000 may perform an operation on data batches of index numbers 1 to 27 included in the data subset of the first worker node 1000.
  • the data subset of the first worker node 1000 is updated based on the result of Epoch 2 (1020).
  • the first worker node 1000 may transmit a result of epoch 3 1030 in which data batches of index numbers 1 to 27 are trained to the server 2000 .
  • the server 2000 identifies the operation speed of Epoch 3 (1030) of the first worker node 1000, and adjusts the number of data batches included in the data subset of the first worker node 1000 according to the above-described embodiments. can
  • the first worker node 1000 data of index number 1 to index number 27 included in the data subset of the first worker node 1000 updated based on the result of epoch 3 (1030) You can perform calculations on batches.
  • the first worker node 1000 may transmit the result of epoch 4 1040 in which data batches of index numbers 1 to 27 are trained to the server 2000 .
  • the server 2000 identifies the operation speed of Epoch 4 (1040) of the first worker node 1000 and adjusts the number of data batches included in the data subset of the first worker node 1000 according to the above-described embodiments. can
  • a data arrangement included in the data subset and distinguished by an index number may include a plurality of training data as described above. For example, if the batch size is 10, the data batch of index number 1 may consist of 10 training data.
  • the server 2000 performs distributed learning using the nodes in the cluster, the server 2000 equalizes the operation speed between nodes by adjusting the number of data batches while maintaining the batch size set for each of the nodes in the cluster, thereby distributing It can increase the speed of learning.
  • 11 is a diagram for explaining another method for a server to adjust the number of batches of data included in each data subset according to an embodiment of the present disclosure as an epoch, which is a part of a distributed learning process, is performed.
  • the server 2000 may identify a node having the longest calculation time among nodes in the computer cluster.
  • the server 2000 may adjust some data of the data subset corresponding to the node having the longest calculation time to be included in data subsets corresponding to other nodes in the computer cluster.
  • the server 2000 may cause the server 2000 and worker nodes to perform distributed learning by executing training code.
  • the server 2000, the first worker node, the second worker node, and the third worker node may each independently train the artificial intelligence model stored in the node.
  • the server 2000 trains an artificial intelligence model stored in the server 2000 using a data subset (number of data batches: 25) of the server 2000
  • the first worker node trains the artificial intelligence model stored in the first worker node using the data subset (number of data batches: 25) of the first worker node
  • the second worker node uses the data subset (data batch number) of the second worker node.
  • the number of batches: 25) is used to train the AI model stored in the second worker node, and the third worker node uses a subset of data from the third worker node (number of batches of data: 25) to train the AI model stored in the third worker node.
  • Stored AI models can be trained.
  • the server 2000 may identify the computation time required for the server 2000 and each of the first, second, and third worker nodes to perform Epoch 1 (1110), and identify a node having the longest computation time. there is. For example, as a result of performing Epoch 1 (1110), the server 2000 may identify a third worker node having the longest computation time. The server 2000 may adjust part of the data arrangement included in the data subset of the third worker node having the longest calculation time to be included in the data subsets of other worker nodes.
  • the server 2000 reduces the number of data included in the data subset of the third worker node to 22, reduces the number of data batches included in the data subset of the server 2000 to 26, and reduces the number of data batches included in the data subset of the first worker node to 26.
  • the number of data batches included in the data subset may be increased to 26
  • the number of data batches included in the data subset of the second worker node may be increased to 26.
  • the server 2000 may adjust the number of data batches by changing a data batch index value included in a data subset corresponding to each worker node.
  • the data subset of the server 2000 is composed of data batches of index numbers 1 to 26, and the data subset of the first worker node is data batches of index numbers 27 to 52.
  • the data subset of the second worker node is composed of data batches of index numbers 53 to 78
  • the data subset of the third worker node is composed of data batches of index numbers 79 to 100.
  • the server 2000 may allow the server 2000 and worker nodes to perform Epoch 2 (1120) using a data subset in which the number of data batches is adjusted.
  • the server 2000 trains the artificial intelligence model stored in the server 2000 using the updated data subset (number of data batches: 26) of the server 2000 and the first worker node trains the artificial intelligence model stored in the first worker node using the updated data subset (number of data batches: 26) of the first worker node, and the second worker node updates the second worker node
  • the AI model stored in the 2nd worker node is trained using the node's data subset (data batch number: 26), and the 3rd worker node uses the updated data subset of the 3rd worker node (data batch number: 22). It is possible to train the artificial intelligence model stored in the third worker node using .
  • the server 2000 may identify a node having the longest computation time each time an epoch is performed using the methods described above. Whenever an epoch is performed, the server 2000 adjusts some data of the data subset corresponding to the node with the longest calculation time to be included in the data subsets corresponding to other nodes in the computer cluster, so that epoch 3 (1130), Epoch 4 (1140) and Epoch 5 (1150) can be performed.
  • FIG. 12 is a diagram for explaining another method in which a server determines data subsets by dividing a training dataset according to an embodiment of the present disclosure.
  • the server 2000 since the server 2000 serves as a master node of the computer cluster, it can perform other tasks for managing worker nodes included in the computer cluster in addition to training the artificial intelligence model stored in the server. there is. Accordingly, the server 2000 may allocate a smaller number of data of the data subset corresponding to the server 2000 .
  • the server 2000 may divide the training dataset 1200 to generate data subsets corresponding to the number of nodes in the computer cluster. For example, the server 2000 divides the training dataset 1200 into a first data subset 1210, a second data subset 1220, a third data subset 1230, and a fourth data subset 1240. can create Each of the first, second, third, and fourth data subsets 1210, 1220, 1230, and 1240 may correspond to each of nodes in a computer cluster.
  • the first data subset 1210 corresponds to the first worker node 1212
  • the second data subset 1220 corresponds to the second worker node 1222
  • the third data subset 1230 corresponds to It corresponds to the third worker node 1232
  • the fourth data subset 1240 may correspond to the server 2000 .
  • the server 2000 sets the number of data batches included in the fourth data subset 1240 to be smaller than the number of data batches included in the other first to third data subsets 1210, 1220, and 1230.
  • the training data set 1200 can be partitioned. Since the detailed methods for generating data subsets by dividing the training dataset 1200 by the server 2000 have been described above, the same description will be omitted.
  • FIG. 13 is a flowchart illustrating another method of performing distributed learning by a server operating a computer cluster according to an embodiment.
  • the nodes in the computer cluster 1300 include a server 2000 as a master node, a first worker node 1310, a second worker node 1320, and a third worker node 1330.
  • a total of four A case of a node will be described as an example. However, the number of nodes in the computer cluster 1300 is not limited thereto.
  • the server 2000 may identify operation speeds of nodes within the computer cluster 1300 .
  • the server 2000 may select one or more worker nodes from among nodes in the computer cluster 1300 based on the calculation time of each node in the computer cluster 1300 .
  • the server 2000 may select a node having the longest calculation time among nodes in the computer cluster 1300 . For example, when the computation time of the first worker node 1310 is the longest, the server 2000 may select the first worker node 1310, which is a node having the longest computation time.
  • the server 2000 may remove one or more selected worker nodes from the computer cluster 1300 and incorporate one or more other nodes into the computer cluster 1300 as worker nodes.
  • the server 2000 may select an available node from the list of available nodes as a worker node and incorporate it into the computer cluster 1300 .
  • the server 2000 may select a ninth worker node 1390 that is another available node from the list of available nodes and incorporate the ninth worker node 1390 into the computer cluster 1300 .
  • the server 2000 selects one or more worker nodes among nodes in the computer cluster 1300 whenever an epoch, which is a part of the distributed learning process, is performed more than a predetermined number of times (eg, once or twice). You can choose.
  • the server 2000 may exclude one or more selected worker nodes from the computer cluster 1300 and incorporate one or more other available nodes into the computer cluster 1300 as worker nodes.
  • the server 2000 when the server 2000 performs distributed learning using a computer cluster, the server 2000 may increase the speed of distributed learning by adjusting the number of data subsets or replacing worker nodes. there is.
  • the server 2000 adjusts the number of data in the data subset, replaces the worker nodes, or adjusts the number of data in the data subset and replaces the worker node each time the epoch of the distributed learning process is performed a predetermined number of times to perform distributed learning. can be done
  • FIG. 14 is a block diagram showing the configuration of a server according to an embodiment.
  • a server 2000 includes a communication interface (eg, including a communication circuit) 2100, a memory 2200, and a processor (eg, including a processing circuit) 2300 ) may be included.
  • the communication interface 2100 may perform data communication with other nodes of the computer cluster under the control of the processor 2300 . Also, the communication interface 2100 may perform data communication with other peripheral electronic devices as well as other nodes of the computer cluster.
  • the communication interface 2100 may include, for example, wired LAN, wireless LAN, Wi-Fi, Bluetooth, zigbee, Wi-Fi Direct (WFD), infrared communication (IrDA, infrared Data Association), Bluetooth Low Energy (BLE), Near Field Communication (NFC), Wireless Broadband Internet (Wibro), World Interoperability for Microwave Access (WiMAX), Shared Wireless Access Protocol (SWAP), WiGig Data communication may be performed with other nodes or other peripheral electronic devices in a computer cluster using at least one of WiGig (Wireless Gigabit Alliance) and RF communication.
  • WiGig WiGig
  • the communication interface 2100 may transmit a command for performing distributed learning to nodes in a computer cluster and receive distributed learning results from the nodes in the computer cluster.
  • the communication interface 2100 may transmit data for synchronizing the artificial intelligence models stored in each of the nodes in the computer cluster to the nodes in the computer cluster.
  • the memory 2200 may store instructions, data structures, and program codes that the processor 2300 can read. In the disclosed embodiments, operations performed by the processor 2300 may be implemented by executing instructions or codes of a program stored in the memory 2200 .
  • the memory 2200 may include a flash memory type, a hard disk type, a multimedia card micro type, a card type memory (for example, SD or XD memory, etc.), and RAM.
  • RAM Random Access Memory
  • SRAM Static Random Access Memory
  • ROM Read-Only Memory
  • EEPROM Electrically Erasable Programmable Read-Only Memory
  • PROM PROM
  • magnetic memory magnetic disk , an optical disk, a non-volatile memory including at least one of, and a volatile memory such as random access memory (RAM) or static random access memory (SRAM).
  • RAM random access memory
  • SRAM static random access memory
  • SRAM static random access memory
  • the memory 2200 may store various types of data that may be used for a computer cluster to perform distributed learning.
  • the memory 2200 may store a distributed learning module 2210, a worker node management module 2220, a training data management module 2230, an artificial intelligence model 2240, and a training dataset 2250.
  • Each of the above modules may include various processing circuitry and/or executable instructions.
  • the processor 2300 includes various processing circuits and may control overall operations of the server 2000 .
  • the processor 2300 may control overall operations for the server 2000 to perform distributed learning using a computer cluster by executing one or more instructions of a program stored in the memory 2200. there is.
  • the processor 2300 may include, for example, a central processing unit, a microprocessor, a graphic processing unit, application specific integrated circuits (ASICs), digital signal processors (DSPs), and digital signal processors (DSPDs).
  • ASICs application specific integrated circuits
  • DSPs digital signal processors
  • DSPDs digital signal processors
  • Signal Processing Devices PLDs (Programmable Logic Devices), FPGAs (Field Programmable Gate Arrays), APs (Application Processors), Neural Processors (Neural Processing Units), or artificial intelligence dedicated processors designed with hardware structures specialized in processing artificial intelligence models. It may consist of at least one, but is not limited thereto.
  • the processor 2300 may train the artificial intelligence model 2240 using the distributed learning module 2210 .
  • the distributed learning module 2210 executes training codes for distributed learning, so that nodes in a computer cluster independently perform training.
  • the distributed learning module 2210 may generate duplicate artificial intelligence models by copying the artificial intelligence model 2240 in order to independently perform training on each node in the computer cluster.
  • the distributed learning module 2210 may obtain training results, which are results of training replica artificial intelligence models stored in each of the nodes from nodes in the computer cluster, and update weights of the artificial intelligence model 2240 .
  • the distributed learning module 2210 may synchronize replica artificial intelligence models stored in each of the nodes in the computer cluster with the artificial intelligence model 2240 .
  • the processor 2300 may manage worker nodes in a computer cluster using the worker node management module 2220 .
  • the worker node management module 2220 may identify nodes available for distributed learning among a plurality of nodes. An available node may be an idle node not performing other tasks or a node having spare computing resources capable of performing distributed learning.
  • the worker node management module 2220 may build a computer cluster by selecting worker nodes to perform distributed learning among available nodes. Worker node management module 2220 may identify available nodes and create a list of available nodes. The worker node management module 2220 may re-identify an available node according to whether each node of the plurality of nodes is performing a task, and update the list of available nodes.
  • the worker node management module 2220 may identify the computation time required for the worker node to train the artificial intelligence model stored in the worker node.
  • the worker node management module 2220 removes at least some of the worker nodes from among the worker nodes in the computer cluster from the computer cluster, and removes at least some of the available nodes from among the worker nodes in the computer cluster, based on the calculation time identification result of the worker nodes in the computer cluster.
  • the computer cluster can be rebuilt.
  • the processor 2300 may manage training data using the training data management module 2230 .
  • the training data management module 2230 may determine a plurality of data subsets by dividing the training data set 2250 for training the artificial intelligence model.
  • the training data management module 2230 may determine the number of data subsets to be generated by dividing the training dataset 2250 based on the number of nodes in the computer cluster. Specifically, the training data management module 2230 may generate as many data subsets as the number of nodes in the computer cluster. In this case, each of the data subsets may correspond to each of the nodes in the computer cluster.
  • the training data management module 2230 may generate data subsets by indexing training data within the training dataset 2250 and determining an index number to be included in each data subset. In addition, the training data management module 2230 may change a data arrangement index value included in the data subset corresponding to each node in order to adjust the number of data included in the data subset corresponding to each of the worker nodes.
  • the block diagram of the server 2000 shown in FIG. 14 is a block diagram for one embodiment.
  • Each component of the block diagram may be integrated, added, or omitted according to the specifications of each device actually implemented. That is, if necessary, two or more components may be combined into one component, or one component may be subdivided into two or more components.
  • Functions performed by each block are for explaining exemplary embodiments, and the specific operation or device does not limit the scope of the present invention.
  • a method of operating a server may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • Program instructions recorded on the medium may be those specially designed and configured for the present invention or those known and usable to those skilled in computer software.
  • Examples of computer readable media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. Included are hardware devices specially configured to store and execute program instructions, such as magneto-optical media and ROM, RAM, flash memory, and the like.
  • Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler.
  • the computer readable medium may be provided in the form of a non-transitory recording medium.
  • the non-transitory recording medium only means that it is a tangible device and does not contain a signal (eg, electromagnetic wave), and this term refers to the case where data is semi-permanently stored in the recording medium and temporarily stored does not discriminate between cases
  • a 'non-temporary storage medium' may include a buffer in which data is temporarily stored.
  • the operating method of the server according to the disclosed embodiments may be included and provided in a computer program product.
  • Computer program products may be traded between sellers and buyers as commodities.
  • a computer program product may include a S/W program and a computer-readable storage medium in which the S/W program is stored.
  • a computer program product may include a product in the form of a S/W program (eg, a downloadable app) that is distributed electronically through a manufacturer of an electronic device or an electronic marketplace (eg, Google Play Store, App Store). there is.
  • a part of the S/W program may be stored in a storage medium or temporarily generated.
  • the storage medium may be a storage medium of a manufacturer's server, an electronic market server, or a relay server temporarily storing SW programs.
  • a computer program product may include a storage medium of a server or a storage medium of an electronic device in a system composed of a server and an electronic device.
  • the computer program product may include a storage medium of the third device.
  • the computer program product may include a S/W program itself transmitted from the server to the electronic device or the third device or from the third device to the electronic device.
  • one of the server, the electronic device, and the third device may execute the computer program product to perform the method according to the disclosed embodiments.
  • two or more of the server, the electronic device, and the third device may execute the computer program product to implement the method according to the disclosed embodiments in a distributed manner.
  • a server may execute a computer program product stored in the server to control an electronic device communicatively connected to the server to perform a method according to the disclosed embodiments.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

서버가 분산 학습을 수행하는 방법이 제공된다. 서버는, 복수의 노드들 중에서 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축하며, 상기 컴퓨터 클러스터 내 노드들은, 마스터 노드인 상기 서버와 상기 작업자 노드들을 포함한다. 서버는 상기 컴퓨터 클러스터 내 노드들의 각각에 대하여, 상기 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별하고, 상기 컴퓨터 클러스터 내 노드들 각각의 연산 시간에 기초하여, 상기 컴퓨터 클러스터 내 노드들의 훈련에 이용되는, 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정할 수 있다.

Description

분산 학습용 서버 및 분산 학습 방법
컴퓨터 클러스터 내 복수의 노드들을 이용하여 분산 학습을 수행하는, 분산 학습용 서버 및 분산 학습 방법이 제공된다.
인공지능 모델을 훈련시키는 방법으로써, 컴퓨터 클러스터를 이용하여 인공지능 모델을 분산 컴퓨팅을 통해 훈련시키는, 분산 학습이 활용되고 있다. 컴퓨터 클러스터를 이용하여 분산 학습을 수행하는 경우, 컴퓨터 클러스터의 마스터 노드는 각각의 노드들로부터 훈련 결과를 취합하여 인공지능 모델을 훈련시킬 수 있다. 그러나 클러스터 내 포함되는 노드들의 컴퓨팅 성능의 차이 또는, 네트워크 속도의 차이 등으로 인하여, 컴퓨터 클러스터 내 일부 노드로부터 처리된 연산 결과의 획득이 지연되면, 전체 분산 학습의 과정에 지연이 발생할 수 있다.
컴퓨터 클러스터를 이용하여 분산 학습을 수행하는 방법에 있어서, 컴퓨터 클러스터 내 노드들의 연산 시간들을 조절함으로써, 분산 학습 속도를 개선하는 방법을 제시하고자 한다.
개시된 실시예들은, 컴퓨터 클러스터 내 복수의 노드들을 이용하여 분산 학습을 수행하는 분산 학습용 서버, 및 분산 학습 방법을 제공하기 위한 것이다.
본 개시의 일 측면에 따르면, 서버가 분산 학습을 수행하는 방법에 있어서, 복수의 노드들 중에서 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축하며, 상기 컴퓨터 클러스터 내 노드들은, 마스터 노드인 상기 서버와 상기 작업자 노드들을 포함하는, 단계; 데이터 서브셋들의 각각이 상기 컴퓨터 클러스터 내 노드들의 각각에 대응하도록 훈련 데이터셋을 분할함으로써, 상기 데이터 서브셋들을 결정하는 단계; 상기 데이터 서브셋들의 각각에 기초하여 상기 컴퓨터 클러스터 내 노드들의 각각에 저장된 각 인공지능 모델을 훈련시킴으로써, 상기 컴퓨터 클러스터 내 노드들로부터 훈련 결과들을 획득하는 단계; 상기 훈련 결과들에 기초하여 상기 서버에 저장된 인공지능 모델의 가중치들을 업데이트하는 단계; 상기 컴퓨터 클러스터 내 노드들의 각각에 대하여, 상기 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별하는 단계; 및 상기 컴퓨터 클러스터 내 노드들 각각의 연산 시간에 기초하여, 상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는 단계를 포함하는, 방법을 제공할 수 있다.
본 개시의 일 측면에 따르면, 분산 학습을 수행하는 서버에 있어서, 통신 인터페이스; 하나 이상의 명령어들(instructions)을 저장하는 메모리; 및 상기 메모리에 저장된 하나 이상의 명령어들을 실행하는 적어도 하나의 프로세서를 포함하며, 상기 적어도 하나의 프로세서는, 복수의 노드들 중에서 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축하되, 상기 컴퓨터 클러스터 내 노드들은, 마스터 노드인 상기 서버와 상기 작업자 노드들을 포함하고, 데이터 서브셋들의 각각이 상기 컴퓨터 클러스터 내 노드들의 각각에 대응하도록 훈련 데이터셋을 분할함으로써, 상기 데이터 서브셋들을 결정하고, 상기 데이터 서브셋들의 각각에 기초하여 상기 컴퓨터 클러스터 내 노드들의 각각에 저장된 각 인공지능 모델을 훈련시킴으로써, 상기 컴퓨터 클러스터 내 노드들로부터 훈련 결과들을 획득하고, 상기 훈련 결과들에 기초하여 상기 서버에 저장된 인공지능 모델의 가중치들을 업데이트하고, 상기 컴퓨터 클러스터 내 노드들의 각각에 대하여, 상기 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별하고, 상기 컴퓨터 클러스터 내 노드들 각각의 연산 시간에 기초하여, 상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는, 서버를 제공할 수 있다.
본 개시의 일 측면에 따르면, 전술한 방법을 수행하도록 하는 프로그램이 저장된 기록매체를 제공할 수 있다.
전술한 내용 및 다른 측면들, 본 개시의 특정 실시예들의 특징들 및 이점들은, 후술하는 상세한 설명과 첨부된 도면들을 함께 참조하면 더욱 명확해질 것이다.
도 1은 본 개시의 일 실시예에 따른 서버를 마스터노드로하는 컴퓨터 클러스터를 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시예에 따른 서버가 컴퓨터 클러스터를 구축하여 분산 학습을 수행하는 방법을 설명하기 위한 흐름도이다.
도 3은 본 개시의 일 실시예에 따른 서버가 복수의 노드들 중에서 작업자 노드들을 선택하여, 컴퓨터 클러스터를 구축하는 방법을 설명하기 위한 도면이다.
도 4는 본 개시의 일 실시예에 따른 서버가 훈련 데이터셋을 분할함으로써 데이터 서브셋들을 결정하는 방법을 설명하기 위한 도면이다.
도 5는 본 개시의 일 실시예에 따른 데이터 서브셋의 데이터 구성을 설명하기 위한 도면이다.
도 6은 본 개시의 일 실시예에 따른 컴퓨터 클러스터 내 노드들이 데이터 서브셋들을 이용하여 분산 학습을 수행하는 것을 나타낸 도면이다.
도 7은 본 개시의 일 실시예에 따른 서버가 컴퓨터 클러스터를 운용하여 분산 학습을 수행하는 방법을 설명하기 위한 흐름도이다.
도 8은 분산 학습 과정의 일부인 에폭이 수행됨에 따라, 본 개시의 일 실시예에 따른 서버가 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정하는 방법을 설명하기 위한 도면이다.
도 9는 도 8을 더 설명하기 위한 도면으로, 분산 학습 과정의 일부인, 컴퓨터 클러스터 내 노드들에 의한 에폭 1 및 에폭 2의 실행을 나타내는 도면이다.
도 10은 도 8을 더 설명하기 위한 도면으로, 분산 학습 과정의 일부인, 제1 작업자 노드에 의한 에폭 1 내지 에폭 4의 실행을 나타내는 도면이다.
도 11은 분산 학습 과정의 일부인 에폭이 수행됨에 따라, 본 개시의 일 실시예에 따른 서버가 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정하는 다른 방법을 설명하기 위한 도면이다.
도 12는 본 개시의 일 실시예에 따른 서버가 훈련 데이터셋을 분할함으로써 데이터 서브셋들을 결정하는 다른 방법을 설명하기 위한 도면이다.
도 13은 본 개시의 일 실시예에 따른 서버가 컴퓨터 클러스터를 운용하여 분산 학습을 수행하는 다른 방법을 설명하기 위한 흐름도이다.
도 14는 본 개시의 일 실시예에 따른 서버의 구성을 나타낸 블록도이다.
본 개시에서, "a, b 또는 c 중 적어도 하나" 표현은 " a", " b", " c", "a 및 b", "a 및 c", "b 및 c", "a, b 및 c 모두", 혹은 그 변형들을 지칭할 수 있다. 본 개시에서 사용되는 용어에 대해 간략히 설명하고, 본 개시에 대해 구체적으로 설명하기로 한다.
본 개시에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당되는 상세한 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 이해되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 명세서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 또한, 본 명세서에서 사용되는 '제1' 또는 '제2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
본 개시에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 본 개시에 기재된 "부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시예에 대하여 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예시적인 실시예에 한정되지 않는다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 개시 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 개시의 일 실시예에 따른 서버를 마스터노드로하는 컴퓨터 클러스터를 설명하기 위한 도면이다.
개시된 실시예에서, 컴퓨터 클러스터(1000)는 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는, 서버 노드(이하, 노드)들의 집합을 말한다. 컴퓨터 클러스터(100)는, 마스터 노드인 서버(2000)와 프로세싱 자원을 제공하는 작업자 노드들로 구성된다. 일 실시예에 따른 서버(2000)는, 마스터노드로써 각각의 작업자 노드들에 데이터를 분배하고, 데이터 처리량을 관리할 수 있다.
서버(2000)는 서버(2000) 및 컴퓨터 클러스터(100) 내 작업자 노드들을 이용하여 서버(2000) 내 저장된 인공지능 모델(104)의 분산 학습을 수행할 수 있다. 서버(2000)는 훈련 데이터셋(102)에 기초하여 인공지능 모델(104)을 훈련시킬 수 있다. 서버(2000)는 데이터 병렬화(data parallelism)의 방식을 이용하여 분산 학습을 수행할 수 있다.
일 실시예에서, 컴퓨터 클러스터(100)는 마스터 노드인 서버(2000), 작업자 노드 1(110), 작업자 노드 2(120)로 구성될 수 있다. 서버(2000)는 인공지능 모델(104)의 분산 학습을 수행하기 위하여, 인공지능 모델(104) 복사하여, 복제 인공지능 모델을 생성할 수 있다. 예를 들어, 서버(2000)는 인공지능 모델(104)을 복사하여, 복제 인공지능 모델 1(114)을 작업자 노드 1(110)에 제공하고, 복제 인공지능 모델 2(124)를 작업자 노드 2(120)에 제공할 수 있다.
일 실시예에서, 서버(2000)는 분산 학습을 수행하기 위해 훈련 데이터셋(102)을 분할할 수 있다. 예를 들어, 서버(2000)는 훈련 데이터셋(102)을 데이터 서브셋 0(106), 데이터 서브셋 1(112), 데이터 서브셋 2(122)로 분할할 수 있다. 서버(2000)는 데이터 서브셋 1(112)을 작업자 노드 1(110)에 제공하고, 데이터 서브셋 2(122)를 작업자 노드 2(122)에 제공할 수 있다. 데이터 서브셋 0(106)은 서버(2000)가 서버(2000) 내 저장된 인공지능 모델(104)을 훈련시키는 데 이용될 수 있다.
일 실시예에서, 서버(2000)는 훈련 코드(108)를 실행함으로써, 서버(2000), 작업자 노드 1(110) 및 작업자 노드 2(120) 각각에서 독립적으로, 서버(2000), 작업자 노드 1(110) 및 작업자 노드 2(120) 내 저장된 인공지능 모델이 훈련되도록 할 수 있다. 예를 들어, 서버(2000)는 데이터 서브셋 0(106)에 기초하여 인공지능 모델(104)을 훈련시키고, 작업자 노드 1(110)은 데이터 서브셋 1(112)에 기초하여 복제 인공지능 모델 1(114)을 훈련시키고, 작업자 노드 2(120)는 데이터 서브셋 2(122)에 기초하여 복제 인공지능 모델 2(124)를 훈련시킬 수 있다.
서버(2000)는 서버(2000)의 훈련 결과 및 작업자 노드 1(110) 및 작업자 노드 2(120)의 훈련 결과들을 획득하여, 서버(2000)에 저장된 인공지능 모델(104)의 가중치들을 업데이트 할 수 있다. 또한, 서버(2000)는 업데이트 된 인공지능 모델(104)과 복제 인공지능 모델 1(114) 및 복제 인공지능 모델 2(124)을 동기화하여, 복제 인공지능 모델 1(114) 및 복제 인공지능 모델 2(124)를 업데이트할 수 있다.
도 2는 본 개시의 일 실시예에 따른 서버가 컴퓨터 클러스터를 구축하여 분산 학습을 수행하는 방법을 설명하기 위한 흐름도이다.
단계 S210에서, 일 실시예에 따른 서버(2000)는 복수의 노드들 중에서 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축할 수 있다. 서버(2000)는 후술하는 실시예들에 따른 데이터 병렬화(data parallelism)의 방식으로, 인공지능 모델의 분산 학습을 수행할 수 있다.
일 실시예에서, 서버(2000)는 복수의 노드들 중에서, 분산 학습에 이용 가능한 노드들을 식별할 수 있다. 이용 가능한 노드는, 다른 작업을 수행 중이지 않은 유휴 노드이거나, 분산 학습을 수행할 수 있는 여유 컴퓨팅 자원이 있는 노드일 수 있다. 서버(2000)는 이용 가능한 노드들 중에서, 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축할 수 있다. 예를 들어, 서버(2000)는 이용 가능한 노드들 모두를 선택하여, 컴퓨터 클러스터를 구축할 수 있다. 서버(2000)는 이용 가능한 노드들 중 일부를 선택하여, 컴퓨터 클러스터를 구축할 수 있다.
일 실시예에서, 서버(2000)는 컴퓨터 클러스터의 마스터 노드로 동작한다. 서버(2000)는 컴퓨터 클러스터 내 포함되는 다른 작업자 노드들을 제어하거나, 컴퓨터 클러스터 내 포함되는 다른 작업자 노드들로 작업 명령을 전달할 수 있다.
단계 S220에서, 일 실시예에 따른 서버(2000)는 데이터 서브셋들의 각각이 컴퓨터 클러스터 내 노드들의 각각에 대응하도록 훈련 데이터셋을 분할함으로써, 데이터 서브셋들을 결정할 수 있다.
일 실시예에서, 서버(2000)는 컴퓨터 클러스터 내 노드 수에 기초하여, 데이터 서브셋들을 결정할 수 있다. 서버(2000)는 마스터 노드 및 작업자 노드들의 수에 기초하여, 훈련 데이터셋을 분할하여 복수의 데이터 서브셋들을 결정할 수 있다. 이 경우, 하나의 데이터 서브셋이 하나의 노드에 대응될 수 있다.
서버(2000)는 훈련 데이터셋 내 훈련 데이터들을 인덱싱하고, 인덱스 번호에 기초하여 데이터 서브셋들이 구별되도록 함으로써 데이터 서브셋들을 결정할 수 있다. 예를 들어, 제1 데이터 서브셋에는 인덱스 번호 1 내지 25의 훈련 데이터가 포함되고, 제2 데이터 서브셋에는 인덱스 번호 26 내지 50의 훈련 데이터가 포함될 수 있다. 동일한 인덱스 번호를 갖는 데이터는 복수개일 수 있다. 예를들어, 동일한 인덱스 번호를 갖는 데이터가 복수개라 함은, 서버(2000)가 배치(batch) 사이즈를 기준으로 복수의 훈련 데이터들을 동일한 인덱스 번호로 인덱싱하는 것을 말한다. 서버(2000)는, 노드가 인공지능 모델을 훈련시킬 때 입력되는 단위인, 데이터들의 그룹인 배치(batch)를 기준으로, 복수의 훈련 데이터들을 동일한 인덱스 번호로 인덱싱할 수 있다. 예를 들어, 배치 사이즈가 10인 경우, 서버(2000)는 훈련 데이터셋 내 훈련 데이터 10개를 인덱스 번호 1로 인덱싱하고, 훈련 데이터셋 내 다른 훈련 데이터 10개를 인덱스 번호 2로 인덱싱할 수 있다.
전술한 예시와 같이, 제1 데이터 서브셋에는 인덱스 번호 1 내지 25의 훈련 데이터가 포함되고, 각각의 인덱스 번호마다 10개의 훈련 데이터가 있으므로, 제1 데이터 서브셋에는 총 250개의 훈련 데이터가 포함될 수 있다.
단계 S230에서, 일 실시예에 따른 서버(2000)는 데이터 서브셋들의 각각에 기초하여 컴퓨터 클러스터 내 노드들의 각각에 저장된 각 인공지능 모델을 훈련시킴으로써, 컴퓨터 클러스터 내 노드들로부터 훈련 결과들을 획득할 수 있다.
일 실시예에서, 서버(2000)는 서버(2000) 내 저장된 인공지능 모델을 복사하여, 복제 인공지능 모델들을 작업자 노드들에 전달할 수 있다. 서버(2000)는 분산 학습을 수행하기 위한 훈련 코드를 실행함으로써, 컴퓨터 클러스터 내 노드들이 노드들 내 저장된 인공지능 모델을 훈련하도록 할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들로부터 훈련 결과들을 획득할 수 있다.
예를 들어, 서버(2000)는 작업자 노드들 중에서 제1 작업자 노드가 제1 데이터 서브셋을 이용하여 제1 작업자 노드 내 저장된 인공지능 모델을 훈련시킴으로써 생성된 제1 훈련 결과를, 제1 작업자 노드로부터 획득할 수 있다. 또한, 서버(2000)는 작업자 노드들 중에서 제2 작업자 노드가 제2 데이터 서브셋을 이용하여 제2 작업자 노드 내 저장된 인공지능 모델을 훈련시킴으로써 생성된 제2 훈련 결과를, 제2 작업자 노드로부터 획득할 수 있다. 또한, 서버(2000)도 마스터 노드로써 분산 학습을 수행하므로, 서버(2000)에 대응되는 데이터 서브셋을 이용하여 서버(2000) 내 저장된 인공지능 모델을 훈련시킴으로써 생성된 마스터 노드의 훈련 결과를 획득할 수 있다.
단계 S240에서, 일 실시예에 따른 서버(2000)는 훈련 결과들에 기초하여 서버(2000)에 저장된 인공지능 모델의 가중치들을 업데이트할 수 있다.
서버(2000)는 컴퓨터 클러스터 내 노드들이 각각 연산을 통해 획득한 그래디언트(gradient)들에 기초하여, 서버(2000)에 저장된 인공지능 모델의 가중치들을 업데이트할 수 있다. 서버(2000)는, 서버(2000)에 저장된 인공지능 모델 및 작업자 노드들에 저장된 인공지능 모델들을 동기화할 수 있다.
단계 S250에서, 일 실시예에 따른 서버(2000)는 컴퓨터 클러스터 내 노드들의 각각에 대하여, 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별할 수 있다.
일 실시예에서, 컴퓨터 클러스터 내 노드들의 훈련 속도는 각각 상이할 수 있다. 서버(2000)는 단계 S240에서 전술한 것과 같이, 클러스터 내 노드들로부터 훈련 결과를 획득하여 서버(2000)에 저장된 인공지능 모델의 가중치를 갱신하므로, 훈련 속도가 가장 느린 노드의 훈련이 끝난 후에 서버(2000)에 저장된 인공지능 모델을 업데이트 할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들 중에서, 다른 노드들보다 훈련 속도가 소정 기준 이상 느린 노드들의 훈련 데이터 수를 감소시키기 위해, 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별할 수 있다.
단계 S260에서, 일 실시예에 따른 서버(2000)는 컴퓨터 클러스터 내 노드들 각각의 연산 시간에 기초하여, 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정할 수 있다.
예를 들어, 제1 작업자 노드의 연산 시간은 제2 작업자 노드의 연산 시간보다 소정 기준 이상 짧은 경우, 서버(2000)는 제1 작업자 노드의 제1 데이터 서브셋에 포함되는 데이터 수와 제2 작업자 노드의 제2 데이터 서브셋에 포함되는 데이터 수를 조정할 수 있다. 예를 들어, 단계 S220에서 전술한 것과 같이, 제1 데이터 서브셋에는 인덱스 번호 1 내지 25의 훈련 데이터가 포함되고, 제2 데이터 서브셋에는 인덱스 번호 26 내지 50의 훈련 데이터가 포함될 수 있다. 서버(2000)는 제1 데이터 서브셋에 인덱스 번호 1 내지 26의 훈련 데이터가 포함되고, 제2 데이터 서브셋에는 인덱스 번호 27 내지 50의 훈련 데이터가 포함되도록 데이터 서브셋들 간의 데이터 수를 조정함으로써, 제1 작업자 노드가 더 많은 훈련 데이터의 연산을 수행하도록 할 수 있다.
도 3은 본 개시의 일 실시예에 따른 서버가 복수의 노드들 중에서 작업자 노드들을 선택하여, 컴퓨터 클러스터를 구축하는 방법을 설명하기 위한 도면이다.
일 실시예에서, 서버(2000)는 복수의 노드들(310) 중에서, 분산 학습에 이용 가능한 노드들(315)을 식별할 수 있다. 이용 가능한 노드는, 다른 작업을 수행 중이지 않은 유휴 노드이거나, 분산 학습을 수행할 수 있는 여유 컴퓨팅 자원이 있는 노드일 수 있다. 서버(2000)는 이용 가능한 노드들(315)을 식별하고, 이용 가능한 노드들(315)의 리스트를 생성할 수 있다. 서버(2000)는 복수의 노드들(310)의 각각의 노드가 작업 수행 중인지 여부에 따라, 이용 가능한 노드를 다시 식별하고, 이용 가능한 노드들(315)의 리스트를 갱신할 수 있다.
일 실시예에서, 서버(2000)는 이용 가능한 노드들(315) 중에서, 분산 학습을 수행할 작업자 노드들(320)을 선택할 수 있다. 예를 들어, 서버(2000)는 이용 가능한 노드들(315) 모두를 작업자 노드들(320)로 선택할 수 있다. 다른 예에서, 서버(2000)는 이용 가능한 노드들(315) 중 일부를 작업자 노드들(320)로 선택할 수 있다. 서버(2000)는 이용 가능한 노드들(315) 중에서 적어도 일부의 작업자 노드들(320)을 선택함으로써, 서버(2000)를 마스터 노드로 하는 컴퓨터 클러스터(300)를 구축할 수 있다. 서버(2000)가 컴퓨터 클러스터(300)를 구축한 경우, 선택된 작업자 노드들(320)은 이용 가능한 노드들(315)의 리스트에서 제외될 수 있다. 서버(2000)는 컴퓨터 클러스터(300) 내 작업자 노드들(320) 중에서, 적어도 일부의 작업자 노드를 컴퓨터 클러스터(300)로부터 제거하고, 이용 가능한 노드들(315) 중에서, 적어도 일부의 노드를 작업자 노드로써 컴퓨터 클러스터(300)에 편입시킴으로써, 컴퓨터 클러스터(300)를 재구축할 수 있다.
도 4는 본 개시의 일 실시예에 따른 서버가 훈련 데이터셋을 분할함으로써 데이터 서브셋들을 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에서, 서버(2000)는 인공지능 모델을 훈련시키기 위한 훈련 데이터셋(400)을 분할함으로써, 복수의 데이터 서브셋들을 결정할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드 수에 기초하여, 훈련 데이터셋(400)을 분할하여 생성할 데이터 서브셋들의 개수를 결정할 수 있다. 예를 들어, 서버(2000)는 컴퓨터 클러스터 내 노드 수만큼 데이터 서브셋들을 생성할 수 있다.
이하에서는, 설명의 편의를 위하여, 컴퓨터 클러스터 내 노드들은 마스터 노드인 서버(2000)와, 제1 작업자 노드, 제2 작업자 노드, 제3 작업자 노드 총 4개의 노드인 경우를 예시로 설명하기로 한다. 다만, 컴퓨터 클러스터 내 노드들의 수는 이에 한정되는 것은 아니다.
일 실시예에서, 서버(2000)는 훈련 데이터셋(400)을 분할하여, 컴퓨터 클러스터 내 노드들의 개수에 대응하도록 데이터 서브셋들을 생성할 수 있다. 예를 들어, 서버(2000)는 훈련 데이터셋(400)을 분할하여, 제1 데이터 서브셋(410), 제2 데이터 서브셋(420), 제3 데이터 서브셋(430) 및 제4 데이터 서브셋(440)을 생성할 수 있다.
이 경우, 데이터 서브셋들(410, 420, 430, 440)의 각각은, 컴퓨터 클러스터 내 노드들의 각각에 대응될 수 있다. 예를 들어, 제1 데이터 서브셋(410)은 제1 작업자 노드에 대응되고, 제2 데이터 서브셋(420)은 제2 작업자 노드에 대응되고, 제3 데이터 서브셋(430)은 제3 작업자 노드에 대응되고, 제4 데이터 서브셋(440)은 서버(2000)에 대응될 수 있다. 컴퓨터 클러스터 내 노드들의 각각은, 대응되는 데이터 서브셋을 이용하여 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다.
서버(2000)가 컴퓨터 클러스터 내 노드들의 각각에 대응하도록 훈련 데이터셋(400)을 분할하는 경우, 서버(2000)는 훈련 데이터셋(400) 내 훈련 데이터들을 인덱싱하고, 각각의 데이터 서브셋들(410, 420, 430, 440)에 포함될 인덱스 번호를 결정함으로써 데이터 서브셋들(410, 420, 430, 440)을 생성할 수 있다. 서버(2000)가 데이터의 인덱스를 이용하여 데이터 서브셋을 구별한 예시는 도 5에서 더 서술하기로 한다.
도 5는 본 개시의 일 실시예에 따른 데이터 서브셋의 데이터 구성을 설명하기 위한 도면이다.
도 5를 참조하면, 일 실시예에 따른 서버(2000)는 훈련 데이터셋 내 훈련 데이터들을 인덱싱하고, 각각의 데이터 서브셋들에 포함될 인덱스 번호를 결정함으로써 데이터 서브셋들을 생성할 수 있다.
일 실시예에서, 서버(2000)가 생성한 복수의 데이터 서브셋들 중 어느 하나인 데이터 서브셋(510)은, N개의 데이터 배치(batch)를 포함할 수 있다. 데이터 배치는, 노드가 인공지능 모델을 훈련시킬 때 입력되는 일 단위인, 데이터들의 그룹을 말한다. 데이터 서브셋(510)에 포함되는 데이터 배치들은, 서버(2000)에 의해 부여된 인덱스 번호를 가질 수 있다.
서버(2000)는 데이터 서브셋(510)에 포함될 인덱스 번호를 결정할 수 있다. 예를 들어, 서버(2000)는 데이터 서브셋(510)에 포함될 인덱스 번호를 인덱스 번호 1 내지 N으로 결정하여, 데이터 서브셋(510)을 생성할 수 있다. 이 경우, 데이터 서브셋(510)은 인덱스 번호 1의 데이터 배치인 데이터 #1(511), 인덱스 번호 2의 데이터 배치인 데이터 #2(512), 인덱스 번호 3의 데이터 배치인 데이터 #3(513), 인덱스 번호 4의 데이터 배치인 데이터 #4(514), ..., 인덱스 번호 N의 데이터 배치인 데이터 #N으로 구성될 수 있다.
전술한 예시와 같이, 하나의 데이터 배치에 포함되어 동일한 인덱스 번호를 갖는 데이터는 복수개일 수 있다. 예를 들어, 동일한 인덱스 번호를 갖는 서로 다른 복수의 데이터들이 하나의 데이터 배치에 포함될 수 있다. 예를 들어, 데이터 #1(511)에는, 복수의 데이터들(530)이 포함될 수 있다. 데이터 배치 내의 복수의 데이터들(530)의 개수는, 배치 사이즈로 지칭될 수 있다.
일 실시예에서, 컴퓨터 클러스터 내 노드(520)(예를 들어, 마스터 노드 또는 작업자 노드)는, 데이터 서브셋(510)에 포함되는 데이터 배치들에 기초하여, 노드(520) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 노드(520)는 데이터 서브셋(510) 내 모든 훈련 데이터들에 대하여 연산을 수행하고 가중치들을 갱신하는, 에폭(epoch)을 수행할 수 있다. 노드(520)는 데이터 배치를 노드(520) 내 저장된 인공지능 모델에 입력하여, 손실(loss)을 출력할 수 있다. 도 5를 참조하면, 데이터 서브셋(510)에 포함되는 데이터 배치의 개수는 N개이므로, 노드(520)는 각각의 데이터 배치마다 연산을 수행하고 손실을 출력하는 과정인, 반복(iteration)을 N회 수행함으로써, 데이터 서브셋(510) 내 모든 훈련 데이터들에 대하여 연산이 수행되면, 노드(520) 내 저장된 인공지능 모델에 대한 훈련의 에폭이 1회 수행되었다고 할 수 있다.
일 실시예에 따른 서버(2000)가 데이터 서브셋들의 데이터 배치 수를 조정할 때, 서버(2000)는 데이터 배치의 배치 사이즈는 유지하면서, 데이터 서브셋의 데이터 배치 수만을 조정할 수 있다.
도 6은 본 개시의 일 실시예에 따른 컴퓨터 클러스터 내 노드들이 데이터 서브셋들을 이용하여 분산 학습을 수행하는 것을 나타낸 도면이다.
도 6을 설명함에 있어서, 컴퓨터 클러스터 내 노드들은 마스터 노드인 서버(2000)와, 제1 작업자 노드(610), 제2 작업자 노드(620) 및 제3 작업자 노드(630) 총 4개의 노드인 경우를 예시로 설명하기로 한다. 다만, 컴퓨터 클러스터 내 노드들의 수는 이에 한정되는 것은 아니다.
일 실시예에서, 서버(2000)는 데이터 서브셋들의 각각이 컴퓨터 클러스터 내 노드들의 각각에 대응하도록 훈련 데이터셋을 분할함으로써, 데이터 서브셋들을 결정할 수 있다. 이는, 도 4 내지 도 5에 대한 설명에서 서술하였으므로, 동일한 설명은 생략한다.
일 실시예에서, 서버(2000)는 훈련 코드를 실행함으로써, 서버(2000) 및 작업자 노드들이 분산 학습을 수행하도록 할 수 있다.
훈련 코드가 실행되는 경우, 서버(2000) 및 제1 내지 제3 작업자 노드들(610, 620, 630)로 구성되는 컴퓨터 클러스터에서, 인공지능 모델의 분산 학습이 수행될 수 있다.
서버(2000)에서 훈련 코드가 실행되면, 서버(2000)로부터 제1 작업자 노드(610)로 훈련 명령이 전달되고, 제1 작업자 노드(610)는 제1 데이터 서브셋(612)을 이용하여 제1 작업자 노드(610) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 서버(2000)는 제1 작업자 노드(610)로부터, 제1 훈련 결과를 획득할 수 있다.
또한, 서버(2000)에서 훈련 코드가 실행되면, 서버(2000)로부터 제2 작업자 노드(620)로 훈련 명령이 전달되고, 제2 작업자 노드(620)는 제2 데이터 서브셋(622)을 이용하여 제2 작업자 노드(620) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 서버(2000)는 제2 작업자 노드(620)로부터, 제2 훈련 결과를 획득할 수 있다.
또한, 서버(2000)에서 훈련 코드가 실행되면, 서버(2000)로부터 제3 작업자 노드(630)로 훈련 명령이 전달되고, 제3 작업자 노드(630)는 제3 데이터 서브셋(632)을 이용하여 제3 작업자 노드(630) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 서버(2000)는 제3 작업자 노드(630)로부터, 제3 훈련 결과를 획득할 수 있다.
서버(2000)에서 훈련 코드가 실행되면, 서버(2000)는 제4 데이터 서브셋(642)을 이용하여 서버(2000) 내 저장된 인공지능 모델을 훈련시킬 수 있다.
서버(2000)는 서버(2000)의 훈련 결과 및 제1 내지 제3 작업자 노드들(610, 620, 630)의 훈련 결과들을 취합하고, 취합된 훈련 결과들에 기초하여 상기 서버(2000)에 저장된 인공지능 모델의 가중치들을 업데이트할 수 있다.
도 7은 본 개시의 일 실시예에 따른 서버가 컴퓨터 클러스터를 운용하여 분산 학습을 수행하는 방법을 설명하기 위한 흐름도이다.
단계 S710에서, 일 실시예에 따른 서버(2000)는 복수의 노드들 중에서 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축할 수 있다. 이는, 도 2의 단계 S210에 대응되므로, 동일한 설명은 생략하기로 한다.
단계 S720에서, 일 실시예에 따른 서버(2000)는 데이터 서브셋들의 각각이 컴퓨터 클러스터 내 노드들의 각각에 대응하도록 훈련 데이터셋을 분할함으로써, 데이터 서브셋들을 결정할 수 있다. 이는, 도 2의 단계 S220에 대응되므로, 동일한 설명은 생략하기로 한다.
단계 S730에서, 일 실시예에 따른 서버(2000)는 컴퓨터 클러스터 내 노드들에게, 데이터 서브셋에 포함되는 데이터 배치들의 데이터 인덱스를 전달 후, 훈련 코드를 실행할 수 있다. 서버(2000)에서 훈련 코드가 실행되면, 서버(2000) 및 작업자 노드들 각각은, 각 노드에 대응하는 데이터 서브셋을 이용하여 각 노드 내 저장된 인공지능 모델의 훈련을 수행할 수 있다.
단계 S740에서, 일 실시예에 따른 서버(2000)는 컴퓨터 클러스터 내 노드들로부터, 소정의 에폭(epoch)마다 출력된 훈련 결과들을 획득할 수 있다. 예를 들어, 서버(2000)는 컴퓨터 클러스터 내 노드들의 각각에서 1회의 에폭이 수행될 때마다, 컴퓨터 클러스터 내 노드들 각각에 저장된 인공지능 모델의 훈련 결과를 획득할 수 있다. 다른 예에서, 서버(2000)는 컴퓨터 클러스터 내 노드들의 각각에서 복수회의 에폭이 수행될 때마다, 컴퓨터 클러스터 내 노드들 각각에 저장된 인공지능 모델의 훈련 결과를 획득할 수 있다.
단계 S730 내지 단계 S740은, 도 2의 단계 S230에 대응될 수 있다.
단계 S750에서, 일 실시예에 따른 서버(2000)는 컴퓨터 클러스터 내 노드들의 훈련 결과들을 취합하여, 서버(2000) 내 저장된 인공지능 모델의 가중치들을 업데이트할 수 있다. 서버(2000)는 서버(2000) 내 저장된 인공지능 모델의 가중치들을 업데이트하고, 작업자 노드들 내 저장된 인공지능 모델들을 서버(2000) 내 저장된 인공지능 모델과 동기화할 수 있다.
단계 S760에서, 일 실시예에 따른 서버(2000)는 컴퓨터 클러스터 내 노드들의 데이터 처리량 및 연산 속도를 식별하여, 각 노드에 대응하는 데이터 서브셋에 포함되는 데이터 배치 인덱스 값을 변경할 수 있다.
일 실시예에서, 서버(2000)는 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 계산할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 컴퓨터 클러스터 내 노드들 각각의 각 연산 시간과 비교할 수 있다. 서버(2000)는 비교 결과에 기초하여, 각 노드에 대응하는 데이터 서브셋에 포함되는 데이터 배치 인덱스 값을 변경할 수 있다.
예를 들어, 제1 작업자 노드의 연산 시간이 컴퓨터 클러스터 내 노드들의 평균 연산 시간보다 긴 경우, 서버(2000)는 제1 작업자 노드의 연산 시간을 감소시키기 위하여, 제1 작업자 노드에 대응되는 제1 데이터 서브셋의 데이터 배치 수가 감소하도록 조정할 수 있다. 즉, 서버(2000)는 연산 속도가 느린 제1 작업자 노드의 데이터 처리량을 감소시킴으로써, 제1 작업자 노드의 연산 시간을 감소시킬 수 있다. 예를 들어, 서버(2000)는 제1 데이터 서브셋에 포함되는 데이터 배치 인덱스가 인덱스 번호 1 내지 25인 경우, 서버(2000)는 제1 데이터 서브셋에 포함되는 데이터 배치 인덱스를 인덱스 번호 1 내지 24로 변경함으로써, 제1 작업자 노드가 데이터 배치 수가 감소된 제1 데이터 서브셋을 이용하여 에폭을 수행하도록 할 수 있다. 이 경우, 서버(2000)는 제1 데이터 서브셋에서 제외된 인덱스 번호 25의 데이터 배치를, 다른 데이터 서브셋(예를 들어, 연산 속도가 빠른 노드에 대응되는 데이터 서브셋)에 포함되도록 조정할 수 있다.
단계 S770에서, 일 실시예에 따른 서버(2000)는 데이터 서브셋의 업데이트된 데이터 배치 인덱스를 컴퓨터 클러스터 내 노드들에게 전달 후, 다음 에폭을 실행할 수 있다. 각각의 데이터 서브셋들에 포함되는 데이터 배치 인덱스가 변경되면, 각각의 노드들은 업데이트된 데이터 배치 인덱스에 기초하여 훈련 데이터를 로드하고, 각각의 노드들 내 저장된 인공지능 모델을 훈련시킬 수 있다.
예를 들어, 제1 데이터 서브셋에 포함되는 데이터 배치 인덱스가 인덱스 번호 1 내지 인덱스 번호 25에서, 인덱스 번호 1 내지 인덱스 번호 24로 변경되면, 제1 작업자 노드는 제1 데이터 서브셋에 포함되는 인덱스 번호 1 내지 인덱스 번호 24의 훈련 데이터들을 로드하고, 제1 작업자 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다.
일 실시예에서, 서버(2000)가 서버(2000) 및 작업자 노드들을 이용하여 서버(2000) 내 저장된 인공지능 모델의분산 학습을 수행하는 과정은, 기 설정된 수의 복수의 에폭으로 구성될 수 있다. 서버(2000)는 한 번 이상의 에폭을 수행한 후, 훈련 데이터 서브셋들 간의 데이터 배치 수를 조정할 수 있다. 서버(2000)는 분산 학습 과정이 종료될 때까지, 단계 S740 내지 S770을 반복하여 수행할 수 있다. 또한, 서버(2000)는 에폭 횟수가 기 설정된 값에 도달하여 마지막 에폭을 수행하는 경우, 단계 S760 내지 S770을 생략할 수 있다.
서버(2000)가 분산 학습 과정의 일부인 에폭을 수행하면서, 데이터 서브셋들 간 데이터 배치 수를 조정하는 방법은, 도 8 내지 도 11에 대한 설명에서 더 서술하기로 한다.
도 8은 분산 학습 과정의 일부인 에폭이 수행됨에 따라, 본 개시의 일 실시예에 따른 서버가 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정하는 방법을 설명하기 위한 도면이다.
도 8을 설명함에 있어서, 컴퓨터 클러스터 내 노드들은 마스터 노드인 서버(2000)와, 제1 작업자 노드, 제2 작업자 노드, 제3 작업자 노드 총 4개의 노드인 경우를 예시로 설명하기로 한다. 다만, 컴퓨터 클러스터 내 노드들의 수는 이에 한정되는 것은 아니다.
일 실시예에서, 서버(2000)는 분산 학습을 수행하기 위한 훈련 코드를 실행함으로써, 컴퓨터 클러스터 내 노드들이 노드들 내 저장된 인공지능 모델을 훈련하도록 할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들로부터 훈련 결과들을 획득할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들로부터 획득한 훈련 결과들에 기초하여 서버(2000)에 저장된 인공지능 모델의 가중치들을 업데이트할 수 있다.
일 실시예에서, 컴퓨터 클러스터 내 노드들의 훈련 속도는 각각 상이할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들의 각각에 대하여, 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들 각각의 연산 시간에 기초하여, 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정할 수 있다. 예를 들어, 서버(2000)는 컴퓨터 클러스터 내 노드들의 각각에서, 노드 내 저장된 인공지능 모델의 훈련 과정인 에폭이 수행된 후, 컴퓨터 클러스터 내 노드들의 각각이 다음 에폭을 수행하기 위한 데이터 서브셋의 데이터 배치 수를 조정할 수 있다. 서버(2000)는, 컴퓨터 클러스터 내 노드들에 대응하는 데이터 서브셋에 포함되는 데이터 배치 수를 계산할 수 있다. 이 경우, 컴퓨터 클러스터 내 어느 한 노드 K에 대응되는 데이터 서브셋의 데이터 배치 수는, 아래의 수학식 1로 표현될 수 있다.
[수학식 1]
Figure PCTKR2022004806-appb-img-000001
여기서,
Figure PCTKR2022004806-appb-img-000002
는 노드 k가 다음 에폭을 수행할 때 노드 k에 할당될 데이터 배치 수(노드 k에 대응되는 데이터 서브셋의 다음 데이터 배치 수),
Figure PCTKR2022004806-appb-img-000003
는 노드 k가 현재 에폭을 수행할 때 할당된 데이터 배치 수(노드 k에 대응되는 데이터 서브셋의 현재 데이터 배치 수),
Figure PCTKR2022004806-appb-img-000004
는 컴퓨터 클러스터 내 노드들의 평균 연산 시간,
Figure PCTKR2022004806-appb-img-000005
는 노드 k가 현재 에폭을 수행할 때 소요된 연산 시간,
Figure PCTKR2022004806-appb-img-000006
는 현재 에폭의 전체 훈련 데이터 수,
Figure PCTKR2022004806-appb-img-000007
는 다음 에폭의 전체 훈련 데이터 수를 말한다.
일 실시예에서, 서버(2000)는 훈련 코드를 실행함으로써, 서버(2000) 및 작업자 노드들이 분산 학습을 수행하도록 할 수 있다.
에폭 1(810)에서, 서버(2000) 및 제1 작업자 노드, 제2 작업자 노드, 제3 작업자 노드는 각각 독립적으로 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다. 예를 들어, 서버(2000)는 서버(2000)의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 서버(2000) 내 저장된 인공지능 모델을 훈련시키고, 제1 작업자 노드는 제1 작업자 노드의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 제1 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제2 작업자 노드는 제2 작업자 노드의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 제2 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제3 작업자 노드는 제3 작업자 노드의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 제3 작업자 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다.
서버(2000)는, 서버(2000) 및 작업자 노드들의 각각이 에폭 1(810)을 수행하는데 소요된 연산 시간을 식별할 수 있다. 예를 들어 서버(2000)는, 서버(2000)가 에폭 1(810)을 수행하는 데 소요된 연산 시간은 100초, 제1 작업자 노드가 에폭 1(810)을 수행하는 데 소요된 연산 시간은 120초, 제2 작업자 노드가 에폭 1(810)을 수행하는 데 소요된 연산 시간은 130초, 제3 작업자 노드가 에폭 1(810)을 수행하는 데 소요된 연산 시간은 190초임을 식별할 수 있다.
서버(2000)는, 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 계산할 수 있다. 예를 들어 서버(2000)는, 서버(2000) 및 작업자 노드들의 각각이 에폭 1(810)을 수행하는데 소요된 연산 시간의 평균이 135초임을 계산할 수 있다.
서버(2000)는 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 컴퓨터 클러스터 내 노드들 각각의 각 연산 시간과 비교할 수 있다. 예를 들어 서버(2000)는, 서버(2000), 제1 작업자 노드 및 제2 작업자 노드의 연산 시간은 평균 연산 시간 보다 짧고, 제3 작업자 노드의 연산 시간은 평균 연산 시간 보다 김을 식별할 수 있다.
서버(2000)는 비교 결과에 기초하여, 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정할 수 있다. 예를 들어, 서버(2000)는 평균 연산 시간보다 연산 시간이 긴 노드에 대응되는 데이터 서브셋의 일부 데이터 배치를 평균 연산 시간보다 연산 시간이 짧은 노드에 대응되는 데이터 서브셋에 포함되도록 조정할 수 있다. 이 경우, 서버(2000)는 평균 연산 시간과 각 노드의 연산 시간의 비교 결과를 임계 값과 비교하고, 비교 결과가 임계값 이상인 경우에만 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정할 수 있다.
예를 들어, 서버(2000)는 수학식 1을 이용하여 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정할 수 있다. 서버(2000)는 서버(2000)의 데이터 서브셋에 포함되는 데이터 배치 수는 33개, 제1 작업자 노드의 데이터 서브셋에 포함되는 데이터 배치 수는 28개, 제2 작업자 노드의 데이터 서브셋에 포함되는 데이터 배치 수는 25개, 제3 작업자 노드의 데이터 서브셋에 포함되는 데이터 배치 수는 14개로 조정할 수 있다.
일 실시예에서, 현재 에폭 대비 다음 에폭에서 사용되는 훈련 데이터셋의 데이터 배치 개수가 변경되는 경우, 서버(2000)는 현재 에폭의 전체 데이터 수 대비 다음 에폭의 전체 데이터 수의 비율을 적용하여, 데이터 서브셋에 포함되는 데이터 배치 수를 결정할 수 있다.
에폭 2(820)에서, 서버(2000) 및 제1 작업자 노드, 제2 작업자 노드, 제3 작업자 노드는 각각 데이터 배치 수가 조정된 데이터 서브셋을 이용하여 에폭 2(820)를 수행할 수 있다. 서버(2000)는 서버(2000)의 데이터 서브셋(데이터 배치 수:33개)을 이용하여 서버(2000) 내 저장된 인공지능 모델을 훈련시키고, 제1 작업자 노드는 제1 작업자 노드의 데이터 서브셋(데이터 배치 수:28개)을 이용하여 제1 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제2 작업자 노드는 제2 작업자 노드의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 제2 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제3 작업자 노드는 제3 작업자 노드의 데이터 서브셋(데이터 배치 수:14개)을 이용하여 제3 작업자 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다.
서버(2000)는 에폭 2(820)을 수행한 후에, 서버(2000) 및 작업자 노드들의 각각이 에폭 2(820)를 수행하는데 소요된 연산 시간을 식별할 수 있다. 또한, 서버(2000)는 서버(2000) 및 작업자 노드들의 각각이 에폭 2(820)를 수행하는데 소요된 연산 시간의 평균을 계산할 수 있다. 서버(2000)는 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 컴퓨터 클러스터 내 노드들 각각의 각 연산 시간과 비교하고, 비교 결과에 기초하여 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정할 수 있다.
서버(2000) 및 작업자 노드들은 데이터 배치 수가 조정된 데이터 서브셋들을 이용하여 에폭 3(830)을 수행하고, 전술한 실시예들에 따라 데이터 서브셋들 각각에 포함되는 데이터 배치 수를 조정할 수 있다.
에폭 3(830)이 수행된 후에, 서버(2000)는 전술한 실시예들에 따라 데이터 서브셋들 각각에 포함되는 데이터 배치 수를 조정하고, 에폭 4(840)를 수행할 수 있다. 서버(2000)는 분산 학습 과정이 종료될 때까지, 데이터 서브셋들 각각에 포함되는 데이터 배치 수를 조정하고 다음 에폭을 수행하는 동작을 반복할 수 있다.
일 실시예에 따른 서버(2000)가 수행하는 분산 학습 과정의 일부인, 에폭 1(810) 및 에폭 2(820)의 실행을 나타내는 블록 850은 도 9에서 더 설명하기로 한다. 또한, 일 실시예에 따른 서버(2000)가 분산 학습을 수행할 때, 제1 작업자 노드의 의한 에폭 1(810) 내지 에폭 4(840)의 실행을 나타내는 블록 860은 도 10에서 더 설명하기로 한다.
도 9는 도 8을 더 설명하기 위한 도면으로, 분산 학습 과정의 일부인, 컴퓨터 클러스터 내 노드들에 의한 에폭 1 및 에폭 2의 실행을 나타내는 도면이다.
도 9를 참조하면, 도 9의 에폭 1 및 에폭 2는 도 8의 에폭 1(810) 및 에폭 2(820)의 실행을 나타내는 블록 850에 대응될 수 있다.
일 실시예에 따른 서버(2000)는, 에폭 1을 수행한 후, 각각의 노드들로부터 각각의 노드 내 저장된 인공지능 모델을 훈련시킨 결과들을 취합하여, 서버(2000) 내 저장된 인공지능 모델의 가중치들을 업데이트할 수 있다. 서버(2000)는 서버 내 저장된 인공지능 모델의 가중치들을 업데이트하고, 작업자 노드들 내 저장된 인공지능 모델들을 서버 내 저장된 인공지능 모델과 동기화할 수 있다.
일 실시예에서, 서버(2000)의 데이터 서브셋(950)은 인덱스 번호 1 내지 인덱스 번호 25의 데이터 배치들로 구성될 수 있다. 서버(2000)는 서버(2000)의 데이터 서브셋(950)을 이용하여, 서버(2000) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 서버(2000)는 서버(2000)의 데이터 서브셋(950) 내 모든 데이터 배치들에 대한 연산을 수행하는, 에폭 1을 수행할 수 있다.
일 실시예에서, 제1 작업자 노드(910)의 데이터 서브셋(912)(이하, 제1 데이터 서브셋)은 인덱스 번호 26 내지 인덱스 번호 50의 데이터 배치들로 구성될 수 있다. 제1 작업자 노드(910)는 제1 데이터 서브셋(912)을 이용하여, 제1 작업자 노드(910) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 제1 작업자 노드(910)는 제1 데이터 서브셋(912) 내 모든 데이터 배치들에 대한 연산을 수행하는, 에폭 1을 수행할 수 있다.
일 실시예에서, 제2 작업자 노드(920)의 데이터 서브셋(922)(이하, 제2 데이터 서브셋)은 인덱스 번호 51 내지 인덱스 번호 75의 데이터 배치들로 구성될 수 있다. 제2 작업자 노드(920)는 제2 데이터 서브셋(922)을 이용하여, 제2 작업자 노드(920) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 제2 작업자 노드(920)는 제2 데이터 서브셋(922) 내 모든 데이터 배치들에 대한 연산을 수행하는, 에폭 1을 수행할 수 있다.
일 실시예에서, 제3 작업자 노드(930)의 데이터 서브셋(932)(이하, 제3 데이터 서브셋)은 인덱스 번호 76 내지 인덱스 번호 100의 데이터 배치들로 구성될 수 있다. 제3 작업자 노드(930)는 제3 데이터 서브셋(932)을 이용하여, 제3 작업자 노드(930) 내 저장된 인공지능 모델을 훈련시킬 수 있다. 제3 작업자 노드(930)는 제3 데이터 서브셋(932) 내 모든 데이터 배치들에 대한 연산을 수행하는, 에폭 1을 수행할 수 있다.
서버(2000)는 에폭 1을 수행한 후, 각각의 노드들의 데이터 처리량 및 연산 속도를 식별하여, 각 노드에 대응하는 데이터 서브셋에 포함되는 데이터 배치 인덱스 값을 변경할 수 있다.
예를 들어, 데이터 서브셋들에 포함되는 데이터 배치가 조정된 결과, 서버(2000)의 업데이트된 데이터 서브셋(952)은 인덱스 번호 1 내지 인덱스 번호 33의 데이터 배치들로 구성되고, 업데이트된 제1 데이터 서브셋(914)은 인덱스 번호 34 내지 인덱스 번호 61의 데이터 배치들로 구성되고, 업데이트된 제2 데이터 서브셋(924)은 인덱스 번호 62 내지 인덱스 번호 86의 데이터 배치들로 구성되고, 업데이트된 제3 데이터 서브셋(934)은 인덱스 번호 87 내지 인덱스 번호 100의 데이터 배치들로 구성될 수 있다.
일 실시예에 따른 서버(2000)는, 서버(2000) 및 작업자 노드들이 데이터 배치 수가 조정된 데이터 서브셋을 이용하여 에폭 2를 수행하도록 할 수 있다. 이 경우, 서버(2000)는 서버(2000)의 업데이트된 데이터 서브셋(952)을 이용하여 서버(2000) 내 인공지능 모델을 훈련시킬 수 있다. 또한, 제1 작업자 노드(910)는 업데이트된 제1 데이터 서브셋(914)을 이용하여 제1 작업자 노드(910) 내 인공지능 모델을 훈련시킬 수 있다. 또한, 제2 작업자 노드(920)는 업데이트된 제2 데이터 서브셋(924)을 이용하여 제2 작업자 노드(920) 내 인공지능 모델을 훈련시킬 수 있다. 또한, 제3 작업자 노드(930)는 업데이트된 제3 데이터 서브셋(934)을 이용하여 제3 작업자 노드(930) 내 인공지능 모델을 훈련시킬 수 있다.
서버(2000)는, 에폭 2을 수행한 후, 각각의 노드들로부터 각각의 노드 내 저장된 인공지능 모델을 훈련시킨 결과들을 취합하여, 서버(2000) 내 저장된 인공지능 모델의 가중치들을 업데이트할 수 있다. 서버(2000)는 서버 내 저장된 인공지능 모델의 가중치들을 업데이트하고, 작업자 노드들 내 저장된 인공지능 모델들을 서버 내 저장된 인공지능 모델과 동기화할 수 있다.
도 10은 도 8을 더 설명하기 위한 도면으로, 분산 학습 과정의 일부인, 제1 작업자 노드에 의한 에폭 1 내지 에폭 4의 실행을 나타내는 도면이다.
도 10을 참조하면, 도 10의 제1 작업자 노드(1000)의 에폭 1 내지 에폭 4(1010 내지 1040)는 도 8의 제1 작업자 노드의 의한 에폭 1(810) 내지 에폭 4(840)의 실행을 나타내는 블록 860에 대응될 수 있다.
에폭 1(1010)에서, 제1 작업자 노드(1000)는 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는, 인덱스 번호 1 내지 인덱스 번호 25의 데이터 배치들에 대하여 연산을 수행할 수 있다. 제1 작업자 노드(1000)는 인덱스 번호 1 내지 인덱스 번호 25의 데이터 배치들을 훈련시킨 에폭 1(1010)의 결과를 서버(2000)로 전송할 수 있다. 서버(2000)는 제1 작업자 노드(1000)의 에폭 1(1010)의 연산 속도를 식별하고, 전술한 실시예들에 따라 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는 데이터 배치 수를 조정할 수 있다. 예를 들어, 에폭 1(1010) 수행 결과, 제1 작업자 노드(1000)의 연산 속도는 컴퓨터 클러스터 내 노드들의 평균 연산 속도보다 빠를 수 있다. 이 경우, 서버(2000)는 제1 작업자 노드(1000)가 다른 노드들에 비해 더 많은 데이터를 처리하도록, 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는 데이터 배치 수를 증가시킬 수 있다.
에폭 2(1020)에서, 제1 작업자 노드(1000)는 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는, 인덱스 번호 1 내지 인덱스 번호 28의 데이터 배치들에 대하여 연산을 수행할 수 있다. 이 때, 제1 작업자 노드(1000)의 데이터 서브셋은 에폭 1(1010)의 결과에 기초하여 업데이트된 것이다. 제1 작업자 노드(1000)는 인덱스 번호 1 내지 인덱스 번호 28의 데이터 배치들을 훈련시킨 에폭 2(1020)의 결과를 서버(2000)로 전송할 수 있다. 서버(2000)는 제1 작업자 노드(1000)의 에폭 2(1020)의 연산 속도를 식별하고, 전술한 실시예들에 따라 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는 데이터 배치 수를 조정할 수 있다. 예를 들어, 에폭 2(1010) 수행 결과, 제1 작업자 노드(1000)의 연산 속도는 컴퓨터 클러스터 내 노드들의 평균 연산 속도보다 느릴 수 있다. 이 경우, 서버(2000)는 제1 작업자 노드(1000)가 다른 노드들에 비해 더 적은 데이터를 처리하도록, 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는 데이터 배치 수를 감소시킬 수 있다.
에폭 3(1030)에서, 제1 작업자 노드(1000)는제1 작업자 노드(1000)의 데이터 서브셋에 포함되는, 인덱스 번호 1 내지 인덱스 번호 27의 데이터 배치들에 대하여 연산을 수행할 수 있다. 이 때, 제1 작업자 노드(1000)의 데이터 서브셋은 에폭 2(1020)의 결과에 기초하여 업데이트된 것이다. 제1 작업자 노드(1000)는 인덱스 번호 1 내지 인덱스 번호 27의 데이터 배치들을 훈련시킨 에폭 3(1030)의 결과를 서버(2000)로 전송할 수 있다. 서버(2000)는 제1 작업자 노드(1000)의 에폭 3(1030)의 연산 속도를 식별하고, 전술한 실시예들에 따라 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는 데이터 배치 수를 조정할 수 있다.
에폭 4(1040)에서, 제1 작업자 노드(1000)는 에폭 3(1030)의 결과에 기초하여 업데이트된 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는, 인덱스 번호 1 내지 인덱스 번호 27의 데이터 배치들에 대하여 연산을 수행할 수 있다. 제1 작업자 노드(1000)는 인덱스 번호 1 내지 인덱스 번호 27의 데이터 배치들을 훈련시킨 에폭 4(1040)의 결과를 서버(2000)로 전송할 수 있다. 서버(2000)는 제1 작업자 노드(1000)의 에폭 4(1040)의 연산 속도를 식별하고, 전술한 실시예들에 따라 제1 작업자 노드(1000)의 데이터 서브셋에 포함되는 데이터 배치 수를 조정할 수 있다.
일 실시예에서, 데이터 서브셋에 포함되며, 인덱스 번호로 구별되는 데이터 배치는, 전술한 것과 같이 복수개의 훈련 데이터들을 포함할 수 있다. 예를 들어, 배치 사이즈가 10인 경우, 인덱스 번호 1의 데이터 배치는, 10개의 훈련 데이터들로 구성될 수 있다. 서버(2000)는 클러스터 내 노드들을 이용하여 분산 학습을 수행할 때, 클러스터 내 노드들의 각각에 대하여 설정된 배치 사이즈는 유지하면서, 데이터 배치의 개수를 조정함으로써, 노드들 간 연산 속도를 평준화하여, 분산 학습의 속도를 증가시킬 수 있다.
도 11은 분산 학습 과정의 일부인 에폭이 수행됨에 따라, 본 개시의 일 실시예에 따른 서버가 데이터 서브셋들의 각각에 포함되는 데이터 배치 수를 조정하는 다른 방법을 설명하기 위한 도면이다.
일 실시예에서, 서버(2000)는 컴퓨터 클러스터 내 노드들 중에서, 연산 시간이 가장 긴 노드를 식별할 수 있다. 서버(2000)는 연산 시간이 가장 긴 노드에 대응되는 데이터 서브셋의 일부 데이터를 컴퓨터 클러스터 내 다른 노드들에 대응되는 데이터 서브셋들에 포함되도록 조정할 수 있다.
일 실시예에서, 서버(2000)는 훈련 코드를 실행함으로써, 서버(2000) 및 작업자 노드들이 분산 학습을 수행하도록 할 수 있다.
에폭 1(1110)에서, 서버(2000) 및 제1 작업자 노드, 제2 작업자 노드, 제3 작업자 노드는 각각 독립적으로 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다. 예를 들어, 에폭 1(1110)이 수행될 때, 서버(2000)는 서버(2000)의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 서버(2000) 내 저장된 인공지능 모델을 훈련시키고, 제1 작업자 노드는 제1 작업자 노드의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 제1 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제2 작업자 노드는 제2 작업자 노드의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 제2 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제3 작업자 노드는 제3 작업자 노드의 데이터 서브셋(데이터 배치 수:25개)을 이용하여 제3 작업자 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다.
서버(2000)는, 서버(2000) 및 제1, 제2, 제3 작업자 노드들의 각각이 에폭 1(1110)을 수행하는데 소요된 연산 시간을 식별하고, 연산 시간이 가장 긴 노드를 식별할 수 있다. 예를 들어, 에폭 1(1110) 수행 결과, 서버(2000)는 연산 시간이 가장 긴 제3 작업자 노드를 식별할 수 있다. 서버(2000)는 연산 시간이 가장 긴 제3 작업자 노드의 데이터 서브셋에 포함되는 데이터 배치 일부를 다른 작업자 노드들의 데이터 서브셋들에 포함되도록 조정할 수 있다.
예를 들어, 서버(2000)는, 제3 작업자 노드의 데이터 서브셋에 포함되는 데이터 수를 22개로 감소시키고, 서버(2000)의 데이터 서브셋에 포함되는 데이터 배치 수를 26개, 제1 작업자 노드의 데이터 서브셋에 포함되는 데이터 배치 수를 26개, 제2 작업자 노드의 데이터 서브셋에 포함되는 데이터 배치 수를 26개로 증가시킬 수 있다.
이 경우, 서버(2000)는 각 작업자 노드에 대응하는 데이터 서브셋에 포함되는 데이터 배치 인덱스 값을 변경함으로써 데이터 배치 수를 조정할 수 있다. 예를 들어 서버(2000)는, 서버(2000)의 데이터 서브셋은 인덱스 번호 1 내지 인덱스 번호 26의 데이터 배치들로 구성하고, 제1 작업자 노드의 데이터 서브셋은 인덱스 번호 27 내지 인덱스 번호 52의 데이터 배치들로 구성하고, 제2 작업자 노드의 데이터 서브셋은 인덱스 번호 53 내지 인덱스 번호 78의 데이터 배치들로 구성하고, 제3 작업자 노드의 데이터 서브셋은 인덱스 번호 79 내지 인덱스 번호 100의 데이터 배치들로 구성할 수 있다.
일 실시예에 따른 서버(2000)는, 서버(2000) 및 작업자 노드들이 데이터 배치 수가 조정된 데이터 서브셋을 이용하여 에폭 2(1120)를 수행하도록 할 수 있다.
예를 들어, 에폭 2(1120)가 수행될 때, 서버(2000)는 서버(2000)의 업데이트된 데이터 서브셋(데이터 배치 수:26개)을 이용하여 서버(2000) 내 저장된 인공지능 모델을 훈련시키고, 제1 작업자 노드는 업데이트된 제1 작업자 노드의 데이터 서브셋(데이터 배치 수:26개)을 이용하여 제1 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제2 작업자 노드는 업데이트된 제2 작업자 노드의 데이터 서브셋(데이터 배치 수:26개)을 이용하여 제2 작업자 노드 내 저장된 인공지능 모델을 훈련시키고, 제3 작업자 노드는 업데이트된 제3 작업자 노드의 데이터 서브셋(데이터 배치 수:22개)을 이용하여 제3 작업자 노드 내 저장된 인공지능 모델을 훈련시킬 수 있다.
일 실시예에 따른 서버(2000)는, 전술한 방법들을 이용하여, 에폭이 수행될 때마다 연산 시간이 가장 긴 노드를 식별할 수 있다. 서버(2000)는 에폭이 수행될 때마다 연산 시간이 가장 긴 노드에 대응되는 데이터 서브셋의 일부 데이터를 컴퓨터 클러스터 내 다른 노드들에 대응되는 데이터 서브셋들에 포함되도록 조정함으로써, 에폭 3(1130), 에폭 4(1140), 에폭 5(1150)을 수행할 수 있다.
도 12는 본 개시의 일 실시예에 따른 서버가 훈련 데이터셋을 분할함으로써 데이터 서브셋들을 결정하는 다른 방법을 설명하기 위한 도면이다.
일 실시예에서, 서버(2000)는 컴퓨터 클러스터의 마스터 노드의 역할을 수행하므로, 서버 내 저장된 인공지능 모델을 훈련시키는 것 외에, 컴퓨터 클러스터에 포함되는 작업자 노드들의 관리를 위한 다른 작업들을 수행할 수 있다. 따라서, 서버(2000)는 서버(2000)에 대응되는 데이터 서브셋의 데이터 수를 더 적게 할당할 수 있다.
일 실시예에서, 서버(2000)는 훈련 데이터셋(1200)을 분할하여, 컴퓨터 클러스터 내 노드들의 개수에 대응하도록 데이터 서브셋들을 생성할 수 있다. 예를 들어, 서버(2000)는 훈련 데이터셋(1200)을 분할하여, 제1 데이터 서브셋(1210), 제2 데이터 서브셋(1220), 제3 데이터 서브셋(1230) 및 제4 데이터 서브셋(1240)을 생성할 수 있다. 제1, 제2, 제3, 제4 데이터 서브셋들(1210, 1220, 1230, 1240)의 각각은, 컴퓨터 클러스터 내 노드들의 각각에 대응될 수 있다. 예를 들어, 제1 데이터 서브셋(1210)은 제1 작업자 노드(1212)에 대응되고, 제2 데이터 서브셋(1220)은 제2 작업자 노드(1222)에 대응되고, 제3 데이터 서브셋(1230)은 제3 작업자 노드(1232)에 대응되고, 제4 데이터 서브셋(1240)은 서버(2000)에 대응될 수 있다.
일 실시예에 따른 서버(2000)는 제4 데이터 서브셋(1240)에 포함되는 데이터 배치 수가 다른 제1 데이터 서브셋 내지 제3 데이터 서브셋(1210, 1220, 1230)에 포함되는 데이터 배치 수보다 적도록, 훈련 데이터 셋(1200)을 분할할 수 있다. 서버(2000)가 훈련 데이터셋(1200)을 분할하여 데이터 서브셋들을 생성하는 구체적인 방법들은 전술하였으므로, 동일한 설명은 생략한다.
도 13은 일 실시예에 따른 서버가 컴퓨터 클러스터를 운용하여 분산 학습을 수행하는 다른 방법을 설명하기 위한 흐름도이다.
도 13을 설명함에 있어서, 컴퓨터 클러스터(1300) 내 노드들은 마스터 노드인 서버(2000)와, 제1 작업자 노드(1310), 제2 작업자 노드(1320), 제3 작업자 노드(1330) 총 4개의 노드인 경우를 예시로 설명하기로 한다. 다만, 컴퓨터 클러스터(1300) 내 노드들의 수는 이에 한정되는 것은 아니다.
일 실시예에 따른 서버(2000)는, 컴퓨터 클러스터(1300) 내 노드들의 연산 속도를 식별할 수 있다. 서버(2000)는 컴퓨터 클러스터(1300) 내 노드들 각각의 연산 시간에 기초하여, 컴퓨터 클러스터(1300) 내 노드들 중에서 하나 이상의 작업자 노드를 선택할 수 있다.
예를 들어, 서버(2000)는 컴퓨터 클러스터(1300) 내 노드들 중에서, 연산 시간이 가장 긴 노드를 선택할 수 있다. 예를 들어, 제1 작업자 노드(1310)의 연산 시간이 가장 긴 경우, 서버(2000)는 연산 시간이 가장 긴 노드인 제1 작업자 노드(1310)를 선택할 수 있다.
일 실시예에 따른 서버(2000)는 선택된 하나 이상의 작업자 노드를 컴퓨터 클러스터(1300)로부터 제거하고, 하나 이상의 다른 노드를 작업자 노드로써 컴퓨터 클러스터(1300)에 편입시킬 수 있다. 서버(2000)는 이용 가능한 노드들의 리스트에서 이용 가능한 노드를 작업자 노드로 선택하여, 컴퓨터 클러스터(1300)에 편입시킬 수 있다. 예를 들어, 서버(2000)는 이용 가능한 노드들의 리스트에서 이용 가능한 다른 노드인 제9 작업자 노드(1390)를 선택하여, 제9 작업자 노드(1390)를 컴퓨터 클러스터(1300)로 편입시킬 수 있다.
일 실시예에 따른 서버(2000)는 분산 학습 과정의 일부인 에폭이 소정 횟수(예를 들어, 1회 또는 2회) 이상 수행될 때마다, 컴퓨터 클러스터(1300) 내 노드들 중에서 하나 이상의 작업자 노드를 선택할 수 있다. 서버(2000)는 선택된 하나 이상의 작업자 노드를 컴퓨터 클러스터(1300)에서 제외시키고, 이용 가능한 하나 이상의 다른 노드를 작업자 노드로써 컴퓨터 클러스터(1300)에 편입시킬 수 있다.
개시된 실시예들에서, 서버(2000)가 컴퓨터 클러스터를 이용하여 분산 학습을 수행함에 있어서, 서버(2000)는 데이터 서브셋의 데이터 수를 조정하거나, 작업자 노드를 교체하면서 분산 학습의 속도를 증가시킬 수 있다. 서버(2000)는 분산 학습 과정의 에폭이 소정 횟수 수행될 때마다, 데이터 서브셋의 데이터 수를 조정하거나, 작업자 노드를 교체하거나, 데이터 서브셋의 데이터 수 조정 및 작업자 노드의 교체를 조합하여 분산 학습을 수행할 수 있다.
도 14는 일 실시예에 따른 서버의 구성을 나타낸 블록도이다.
도 14를 참조하면, 일 실시예에 따른 서버(2000)는 통신 인터페이스(예를 들어, 통신 회로를 포함)(2100), 메모리(2200) 및 프로세서(예를 들어, 프로세싱 회로를 포함)(2300)를 포함할 수 있다.
통신 인터페이스(2100)는 프로세서(2300)의 제어에 의해 컴퓨터 클러스터의 다른 노드들과 데이터 통신을 수행할 수 있다. 또한, 통신 인터페이스(2100)는 컴퓨터 클러스터의 다른 노드들 뿐 아니라, 다른 주변 전자 장치들과도 데이터 통신을 수행할 수 있다.
통신 인터페이스(2100)는 예를 들어, 유선 랜, 무선 랜(Wireless LAN), 와이파이(Wi-Fi), 블루투스(Bluetooth), 지그비(zigbee), WFD(Wi-Fi Direct), 적외선 통신(IrDA, infrared Data Association), BLE (Bluetooth Low Energy), NFC(Near Field Communication), 와이브로(Wireless Broadband Internet, Wibro), 와이맥스(World Interoperability for Microwave Access, WiMAX), SWAP(Shared Wireless Access Protocol), 와이기그(Wireless Gigabit Allicance, WiGig) 및 RF 통신을 포함하는 데이터 통신 방식 중 적어도 하나를 이용하여 컴퓨터 클러스터 내 다른 노드들 또는 다른 주변 전자 장치들과 데이터 통신을 수행할 수 있다.
일 실시예에 따른 통신 인터페이스(2100)는 분산 학습을 수행하기 위한 명령을 컴퓨터 클러스터 내 노드들에게 전달하고, 컴퓨터 클러스터 내 노드들로부터 분산 학습 결과를 수신할 수 있다. 통신 인터페이스(2100)는 컴퓨터 클러스터 내 노드들의 각각에 저장된 인공지능 모델을 동기화하기 위한 데이터를 컴퓨터 클러스터 내 노드들로 전송할 수 있다.
메모리(2200)는 프로세서(2300)가 판독할 수 있는 명령어들, 데이터 구조, 및 프로그램 코드(program code)가 저장될 수 있다. 개시된 실시예들에서, 프로세서(2300)가 수행하는 동작들은 메모리(2200)에 저장된 프로그램의 명령어들 또는 코드들을 실행함으로써 구현될 수 있다.
메모리(2200)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나를 포함하는 비휘발성 메모리 및 램(RAM, Random Access Memory) 또는 SRAM(Static Random Access Memory)과 같은 휘발성 메모리를 포함할 수 있다.
일 실시예에 따른 메모리(2200)는 컴퓨터 클러스터가 분산 학습을 수행하는데 이용될 수 있는 다양한 종류의 데이터를 저장할 수 있다. 예를 들어, 메모리(2200)에는 분산 학습 모듈(2210), 작업자 노드 관리 모듈(2220), 훈련 데이터 관리 모듈(2230), 인공지능 모델(2240), 훈련 데이터셋(2250)이 저장될 수 있다. 각각의 상기 모듈들은 다양한 프로세싱 회로 및/또는 실행 가능한 인스트럭션들을 포함할 수 있다.
프로세서(2300)는 다양한 프로세싱 회로를 포함하며, 서버(2000)의 전반적인 동작들을 제어할 수 있다. 예를 들어, 프로세서(2300)는 메모리(2200)에 저장된 프로그램의 하나 이상의 명령어들(instructions)을 실행함으로써, 서버(2000)가 컴퓨터 클러스터를 이용하여 분산 학습을 수행하기 위한 전반적인 동작을 제어할 수 있다.
프로세서(2300)는 예를 들어, 중앙 처리 장치(Central Processing Unit), 마이크로 프로세서(microprocessor), 그래픽 프로세서(Graphic Processing Unit), ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), AP(Application Processor), 뉴럴 프로세서(Neural Processing Unit) 또는 인공지능 모델의 처리에 특화된 하드웨어 구조로 설계된 인공지능 전용 프로세서 중 적어도 하나로 구성될 수 있으나, 이에 제한되는 것은 아니다.
일 실시예에서, 프로세서(2300)는 분산 학습 모듈(2210)을 이용하여, 인공지능 모델(2240)을 훈련시킬 수 있다. 분산 학습 모듈(2210)은 분산 학습을 위한 훈련 코드를 실행시킴으로써, 컴퓨터 클러스터 내 노드들이 각각 독립적으로 훈련을 수행하도록 할 수 있다. 이 경우, 분산 학습 모듈(2210)은 컴퓨터 클러스터 내 노드들에서 각각 독립적으로 훈련을 수행하기 위해, 인공지능 모델(2240)을 복사하여 복제 인공지능 모델들을 생성할 수 있다. 분산 학습 모듈(2210)은 컴퓨터 클러스터 내 노드들로부터 노드들의 각각에 저장된 복제 인공지능 모델들을 훈련시킨 결과인, 훈련 결과들을 획득하고, 인공지능 모델(2240)의 가중치들을 업데이트할 수 있다. 분산 학습 모듈(2210)은 컴퓨터 클러스터 내 노드들의 각각에 저장된 복제 인공지능 모델들을 인공지능 모델(2240)과 동기화할 수 있다.
일 실시예에서, 프로세서(2300)는 작업자 노드 관리 모듈(2220)을 이용하여, 컴퓨터 클러스터 내 작업자 노드들을 관리할 수 있다. 작업자 노드 관리 모듈(2220)은 복수의 노드들 중에서, 분산 학습에 이용 가능한 노드들을 식별할 수 있다. 이용 가능한 노드는, 다른 작업을 수행 중이지 않은 유휴 노드이거나, 분산 학습을 수행할 수 있는 여유 컴퓨팅 자원이 있는 노드일 수 있다. 작업자 노드 관리 모듈(2220)은 이용 가능한 노드들 중에서, 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축할 수 있다. 작업자 노드 관리 모듈(2220)은 이용 가능한 노드들을 식별하고, 이용 가능한 노드들의 리스트를 생성할 수 있다. 작업자 노드 관리 모듈(2220)은 복수의 노드들의 각각의 노드가 작업 수행 중인지 여부에 따라, 이용 가능한 노드를 다시 식별하고, 이용 가능한 노드들의 리스트를 갱신할 수 있다. 작업자 노드 관리 모듈(2220)은 작업자 노드가 작업자 노드 내 저장된 인공지능 모델을 훈련시키는데 소요되는 연산 시간을 식별할 수 있다. 작업자 노드 관리 모듈(2220)은 컴퓨터 클러스터 내 작업자 노드들의 연산 시간 식별 결과에 기초하여, 컴퓨터 클러스터 내 작업자 노드들 중에서, 적어도 일부의 작업자 노드를 컴퓨터 클러스터로부터 제거하고, 이용 가능한 노드들 중에서, 적어도 일부의 노드를 작업자 노드로써 컴퓨터 클러스터에 편입시킴으로써, 컴퓨터 클러스터를 재구축할 수 있다.
일 실시예에서, 프로세서(2300)는 훈련 데이터 관리 모듈(2230)을 이용하여, 훈련 데이터를 관리할 수 있다. 훈련 데이터 관리 모듈(2230)은 인공지능 모델을 훈련시키기 위한 훈련 데이터셋(2250)을 분할함으로써, 복수의 데이터 서브셋들을 결정할 수 있다. 훈련 데이터 관리 모듈(2230)은 컴퓨터 클러스터 내 노드 수에 기초하여, 훈련 데이터셋(2250)을 분할하여 생성할 데이터 서브셋들의 개수를 결정할 수 있다. 구체적으로, 훈련 데이터 관리 모듈(2230)은 컴퓨터 클러스터 내 노드 수만큼 데이터 서브셋들을 생성할 수 있다. 이 경우, 데이터 서브셋들의 각각은, 컴퓨터 클러스터 내 노드들의 각각에 대응될 수 있다. 훈련 데이터 관리 모듈(2230)은 훈련 데이터셋(2250) 내 훈련 데이터들을 인덱싱하고, 각각의 데이터 서브셋들에 포함될 인덱스 번호를 결정함으로써 데이터 서브셋들을 생성할 수 있다. 또한, 훈련 데이터 관리 모듈(2230)은 작업자 노드들의 각각에 대응되는 데이터 서브셋에 포함되는 데이터 수를 조정하기 위하여, 각 노드에 대응하는 데이터 서브셋에 포함되는 데이터 배치 인덱스 값을 변경할 수 있다.
도 14에 도시된 서버(2000)의 블록도는, 일 실시예를 위한 블록도이다. 블록도의 각 구성요소는 실제 구현되는 각 장치의 사양에 따라 통합, 추가 또는 생략될 수 있다. 즉 필요에 따라 2 이상의 구성요소가 하나의 구성요소로 합쳐지거나, 혹은 하나의 구성요소가 2 이상의 구성요소로 세분되어 구성될 수 있다. 각 블록에서 수행하는 기능은 예시적인 실시예들을 설명하기 위한 것이며, 그 구체적인 동작이나 장치는 본 발명의 권리범위를 제한하지 아니한다.
일 실시예에 따른 서버의 동작 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 컴퓨터 판독 가능 매체는, 비일시적(non-transitory) 기록매체의 형태로 제공될 수 있다. 여기서, 비일시적 기록매체는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 기록매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
또한, 개시된 실시예들에 따른 서버의 동작 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다.
컴퓨터 프로그램 제품은 S/W 프로그램, S/W 프로그램이 저장된 컴퓨터로 읽을 수 있는 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 프로그램 제품은 전자 장치의 제조사 또는 전자 마켓(예, 구글 플레이 스토어, 앱 스토어)을 통해 전자적으로 배포되는 S/W 프로그램 형태의 상품(예, 다운로더블 앱)을 포함할 수 있다. 전자적 배포를 위하여, S/W 프로그램의 적어도 일부는 저장 매체에 저장되거나, 임시적으로 생성될 수 있다. 이 경우, 저장 매체는 제조사의 서버, 전자 마켓의 서버, 또는 SW 프로그램을 임시적으로 저장하는 중계 서버의 저장매체가 될 수 있다.
컴퓨터 프로그램 제품은, 서버 및 전자 장치로 구성되는 시스템에서, 서버의 저장매체 또는 전자 장치의 저장매체를 포함할 수 있다. 또는, 서버 또는 전자 장치와 통신 연결되는 제3 장치(예, 스마트폰)가 존재하는 경우, 컴퓨터 프로그램 제품은 제3 장치의 저장매체를 포함할 수 있다. 또는, 컴퓨터 프로그램 제품은 서버로부터 전자 장치 또는 제3 장치로 전송되거나, 제3 장치로부터 전자 장치로 전송되는 S/W 프로그램 자체를 포함할 수 있다.
이 경우, 서버, 전자 장치 및 제3 장치 중 하나가 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 수행할 수 있다. 또는, 서버, 전자 장치 및 제3 장치 중 둘 이상이 컴퓨터 프로그램 제품을 실행하여 개시된 실시예들에 따른 방법을 분산하여 실시할 수 있다.
예를 들면, 서버가 서버에 저장된 컴퓨터 프로그램 제품을 실행하여, 서버와 통신 연결된 전자 장치가 개시된 실시예들에 따른 방법을 수행하도록 제어할 수 있다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (15)

  1. 서버가 분산 학습을 수행하는 방법에 있어서,
    복수의 노드들 중에서 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축하며, 상기 컴퓨터 클러스터 내 노드들은, 마스터 노드인 상기 서버와 상기 작업자 노드들을 포함하는, 단계;
    훈련 데이터셋을 분할함으로써 데이터 서브셋들을 결정하되, 상기 데이터 서브셋들의 각각은 상기 컴퓨터 클러스터 내 노드들의 각각에 대응하는 것인, 단계;
    상기 데이터 서브셋들의 각각에 기초하여 상기 컴퓨터 클러스터 내 노드들의 각각에 저장된 각 인공지능 모델을 훈련시킴으로써, 상기 컴퓨터 클러스터 내 노드들로부터 훈련 결과들을 획득하는 단계;
    상기 훈련 결과들에 기초하여 상기 서버에 저장된 인공지능 모델의 가중치들을 업데이트하는 단계;
    상기 컴퓨터 클러스터 내 노드들의 각각에 대하여, 상기 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별하는 단계; 및
    상기 컴퓨터 클러스터 내 노드들 각각의 연산 시간에 기초하여, 상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 방법은,
    상기 컴퓨터 클러스터 내 노드들의 각각을 이용하여 상기 컴퓨터 클러스터 내 노드들의 각각에 저장된 각 인공지능 모델의 다음 훈련을 수행하되, 상기 컴퓨터 클러스터 내 노드들은, 상기 데이터 수가 조정된 데이터 서브셋들을 이용하여 상기 다음 훈련을 수행하는 것인, 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 컴퓨터 클러스터 내 노드들이 상기 다음 훈련을 수행하는 것에 기초하여, 상기 컴퓨터 클러스터 내 노드들의 각각에 대하여 설정된 배치 사이즈가 유지되는 것인, 방법.
  4. 제1항에 있어서,
    상기 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 결정하는 단계를 더 포함하고,
    상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는 단계는,
    상기 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 상기 컴퓨터 클러스터 내 노드들 각각의 각 연산 시간과 비교하는 단계; 및
    상기 비교 결과에 기초하여, 상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는 단계를 포함하는, 방법.
  5. 제3항에 있어서,
    상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는 단계는,
    상기 평균 연산 시간보다 연산 시간이 긴 노드에 대응되는 데이터 서브셋의 일부 데이터를 상기 평균 연산 시간보다 연산 시간이 짧은 노드에 대응되는 데이터 서브셋에 포함되도록 조정하는 단계를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 데이터 서브셋들을 결정하는 단계는,
    상기 마스터 노드에 대응되는 데이터 서브셋의 데이터 수가 상기 작업자 노드들에 대응되는 데이터 서브셋들 각각의 데이터 수보다 작도록 상기 훈련 데이터셋을 분할하는 것인, 방법.
  7. 제1항에 있어서,
    상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는 단계는,
    상기 컴퓨터 클러스터 내 노드들 중에서 연산 시간이 가장 긴 노드에 대응되는 데이터 서브셋의 일부 데이터를 상기 컴퓨터 클러스터 내 다른 노드들에 대응되는 데이터 서브셋들에 포함되도록 조정하는 단계를 포함하는, 방법.
  8. 분산 학습을 수행하는 서버에 있어서,
    통신 회로를 포함하는 통신 인터페이스;
    하나 이상의 명령어들(instructions)을 저장하는 메모리; 및
    상기 메모리에 저장된 하나 이상의 명령어들을 실행하는 적어도 하나의 프로세서를 포함하며,
    상기 적어도 하나의 프로세서는,
    복수의 노드들 중에서 분산 학습을 수행할 작업자 노드들을 선택하여 컴퓨터 클러스터를 구축하되, 상기 컴퓨터 클러스터 내 노드들은, 마스터 노드인 상기 서버와 상기 작업자 노드들을 포함하고,
    훈련 데이터셋을 분할함으로써 데이터 서브셋들을 결정하되, 상기 데이터 서브셋들의 각각은 상기 컴퓨터 클러스터 내 노드들의 각각에 대응하고,
    상기 데이터 서브셋들의 각각에 기초하여 상기 컴퓨터 클러스터 내 노드들의 각각에 저장된 각 인공지능 모델을 훈련시킴으로써, 상기 컴퓨터 클러스터 내 노드들로부터 훈련 결과들을 획득하고,
    상기 훈련 결과들에 기초하여 상기 서버에 저장된 인공지능 모델의 가중치들을 업데이트하고,
    상기 컴퓨터 클러스터 내 노드들의 각각에 대하여, 상기 컴퓨터 클러스터 내 노드들의 각각이 훈련을 수행하는데 소요된 연산 시간을 식별하고,
    상기 컴퓨터 클러스터 내 노드들 각각의 연산 시간에 기초하여, 상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는, 서버.
  9. 제8항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 컴퓨터 클러스터 내 노드들의 각각을 이용하여 상기 컴퓨터 클러스터 내 노드들의 각각에 저장된 각 인공지능 모델의 다음 훈련을 수행하되, 상기 컴퓨터 클러스터 내 노드들은, 상기 데이터 수가 조정된 데이터 서브셋들을 이용하여 상기 다음 훈련을 수행하는 것인, 서버.
  10. 제9항에 있어서,
    상기 컴퓨터 클러스터 내 노드들이 상기 다음 훈련을 수행하는 것에 기초하여, 상기 컴퓨터 클러스터 내 노드들의 각각에 대하여 설정된 배치 사이즈가 유지되는 것인, 서버.
  11. 제8항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 결정하고,
    상기 컴퓨터 클러스터 내 노드들의 평균 연산 시간을 상기 컴퓨터 클러스터 내 노드들 각각의 각 연산 시간과 비교하고,
    상기 비교 결과에 기초하여, 상기 데이터 서브셋들의 각각에 포함되는 데이터 수를 조정하는, 서버.
  12. 제10항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 평균 연산 시간보다 연산 시간이 긴 노드에 대응되는 데이터 서브셋의 일부 데이터를 상기 평균 연산 시간보다 연산 시간이 짧은 노드에 대응되는 데이터 서브셋에 포함되도록 조정하는, 서버.
  13. 제8항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 마스터 노드에 대응되는 데이터 서브셋의 데이터 수가 상기 작업자 노드들에 대응되는 데이터 서브셋들 각각의 데이터 수보다 작도록 상기 훈련 데이터셋을 분할하는, 서버.
  14. 제8항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 컴퓨터 클러스터 내 노드들 중에서 연산 시간이 가장 긴 노드에 대응되는 데이터 서브셋의 일부 데이터를 상기 컴퓨터 클러스터 내 다른 노드들에 대응되는 데이터 서브셋들에 포함되도록 조정하는, 서버.
  15. 제1항의 방법을 컴퓨터에서 수행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
PCT/KR2022/004806 2021-08-17 2022-04-04 분산 학습용 서버 및 분산 학습 방법 WO2023022321A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/735,352 US20230059674A1 (en) 2021-08-17 2022-05-03 Distributed learning server and distributed learning method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210108177A KR20230026137A (ko) 2021-08-17 2021-08-17 분산 학습용 서버 및 분산 학습 방법
KR10-2021-0108177 2021-08-17

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/735,352 Continuation US20230059674A1 (en) 2021-08-17 2022-05-03 Distributed learning server and distributed learning method

Publications (1)

Publication Number Publication Date
WO2023022321A1 true WO2023022321A1 (ko) 2023-02-23

Family

ID=85239553

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/004806 WO2023022321A1 (ko) 2021-08-17 2022-04-04 분산 학습용 서버 및 분산 학습 방법

Country Status (2)

Country Link
KR (1) KR20230026137A (ko)
WO (1) WO2023022321A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116938691A (zh) * 2023-09-19 2023-10-24 钛玛科(北京)工业科技有限公司 一种设备系统网络中的主机搭建方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150050689A (ko) * 2013-10-30 2015-05-11 삼성전자주식회사 데이터 분산 처리 시스템의 병목 현상 분석 장치 및 방법
US20170279849A1 (en) * 2016-03-24 2017-09-28 Cisco Technology, Inc. Constraint-aware resource synchronization across hyper-distributed learning systems
CN111401552A (zh) * 2020-03-11 2020-07-10 浙江大学 一种基于调整批量大小与梯度压缩率的联邦学习方法和系统
CN111461290A (zh) * 2020-03-11 2020-07-28 北京百度网讯科技有限公司 模型参数更新方法及装置
JP2021043495A (ja) * 2019-09-06 2021-03-18 富士通株式会社 情報処理プログラムおよび情報処理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150050689A (ko) * 2013-10-30 2015-05-11 삼성전자주식회사 데이터 분산 처리 시스템의 병목 현상 분석 장치 및 방법
US20170279849A1 (en) * 2016-03-24 2017-09-28 Cisco Technology, Inc. Constraint-aware resource synchronization across hyper-distributed learning systems
JP2021043495A (ja) * 2019-09-06 2021-03-18 富士通株式会社 情報処理プログラムおよび情報処理方法
CN111401552A (zh) * 2020-03-11 2020-07-10 浙江大学 一种基于调整批量大小与梯度压缩率的联邦学习方法和系统
CN111461290A (zh) * 2020-03-11 2020-07-28 北京百度网讯科技有限公司 模型参数更新方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116938691A (zh) * 2023-09-19 2023-10-24 钛玛科(北京)工业科技有限公司 一种设备系统网络中的主机搭建方法及系统
CN116938691B (zh) * 2023-09-19 2023-12-26 钛玛科(北京)工业科技有限公司 一种设备系统网络中的主机搭建方法及系统

Also Published As

Publication number Publication date
KR20230026137A (ko) 2023-02-24

Similar Documents

Publication Publication Date Title
WO2021060609A1 (ko) 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 모델 제공 방법
WO2019164251A1 (en) Method of performing learning of deep neural network and apparatus thereof
WO2021132927A1 (en) Computing device and method of classifying category of data
WO2020184827A1 (ko) 전자 장치 및 이의 제어 방법
WO2020180084A1 (ko) 타겟 이미지의 채색 완성 방법, 장치 및 컴퓨터 프로그램
WO2023022321A1 (ko) 분산 학습용 서버 및 분산 학습 방법
WO2018004236A1 (ko) 개인정보의 비식별화 방법 및 장치
WO2021153969A1 (en) Methods and systems for managing processing of neural network across heterogeneous processors
EP3183668A1 (en) Method and electronic device for classifying contents
WO2020075957A1 (ko) 분산처리용 인공신경망 연산 가속화 장치, 이를 이용한 인공신경망 가속화 시스템, 및 그 인공신경망의 가속화 방법
WO2020091207A1 (ko) 이미지의 채색 완성 방법, 장치 및 컴퓨터 프로그램과 인공 신경망 학습 방법, 장치 및 컴퓨터 프로그램
WO2020141720A1 (en) Apparatus and method for managing application program
WO2020218743A1 (en) Method for controlling execution of application, electronic device and storage medium for the same
WO2022265262A1 (ko) 빅데이터 기반의 인공지능 학습용 데이터 추출 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램
WO2023080333A1 (ko) 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법
WO2021137420A1 (ko) 분석알고리즘개발장치 및 그 동작 방법
WO2018043843A1 (ko) 낮은 데이터 중복으로 빠른 쿼리 처리를 지원하는 관계형 데이터베이스 저장 시스템, 저장 방법 및 관계형 데이터베이스 저장 방법에 기초한 쿼리를 처리하는 방법
WO2018191889A1 (zh) 照片处理方法、装置及计算机设备
WO2016153288A9 (ko) 가상 클러스터 관리 시스템 및 이를 제어하기 위한 방법
WO2022270815A1 (ko) 전자 장치 및 전자 장치의 제어 방법
WO2022158799A1 (ko) 데이터 파이프라인을 통한 데이터 전송을 제어하는 서버 및 그 동작 방법
WO2022080539A1 (ko) 사물인터넷 기기의 소프트웨어를 업데이트하는 소프트웨어 업데이트 게이트웨이 및 그 방법
WO2020213885A1 (en) Server and control method thereof
WO2021246586A1 (ko) 하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치
WO2020045977A1 (en) Electronic apparatus and control method thereof

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

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

Country of ref document: EP

Kind code of ref document: A1