A computation node of a neural network training system is described. The node has a memory storing a plurality of gradients of a loss function of the neural network and an encoder. The encoder encodes the plurality of gradients by setting individual ones of the gradients either to zero or to a quantization level according to a probability related to at least the magnitude of the individual gradient. The node has a processor which sends the encoded plurality of gradients to one or more other computation nodes of the neural network training system over a communications network.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A computation node of a neural network training system comprising: a memory storing a plurality of gradients of a loss function of the neural network; an encoder which encodes the plurality of gradients by setting individual ones of the gradients either to zero or to one of a plurality of quantization levels, according to a probability related to at least the magnitude of the individual gradient; and a processor which sends the encoded plurality of gradients to one or more other computation nodes of the neural network training system over a communications network. 2. The computation node of claim 1 wherein the encoder encodes the plurality of gradients according to a probability related to the magnitude of a vector of the plurality of gradients. 3. The computation node of claim 1 wherein the encoder encodes the plurality of gradients according to a probability related to at least the magnitude of the individual gradient divided by the magnitude of the vector of the plurality of gradients. 4. The computation node of claim 1 wherein the encoder sets individual ones of the gradients to zero according to the outcome of a biased coin flip process, the bias being calculated from at least the magnitude of the individual gradient. 5. The computation node of claim 1 wherein the encoder outputs a magnitude of the plurality of gradients, a list of signs of a plurality of gradients which are not set to zero by the encoder, and relative positions of the plurality of gradients which are not set to zero by the encoder. 6. The computation node of claim 1 wherein the encoder further comprises an integer encoder which compresses a plurality of integers. 7. The computation node of claim 6 wherein the integer encoder acts to encode using Elias recursive coding. 8. The computation node of claim 1 wherein the encoder encodes the plurality of gradients according to a probability related to a tuning parameter which controls a trade-off between training time of the neural network and the amount of data sent to the other computation nodes. 9. The computation node of claim 8 wherein the tuning parameter is selected according to user input. 10. The computation node of claim 8 wherein the tuning parameter is automatically selected according to bandwidth availability. 11. The computation node of claim 8 wherein a value of the tuning parameter in use by the computation node is displayed at a user interface. 12. The computation node of claim 1 comprising a decoder which decodes encoded gradients received from other computation nodes, and wherein the processor updates weights of the neural network using the stored gradients and the decoded gradients. 13. The computation node of claim 1 the memory storing weights of the neural network and wherein the processor updates the weights using the plurality of gradients and gradients received from the other computation nodes. 14. A computation node of a neural network training system comprising: means for storing a plurality of gradients of a loss function of the neural network; means for encoding the plurality of gradients by setting individual ones of the gradients either to zero or to a quantization level according to a probability related to at least the magnitude of the individual gradient; and means for sending the encoded plurality of gradients to one or more other computation nodes of the neural network training system over a communications network. 15. A computer implemented method at a computation node of a neural network training system comprising: storing at a memory a plurality of gradients of a loss function of the neural network; encoding the plurality of gradients by setting individual ones of the gradients either to zero or to a quantization threshold according to a probability related to at least the magnitude of the individual gradient divided by the magnitude of the plurality of gradients; and sending the encoded plurality of gradients to one or more other computation nodes of the neural network training system over a communications network. 16. The method of claim 15 comprising receiving the value of a tuning parameter which controls a trade-off between training time of the neural network and the amount of data sent to the other computation nodes, and computing the probability using the value of the tuning parameter. 17. The method of claim 15 comprising further encoding the plurality of gradients by encoding distances between individual ones of the plurality of gradients which are not set to zero. 18. The method of claim 15 comprising automatically selecting the value of the tuning parameter according to bandwidth availability. 19. The method of claim 15 comprising outputting the value of the tuning parameter at a graphical user interface. 20. The method of claim 15 comprising selecting the value of the tuning parameter according to user input.