IP Library Granted Patent US 11,341,397
Granted Patent B1
US 11,341,397 · App. 16/212,618 · Granted May 24, 2022

Computation of neural network node

Inventors: Kenneth Duong (San Jose, CA); Jung Ko (San Jose, CA); Steven L. Teig (Menlo Park, CA)
Assignee: PERCEIVE CORPORATION
G06N3/0481G06N3/063G06N3/084G06N5/046G06N20/00
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,341,397
App. No.
16/212,618
Granted
May 24, 2022
Kind
B1
Abstract

Some embodiments provide a method for a neural network inference circuit (NNIC) that implements a neural network including multiple computation nodes at multiple layers. Each computation node includes a dot product of input values and weight values and a set of post-processing operations. The method retrieves a set of weight values and a set of input values for a computation node from a set of memories of the NNIC. The method computes a dot product of the retrieved sets of weight values and input values. The method performs the post-processing operations for the computation node on a result of the dot product computation to compute an output value for the computation node. The method stores the output value in the set of memories. No intermediate results of the dot product or the set of post-processing operations are stored in any RAM of the NNIC during the computation.

Claims (59)

1. For a neural network inference circuit that implements a neural network comprising a plurality of computation nodes at a plurality of layers, each computation node comprising a dot product of input values and weight values and a set of post-processing operations, a method comprising:

retrieving a set of weight values for a particular computation node and a set of input values for the particular computation node from a set of memories of the neural network inference circuit;

computing a dot product of the set of weight values and the set of input values;

performing the set of post-processing operations for the particular computation node on a result of the dot product computation to compute an output value for the particular computation node; and

storing the output value for the particular computation node in the set of memories,

wherein no intermediate results of the dot product or the set of post-processing operations are stored in any random access memory (RAM) of the neural network inference circuit during the computation.

2. The method of claim 1 , wherein the computation of the dot product and the performance of the set of post-processing operations occur within a single clock cycle of the IC.

3. The method of claim 1 , wherein the stored output is used as an input value to a second computation node.

4. The method of claim 1 , wherein the stored output is used as an input value for a plurality of additional computation nodes.

5. The method of claim 4 , wherein the particular computation node is part of a first layer of the neural network and the additional computation nodes are part of a second layer of the neural network that is subsequent to the first layer.

6. The method of claim 5 , wherein the set of input values are stored outputs of computation nodes of a third layer of the neural network that is executed prior to the first layer.

7. The method of claim 1 , wherein retrieving the set of weight values and the set of input values comprises performing memory read operations to load the weight values and the input values from RAM of the neural network inference circuit to sets of buffers.

8. The method of claim 7 , wherein computing the dot product comprises:

computing a plurality of partial dot products in a plurality of cores of the neural network inference circuit; and

aggregating the partial dot products using an aggregation bus that connects to the plurality of cores.

9. The method of claim 1 , wherein no intermediate results of the dot product are stored in any storage of the neural network inference circuit during the computation.

10. The method of claim 1 , wherein an intermediate result of the dot product is stored in a register of the neural network inference circuit while an additional portion of the dot product is calculated.

11. The method of claim 10 , wherein computing the dot product comprises:

computing a first dot product of a first subset of the set of weight values and a first subset of the set of input values;

storing the first dot product in the register;

computing a second dot product of a second subset of the set of weight values and a second subset of the set of input values; and

adding the first and second dot products together.

12. The method of claim 1 , wherein performing the set of post-processing operations comprises:

adding a bias factor for the computation node to the result of the dot product computation;

multiplying a result from the addition by a scaling factor for the computation node;

truncating a result of the multiplication; and

applying a non-linear activation function to a result of the truncation.

13. The method of claim 12 further comprising receiving the bias factor, the scaling factor, and a mapping table for the non-linear activation function as configuration data.

14. A neural network inference circuit that implements a neural network comprising a plurality of computation nodes at a plurality of layers, each computation node comprising a dot product of input values and weight values and a set of post-processing operations, the neural network inference circuit comprising:

a set of memory control circuits to retrieve a set of weight values for a particular computation node and a set of input values for the particular computation node from a set of memories of the neural network inference circuit;

a set of dot product circuits to compute a dot product of the set of weight values and the set of input values;

a post-processing circuit to perform the set of post-processing operations for the particular computation node on a result of the dot product computation to compute an output value for the particular computation node; and

a set of circuits to store the output value for the particular computation node in the set of memories,

wherein no intermediate results of the dot product or the set of post-processing operations are stored in any random access memory (RAM) of the neural network inference circuit during the computation.

15. The neural network inference circuit of claim 14 , wherein the computation of the dot product and the performance of the set of post-processing operations occur within a single clock cycle of the IC.

16. The neural network inference circuit of claim 14 , wherein the stored output is used as an input value for a plurality of additional computation nodes, wherein the particular computation node is part of a first layer of the neural network and the additional computation nodes are part of a second layer of the neural network that is executed subsequent to the first layer.

17. The neural network inference circuit of claim 16 , wherein the set of input values are stored outputs of computation nodes of a third layer of the neural network that is executed prior to the first layer.

18. The neural network inference circuit of claim 14 , wherein the set of memory control circuits retrieves the set of weight values and the set of input values by performing memory read operations to load the weight values and the input values from RAM of the neural network inference circuit to sets of buffers.

19. The neural network inference circuit of claim 18 , wherein the set of dot product circuits comprises:

a set of partial dot product computation circuits in a plurality of cores of the neural network inference circuit to compute a plurality of partial dot products; and

an aggregation bus that connects to the plurality of cores to aggregate the partial dot products.

20. The neural network inference circuit of claim 14 , wherein no intermediate results of the dot product are stored in any storage of the neural network inference circuit during the computation.

21. The neural network inference circuit of claim 1 , wherein an intermediate result of the dot product is stored in a register of the neural network inference circuit while an additional portion of the dot product is calculated.

22. A non-transitory machine-readable medium storing a program, for execution by at least one processing unit, that configures a neural network inference circuit that implements a neural network comprising a plurality of computation nodes at a plurality of layers, each computation node comprising a dot product of input values and weight values and a set of post-processing operations, the program comprising sets of instructions for:

configuring a set of memory control circuits to retrieve a set of weight values for a particular computation node and a set of input values for the particular computation node from a set of memories of the neural network inference circuit;

configuring a set of dot product circuits to compute a dot product of the set of weight values and the set of input values;

configuring a post-processing circuit to perform the set of post-processing operations for the particular computation node on a result of the dot product computation to compute an output value for the particular computation node; and

configuring a set of circuits to store the output value for the particular computation node in the set of memories,

wherein no intermediate results of the dot product or the set of post-processing operations are stored in any random access memory (RAM) of the neural network inference circuit during the computation.

23. The non-transitory machine-readable medium of claim 22 , wherein the set of instructions for configuring the set of dot product circuits comprises sets of instructions for:

configuring the set of dot product circuits to compute a first dot product of a first subset of the set of weight values and a first subset of the set of input values;

configuring a register to store the first dot product in the register;

configuring the set of dot product circuits to compute a second dot product of a second subset of the set of weight values and a second subset of the set of input values; and

configuring an adder circuit to add the first and second dot products together.

24. The non-transitory machine-readable medium of claim 22 , wherein the set of instructions for configuring the post-processing circuit comprises sets of instructions for:

configuring an adder circuit to add a bias factor for the computation node to the result of the dot product computation;

configuring a multiplier circuit to multiply a result from the addition by a scaling factor for the computation node;

configuring a truncator circuit to truncate a result of the multiplication; and

configuring a circuit to apply a non-linear activation function to a result of the truncation.

Assignments (3)
BILL OF SALE Recorded Oct 31, 2024
From: AMAZON.COM SERVICES LLC
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 069288/0490 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2024
From: PERCEIVE CORPORATION
To: AMAZON.COM SERVICES LLC
Reel/Frame 069288/0731 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2019
From: DUONG, KENNETH; KO, JUNG; TEIG, STEVEN L.
To: PERCEIVE CORPORATION
Reel/Frame 048014/0785 →
Continuity (6)
Provisional Application 62773164 · Nov 29, 2018
Provisional Application 62773162 · Nov 29, 2018
Provisional Application 62753878 · Oct 31, 2018
Provisional Application 62742802 · Oct 8, 2018
Provisional Application 62724589 · Aug 29, 2018
Provisional Application 62660914 · Apr 20, 2018
Cited By (1)
US 12,190,230