IP Library › Granted Patent US 11,544,521
Granted Patent B2
US 11,544,521 · App. 16/284,407 · Granted Jan 3, 2023

Neural network layer processing with scaled quantization

Inventor: Daniel Lo (Bothell, WA)
Assignee: Microsoft Technology Licensing, LLC
G06N3/04G06F7/483G06F17/16
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,544,521
App. No.
16/284,407
Filed
Feb 25, 2019
Granted
Jan 3, 2023
Kind
B2
Art Unit
2876
USPC
706/32
Abstract

Processors and methods for neural network processing are provided. A method includes receiving a subset of data corresponding to a layer of a neural network. The method further includes prior to performing any matrix operations using the subset of the data, scaling the subset of the data by a scaling factor to generate a scaled subset of data. The method further includes quantizing the scaled subset of the data to generate a scaled and quantized subset of data. The method further includes performing the matrix operations using the scaled and quantized subset of the data to generate a subset of results of the matrix operations. The method further includes descaling the subset of the results of the matrix operations, by multiplying the subset of the results of the matrix operations with an inverse of the scaling factor, to generate a descaled subset of results of the matrix operations.

Claims (37)

1. A method comprising:

receiving a subset of data corresponding to a layer of a neural network;

prior to performing any matrix operations using the subset of the data, using a processor, scaling the subset of the data by a scaling factor to generate a scaled subset of data;

using the processor, quantizing the scaled subset of the data to generate a scaled and quantized subset of data, wherein quantizing includes mapping original values of the scaled subset of the data to a quantizing grid having grid points such that largest value from the original values of the scaled subset of the data matches up with highest quantization grid point from among the grid points;

performing the matrix operations using the scaled and quantized subset of the data to generate a subset of results of the matrix operations; and

descaling the subset of the results of the matrix operations, by multiplying the subset of the results of the matrix operations with an inverse of the scaling factor, to generate a descaled subset of results of the matrix operations.

2. The method of claim 1 , wherein the scaled and the quantized subset of the data comprises scaled and quantized activation values corresponding to the layer of the neural network.

3. The method of claim 1 , wherein the scaled and the quantized subset of the data comprises scaled and quantized weight values corresponding to the layer of the neural network.

4. The method of claim 1 , wherein the subset of the data is expressed in a first precision format, and wherein the first precision format comprises floating point format.

5. The method of claim 1 , wherein the quantized subset of the data is expressed in a second precision format, and wherein the second precision format comprises a precision format selected from one of an integer format, a reduced floating point precision format, or a block floating point format.

6. The method of claim 1 , wherein the scaled and quantized subset of the data comprises scaled and quantized matrix data corresponding to weight values for the layer of the neural network, and wherein the performing the matrix operations comprises performing matrix-vector multiplication operations using the scaled and quantized matrix data and vector data corresponding to activation values for the layer of the neural network.

7. The method of claim 1 , wherein the scaled and quantized subset of the data comprises scaled and quantized matrix data corresponding to weight values for the layer of the neural network and scaled and quantized vector data corresponding to activation values for the layer of the neural network, and wherein the performing the matrix operations comprises performing matrix-vector multiplication operations using the scaled and quantized matrix data and the scaled and quantized vector data.

8. A processor configured to:

receive a subset of data corresponding to a layer of a neural network;

prior to performing any matrix operations using the subset of the data, scale the subset of the data by a scaling factor to generate a scaled subset of data;

quantize the scaled subset of the data by mapping original values of the scaled subset of the data to a quantizing grid having grid points such that largest value from the original values of the scaled subset of the data matches up with highest quantization grid point from among the grid points to generate a scaled and quantized subset of data;

perform the matrix operations using the scaled and quantized subset of the data and generate a subset of results of the matrix operations; and

descale the subset of the results of the matrix operations, by multiplying the subset of the results of the matrix operations with an inverse of the scaling factor, to generate a descaled subset of results of the matrix operations.

9. The processor of claim 8 , wherein the scaled and quantized subset of the data comprises scaled and quantized activation values corresponding to the layer of the neural network.

10. The processor of claim 8 , wherein the scaled and quantized subset of the data comprises scaled and quantized weight values corresponding to the layer of the neural network.

11. The processor of claim 8 , wherein the subset of the data is expressed in a first precision format, and wherein the first precision format comprises floating point format.

12. The processor of claim 8 , wherein the scaled and quantized subset of the data is expressed in a second precision format, and wherein the second precision format comprises a precision format selected from one of an integer format, a reduced floating point precision format, or a block floating point format.

13. The processor of claim 8 , wherein the scaled and quantized subset of the data comprises scaled and quantized matrix data corresponding to weight values for the layer of the neural network, wherein the processor is further configured to perform matrix-vector multiplication operations using the scaled and quantized matrix data and vector data corresponding to activation values for the layer of the neural network.

14. The processor of claim 8 , wherein the scaled and quantized subset of the data comprises quantized matrix data corresponding to weight values for the layer of the neural network and scaled and quantized vector data corresponding to activation values for the layer of the neural network, and wherein the processor is further configured to perform matrix-vector multiplication operations using the scaled and quantized matrix data and the scaled and quantized vector data.

15. A method comprising:

receiving a subset of data corresponding to a layer of a neural network;

prior to performing any matrix operations using the subset of the data, using a processor, scaling the subset of the data by a scaling factor to generate a scaled subset of data;

using the processor, quantizing the scaled subset of the data to generate a scaled and quantized subset of data;

using the processor, quantizing the subset of the data to generate a quantized subset of data;

determining a first quantization error associated with the scaled and quantized subset of data and determining a second quantization error associated with the quantized subset of data;

if the first quantization error is greater than or equal to the second quantization error, then performing the matrix operations using the quantized subset of data to generate a first subset of results of the matrix operations; and

if the first quantization error is lower than the second quantization error, then performing the matrix operations using the scaled and quantized subset of the data to generate a second subset of results of the matrix operations and descaling the second subset of the results of the matrix operations, by multiplying the second subset of the results of the matrix operations with an inverse of the scaling factor, to generate a descaled subset of results of the matrix operations.

16. The method of claim 15 , wherein the quantized and scaled subset of the data comprises quantized and scaled activation values corresponding to the layer of the neural network.

17. The method of claim 15 , wherein the quantized subset of the data comprises quantized weight values corresponding to the layer of the neural network.

18. The method of claim 15 , wherein the subset of the data is expressed in a first precision format, and wherein the first precision format comprises floating point format.

19. The method of claim 15 , wherein the quantized subset of the data is expressed in a second precision format, and wherein the second precision format comprises a precision format selected from one of an integer format, a reduced floating point precision format, or a block floating point format.

20. The method of claim 15 further comprising selecting the scaling factor for the subset of the data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2019
From: LO, DANIEL
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 048426/0336 →
Continuity (1)
Related Publication 20200272881A1 · Aug 27, 2020