IP Library Patent Application 17763924
Patent Application
App. No. 17/763,924

FAST SPARSE NEURAL NETWORKS

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
17/763,924
Abstract

A neural network system includes at least one layer which applies a 1×1 convolution to a dense activation matrix, using a kernel defined by a sparse weight matrix. The layer is implemented by a processor with access to a sparsity dataset which indicates where the null weights are located in the weight matrix. The processor selects the feature values corresponding to the other weights from a memory unit configured to store the activation matrix, and then uses these extracted feature values for calculating the convolved values.

Claims (42)

1 . A method of implementing a neural network, the neural network comprising a plurality of layers including at least one sparse 1×1 convolutional layer, the input of the convolutional layer comprising, for each of a plurality of elements arranged in an H×W array, a respective input channel of feature values,

the sparse 1×1 convolutional layer being configured to apply a sparse 1×1 convolution to the input channels to form respective output channels each composed of a plurality of convolved values, the sparse 1×1 convolution being defined by a sparse C×C′ weight matrix having a plurality of null weights which are equal to zero and a plurality of non-null weights, and the input channels constituting a dense C′×HW activation matrix having a feature value defined for each element of the activation matrix,

the method comprising:

obtaining an indication of the null weights of the weight matrix; and

processing the sparse C×C′ weight matrix in conjunction with the dense C′×HW activation matrix by, for elements of a row vector comprising a plurality of the elements in a row of the activation matrix, generating the convolved values for the plurality of elements by:

(a) extracting corresponding feature values of the input channels from a memory unit storing the activation matrix, the corresponding feature values being feature values for which according to the indication the corresponding weight of the weight matrix is a non-null weight, and

(b) forming a corresponding sum of the corresponding extracted feature values weighted by the respective non-null weights.

2 . A method according to claim 1 in which the null weights constitute substantially 70-95% of the components of the weight matrix.

3 . A method according to claim 1 in which an output layer of the neural network is fully connected.

4 . A method according to claim 1 in which the memory unit has a CHW memory layout.

5 . A method according to claim 4 in which the processing is performed with an inner loop for successive row vectors of elements in the same row, and an outer loop for successive rows.

6 . A method according to claim 1 in which the processing is performed repeatedly for successive row vectors, the row vectors collectively including the whole array of elements.

7 . A method according to claim 1 , the neural network further including an output layer following the convolutional layer and arranged to generate one or more output values, each output value being determined based on all the convolved values of all the elements.

8 . A method according to claim 1 , in which the non-null weights are in the same positions in each of a plurality of rows of the weight matrix.

9 . A method according to claim 8 in which the processing for the plurality of rows of the weight matrix is performed in parallel to generate the corresponding plurality of convolved values of the output channels for the row vector.

10 . A method according to claim 1 in which during the generation of the convolved values for the plurality of elements, upon said extraction of corresponding feature values from the memory unit, the extracted features values are stored in a cache memory, the extraction and storage not being performed in respect of feature values which were stored in the cache memory during the generation of preceding convolved values for the plurality of elements.

11 . A method according to claim 10 in which during the generation of the convolved values for the plurality of elements based on the corresponding feature values for the plurality of elements, the corresponding feature values for a plurality of additional elements are also read from the memory unit into the cache memory, the convolved values of the plurality of additional elements not being generated in parallel with the convolved values for the plurality of elements.

12 . (canceled)

13 . (canceled)

14 . A system configured to implement a neural network, the neural network comprising a plurality of layers including at least one sparse 1×1 convolutional layer, the input of the convolutional layer comprising, for each of a plurality of elements arranged in an H×W array, a respective input channel of feature values,

the sparse 1×1 convolutional layer being configured to apply a sparse 1×1 convolution to the input channels to form respective output channels each composed of a plurality of convolved values, the sparse 1×1 convolution being defined by a sparse C×C′ weight matrix having a plurality of null weights which are equal to zero and a plurality of non-null weights, and the input channels constituting a dense C′×HW activation matrix having a feature value defined for each element of the activation matrix,

the system comprising a memory unit and a processing unit, the memory unit storing instructions which when implemented by the processing unit cause the processing unit to:

obtain an indication of the null weights of the weight matrix; and

process the sparse C×C′ weight matrix in conjunction with the dense C′×HW activation matrix by, for elements of a row vector comprising a plurality of the elements in a row of the activation matrix, generating the convolved values for the plurality of elements by:

(a) extracting corresponding feature values of the input channels from a memory unit storing the activation matrix, the corresponding extracted feature values being feature values for which according to the indication the corresponding weight of the weight matrix is a non-null weight, and

(b) forming a corresponding sum of the corresponding extracted feature values weighted by the respective non-null weights.

15 . (canceled)

16 . (canceled)

17 . A system according to claim 14 in which an output layer of the neural network is fully connected.

18 . A system according to claim 14 in which the memory unit has a CHW memory layout.

19 . A system according to claim 18 in which the processing is performed with an inner loop for successive row vectors of elements in the same row, and an outer loop for successive rows.

20 . A system according to claim 14 in which the processing is performed repeatedly for successive row vectors, the row vectors collectively including the whole array of elements.

21 . A system according to claim 14 , the neural network further including an output layer following the convolutional layer and arranged to generate one or more output values, each output value being determined based on all the convolved values of all the elements.

22 . A system according to claim 14 , in which the non-null weights are in the same positions in each of a plurality of rows of the weight matrix.

23 . A system according to claim 22 in which the processing for the plurality of rows of the weight matrix is performed in parallel to generate the corresponding plurality of convolved values of the output channels for the row vector.

24 . One or more computer storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations for implementing a neural network, the neural network comprising a plurality of layers including at least one sparse 1×1 convolutional layer, the input of the convolutional layer comprising, for each of a plurality of elements arranged in an H×W array, a respective input channel of feature values,

the sparse 1×1 convolutional layer being configured to apply a sparse 1×1 convolution to the input channels to form respective output channels each composed of a plurality of convolved values, the sparse 1×1 convolution being defined by a sparse C×C′ weight matrix having a plurality of null weights which are equal to zero and a plurality of non-null weights, and the input channels constituting a dense C′×HW activation matrix having a feature value defined for each element of the activation matrix,

the method comprising:

obtaining an indication of the null weights of the weight matrix; and

processing the sparse C×C′ weight matrix in conjunction with the dense C′×HW activation matrix by, for elements of a row vector comprising a plurality of the elements in a row of the activation matrix, generating the convolved values for the plurality of elements by:

(a) extracting corresponding feature values of the input channels from a memory unit storing the activation matrix, the corresponding feature values being feature values for which according to the indication the corresponding weight of the weight matrix is a non-null weight, and

(b) forming a corresponding sum of the corresponding extracted feature values weighted by the respective non-null weights.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2025
From: DEEPMIND TECHNOLOGIES LIMITED
To: GDM HOLDING LLC
Reel/Frame 071498/0210 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2022
From: ELSEN, ERICH KONRAD; GALE, TREVOR JOHN; DUKHAN, MARAT
To: DEEPMIND TECHNOLOGIES LIMITED
Reel/Frame 060773/0913 →