Control of processing node operations
AssigneeGraphcore Limited
InventorsOla Torudbakken, Lorenzo Cevolani
Life of this patent
Estimating the term…
Abstract
In a data processing system, at least one processing node is configured to perform computations for a multi-stage process whilst at least one other processor performs the load/unload operations required to calculate a subsequent stage of the multi stage process. An exchange of data then occurs between the processing nodes. At a later time, at least one processing node performs calculations using the data loaded from storage, whilst at least one other processor performs the load/unload operations required to calculate a subsequent stage of the multi stage process.
Claims18
A data processing system comprising a plurality of processing nodes configured to perform operations to implement a process for performing an iteration of a neural network over a plurality of time periods, the data processing system comprising at least one data storage connected to at least one of the plurality of processing nodes,
- wherein at least one processor of a first of the plurality of processing nodes is configured to, during a first of the plurality of time periods, load weights associated with a second layer of the neural network and required during a subsequent one of the plurality of time periods for performing calculations to determine activations of the second layer of the neural network from the at least one data storage,
- wherein at least one processor of a second of the plurality of processing nodes is configured to, during the first of the plurality of time periods, perform calculations to determine activations of a first layer of the neural network, using weights associated with the first layer loaded from the at least one data storage during an earlier one of the plurality of time periods, wherein the at least one processor of at least one of the first or the second of the plurality of processing nodes is configured to:
- following the first of the plurality of time periods, receive data from the other of the first or the second of the plurality of processing nodes, the data including at least one of the activations of the first layer or the weights associated with the second layer;
- during the subsequent one of the plurality of time periods, perform calculations to determine the activations of the second layer of the neural network using the data received from the other of the first or the second of the plurality of processing nodes;
- and
- wherein the plurality of processing nodes are configured to, as part of the process, use the activations of the second layer of the neural network to determine activations of one or more further layers of the neural network, including determining output values of the neural network,
- wherein the plurality of processing nodes are configured to use the process to perform training of the neural network by:
- determining the output values of the neural network by performing the process for performing the iteration of the neural network;
- comparing the output values of the neural network to labels of the neural network to calculate loss;
- and
- performing a backward propagation through the neural network of the loss to produce a revised set of weights of the neural network;
- wherein each of the plurality of processing nodes is configured to alternate between operating in a compute phase in which compute instructions are executed by at least one processor of the processing node and an exchange phase in which data is exchanged between the plurality of processing nodes,
- wherein each of the at least one processor of the plurality of processing nodes is configured to execute a compiled code sequence comprising a synchronisation instruction indicating a barrier between the compute phase and the exchange phase, and
- wherein the receiving data from the other of the first or the second of the plurality of processing nodes is performed during the exchange phase for the first and the second of the plurality of processing nodes.
A method implemented in a data processing system having a data storage and a plurality of processing nodes configured to perform operations to implement a process for performing an iteration of a neural network over a plurality of time periods, wherein the method comprises:
- a first processing node of the plurality of processing nodes, during a first time period of the plurality of time periods, loading weights associated with a second layer of the neural network and required during a subsequent time period of the plurality of time periods for performing second calculations to determine activations of the second layer of the neural network from the data storage;
- a second processing node of the plurality of processing nodes, during the first time period, performing first calculations to determine activations of a first layer of the neural network using weights associated with the first layer loaded from the data storage during an earlier one of the plurality of time periods;
- the first processing node, receiving the activations of the first layer from the second processing node;
- during the subsequent time period, performing the second calculations using the activations of the first layer and using the weights associated with the second layer loaded during the first time period;
- wherein the plurality of processing nodes are configured to, as part of the process, use the activations of the second layer of the neural network to determine activations of one or more further layers of the neural network, including determining output values of the neural network,
- wherein the plurality of processing nodes are configured to use the process to perform training of the neural network by:
- determining the output values of the neural network by performing the process for performing the iteration of the neural network;
- comparing the output values of the neural network to labels of the neural network to calculate loss;
- and
- performing a backward propagation through the neural network of the loss to produce a revised set of weights of the neural network;
- receiving, by the first processing node, the activations of the first layer from the second processing node during an exchange phase of the first processing node and the second processing node, wherein each of the plurality of time periods corresponds to a compute phase of the second processing node;
- and
- executing, by the second processing node, a compiled code sequence comprising a synchronisation instruction indicating a barrier between the compute phase and the exchange phase.
A non-transitory computer readable medium storing a computer program comprising sets of computer readable instructions, wherein when each of the sets of computer readable instructions are executed causes a data processing system to perform operations to implement a process for performing an iteration of a neural network over a plurality of time periods, the operations comprising:
- during a first time period of the plurality of time periods, load weights associated with a second layer of the neural network and required during a subsequent time period of the plurality of time periods for performing second calculations to determine activations of the second layer of the neural from a data storage, wherein loading the load weights associated with the second layer is performed by a first processing node of the data processing system;
- during the first time period, perform first calculations to determine activations of a first layer of the neural network using weights associated with the first layer loaded from the data storage during an earlier one of the plurality of time periods, wherein the first calculations are performed by a second processing node of the data processing system;
- receive the weights associated with the second layer of the neural network at the second processing node from the first processing node;
- during the subsequent time period, perform the second calculations using the weights associated with the second layer of the neural network,
- wherein the plurality of processing nodes are configured to, as part of the process, use the activations of the second layer of the neural network to determine activations of one or more further layers of the neural network, including determining output values of the neural network, and
- wherein the plurality of processing nodes are configured to use the process to perform training of the neural network by:
- determining the output values of the neural network by performing the process for performing the iteration of the neural network;
- comparing the output values of the neural network to labels of the neural network to calculate loss;
- and
- performing a backward propagation through the neural network of the loss to produce a revised set of weights of the neural network;
- and
- receive, by the first processing node, the activations of the first layer from the second processing node during an exchange phase of the first processing node and the second processing node, wherein each of the plurality of time periods corresponds to a compute phase of the second processing node;
- and
- execute, by the second processing node, a compiled code sequence comprising a synchronisation instruction indicating a barrier between the compute phase and the exchange phase.
Dependencies are inferred from the claim text.