IP Library › Granted Patent US 11,748,623
Granted Patent B2
US 11,748,623 · App. 16/848,973 · Granted Sep 5, 2023

Modifying structure of artificial neural networks by collocating parameters

Inventor: Ludovic Larzul (El Dorado Hills, CA)
Assignee: Mipsology SAS
G06N3/082G06F17/16G06N20/10
View Patent ↗
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 11,748,623
App. No.
16/848,973
Granted
Sep 5, 2023
Kind
B2
Abstract

Systems and methods for modifying a structure of an artificial neural network (ANN) are provided. An example method comprises receiving, by one or more processing units, a plurality of arrays of weights associated with the ANN, modifying, by the processing units, the plurality of arrays of weights to generate a further plurality of further arrays of weights, where after the modification the following conditions are satisfied: an amount of operations required for computing neurons of the ANN using the further plurality of further arrays of weights is less than an amount of operations required for computing same neurons of the ANN using the plurality of arrays of weights; and outputs of the neurons of the ANN computed using the plurality of arrays of weights are substantially equal to further outputs of the neurons of the ANN using the further plurality of further arrays of weights.

Claims (55)

1. A system for modifying a structure of an artificial neural network (ANN), the system comprising one or more processing units configured to:

receive a plurality of arrays of weights associated with the ANN, wherein weights of an array of weights of the plurality of arrays of weights are to be processed in parallel by a plurality of multipliers;

modify the plurality of arrays of weights to generate a further plurality of further arrays of weights, wherein the modification includes changing locations of weights satisfying criteria for reducing a number of operations involving the weights in a computation of the ANN while keeping values of the weights unchanged and after the modification the following conditions are satisfied:

a number of operations required by the plurality of multipliers for computing neurons of the ANN using the further plurality of further arrays of weights is less than a number of operations required by the plurality of multipliers for computing same neurons of the ANN using the plurality of arrays of weights; and

outputs of the neurons of the ANN computed using the plurality of arrays of weights are substantially equal to further outputs of the neurons of the ANN computed using the further plurality of further arrays of weights; and

transmit the further plurality of further arrays of weights to the plurality of multipliers, wherein the plurality of multipliers computes the outputs of the ANN.

2. The system of claim 1 , wherein the one or more processing units are configured to:

receive a plurality of input values for the ANN; and

perform computations of the neurons of the ANN based on the plurality of input values and the further plurality of further arrays of weights by performing the operations to obtain an output of the ANN.

3. The system of claim 2 , wherein the further plurality of the further arrays of weights include a series of weights such that:

each weight of the series of weights satisfies criteria for reducing the number of operations involving the weight from the computation of the ANN; and

the operations involving the series of weights and corresponding input values to the neurons are performed by the plurality of multipliers in a single computational cycle of computation of the ANN.

4. The system of claim 3 , wherein the one or more processors are configured to determine that the weight satisfies the criteria by comparing the weight to one or more pre-determined reference values.

5. The system of claim 4 , wherein the one or more pre-determined reference values includes one of zero or one.

6. The system of claim 1 , wherein the operations include multiplication.

7. The system of claim 1 , wherein the modifying the plurality of arrays of weights includes changing an order of arrays in the plurality of arrays of weights.

8. The system of claim 1 , wherein the modifying the plurality of arrays of weights includes inserting at least one additional array of values between two arrays in the plurality of arrays of weights.

9. The system of claim 1 , wherein the modifying the plurality of arrays of weights includes splitting an array of the plurality of arrays of weights into a first array and at least one second array, wherein a size of the first array is less than a size of the array, and wherein the further plurality of further arrays of weights includes the first array.

10. The system of claim 1 , wherein the modifying the plurality of arrays of weights includes:

determining that each of the plurality of arrays of weights includes a subset of weights, wherein each of the subset of weights satisfies a criterion for skipping the weights from computation of the neurons of the ANN; and

modifying each of the plurality of arrays of weights by removing the subset of weights and realigning the rest of the weights in all of the plurality of arrays.

11. The system of claim 1 , wherein the plurality of arrays of weights is modified to decrease lengths of one of the following:

sequences of zero weights located at a same position in subsequent arrays of weights in the plurality of arrays of weights; or

sequences of non-zero weights located at the same position in subsequent arrays of weights in the plurality of arrays of weights.

12. The system of claim 1 , wherein the one or more processing units are configured to:

generate an identifier related to an array of weights of the plurality of arrays of weights; and

associate the identifier to a weight from an array of weights in the further plurality of further arrays of weights.

13. The system of claim 12 , wherein the one or more processing units are configured to identify, based on the identifier, an accumulator for accumulating a result of a multiplication between an input value and the weight of the array of the weights in the further plurality of arrays of weights.

14. The system of claim 1 , wherein the plurality of arrays includes kernels for calculating feature maps in a convolution.

15. A method for modifying structure of an artificial neural network (ANN), the method comprising:

receiving, by one or more processing units, a plurality of arrays of weights associated with the ANN, wherein weights of an array of weights of the plurality of arrays of weights are to be processed in parallel by a plurality of multipliers;

modifying, by the one or more processing units, the plurality of arrays of weights to generate a further plurality of further arrays of weights, wherein the modification includes changing the locations of weights satisfying criteria for reducing a number of operations involving the weights in a computation of the ANN while keeping values of the weights unchanged and after the modification the following conditions are satisfied:

a number of operations required by the plurality of multipliers for computing neurons of the ANN using the further plurality of further arrays of weights is less than a number of operations required by the plurality of multipliers for computing same neurons of the ANN using the plurality of arrays of weights; and

outputs of the neurons of the ANN computed using the plurality of arrays of weights are substantially equal to further outputs of the neurons of the ANN using the further plurality of further arrays of weights; and

transmitting, by the one or more processing units, the further plurality of further arrays of weights to the plurality of multipliers, wherein the plurality of multipliers computes the outputs of the ANN.

16. The method of claim 15 , further comprising:

receiving, by the one or more processing units, a plurality of input values for the ANN; and

performing, by the one or more processing units, computations of the neurons of the ANN based on the plurality of input values and the further plurality of further arrays of weights by performing the operations to obtain an output of the ANN.

17. The method of claim 16 , wherein the further plurality of the further arrays of weights include a series of weights such that:

each weight of the series of weights satisfies the criteria for reducing the number of operations involving the weight from the computation of the ANN; and

the operations involving the series of weights and corresponding input values to the neurons are performed by the plurality of multipliers in a single computational cycle of computation of the ANN.

18. The method of claim 15 , wherein the plurality of arrays of weights is modified to decrease lengths of one of the following:

sequences of zero weights located at the same position in subsequent arrays of weights in the plurality of arrays of weights; or

sequences of non-zero weights located at the same position in subsequent arrays of weights in the plurality of arrays of weights.

19. The method of claim 15 , wherein the modifying the plurality of arrays of weights includes one or more of the following:

changing an order of arrays in the plurality of arrays of weights;

splitting an array of the plurality of arrays of weights into a first array and at least one second array, wherein a size of the first array is less than a size of the array, and wherein the further plurality of further arrays of weights includes the first array; and

inserting at least one additional array of values between two arrays in the plurality of arrays of weights.

20. A system for modifying structure of an artificial neural network (ANN), the system comprising one or more processing units configured to:

receive a plurality of arrays of weights associated with the ANN, wherein weights of an array of weights of the plurality of arrays of weights are to be processed in parallel by a plurality of multipliers;

modify the plurality of arrays of weights to generate a further plurality of further arrays of weights, wherein the modification includes modifying the locations of weights satisfying criteria for reducing a number of operations involving the weights in computation of the ANN while keeping values of the weights unchanged and after the modification the following conditions are satisfied:

a number of operations required by the plurality of multipliers for computing neurons of the ANN using the further plurality of further arrays of weights is less than a number of operations required by the plurality of multipliers for computing same neurons of the ANN using the plurality of arrays of weights; and

outputs of the neurons of the ANN computed using the plurality of arrays of weights are substantially equal to further outputs of the neurons of the ANN using the further plurality of further arrays of weights;

receive a plurality of input values for the ANN; and

transmit the plurality of input values and the further plurality of further arrays of weights to the plurality of multipliers, wherein the plurality of multipliers computes the outputs of the ANN.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2026
From: MIPSOLOGY SAS
To: XILINX, INC.
Reel/Frame 073663/0308 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2020
From: LARZUL, LUDOVIC
To: MIPSOLOGY SAS
Reel/Frame 052401/0716 →
Continuity (1)
Related Publication 20210326709A1 · Oct 21, 2021