IP Library Granted Patent US 12,205,035
Granted Patent B2
US 12,205,035 · App. 16/004,243 · Granted Jan 21, 2025

Artificial neural network training using flexible floating point tensors

Inventors: Krishnakumar Nair (Santa Clara, CA); Andrew Yang (Cupertino, CA); Brian Morris (Santa Clara, CA)
Assignee: Intel Corporation
G06N3/084G06N3/045G06N3/063G06F9/3013
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 12,205,035
App. No.
16/004,243
Filed
Jun 8, 2018
Granted
Jan 21, 2025
Kind
B2
Art Unit
2127
USPC
706/25
Abstract

Thus, the present disclosure is directed to systems and methods for training neural networks using a tensor that includes a plurality of FP16 values and a plurality of bits that define an exponent shared by some or all of the FP16 values included in the tensor. The FP16 values may include IEEE 754 format 16-bit floating point values and the tensor may include a plurality of bits defining the shared exponent. The tensor may include a shared exponent and FP16 values that include a variable bit-length mantissa and a variable bit-length exponent that may be dynamically set by processor circuitry. The tensor may include a shared exponent and FP16 values that include a variable bit-length mantissa; a variable bit-length exponent that may be dynamically set by processor circuitry; and a shared exponent switch set by the processor circuitry to selectively combine the FP16 value exponent with the shared exponent.

Claims (106)

1. A system for training a neural network, comprising:

processor circuitry;

a communications interface coupled to the processor circuitry, the communications interface couplable to the neural network; and

a storage device coupled to the processor circuitry, the storage device including machine readable instructions that, when executed by the processor circuitry, cause the processor circuitry to:

generate a neural network training tensor that includes:

a five-bit shared exponent stored in a memory, the five-bit shared exponent common to each of a plurality of 16-bit floating point values included in the neural network training tensor, each of the plurality of 16-bit floating point values including:

a first plurality of bits stored in the memory, the first plurality of bits to form a mantissa of the respective floating point value;

a second plurality of bits stored in the memory, the second plurality of bits to form an exponent portion of the respective floating point value; and

a one-bit switch stored in the memory, the one-bit switch to selectively combine the exponent portion of the respective 16-bit floating point value with the five-bit shared exponent; and

adjust, in response to prediction of an overflow condition or an underflow condition during training of the neural network, one or more of the 16-bit floating point values in the memory to avoid the predicted overflow or underflow.

2. The system of claim 1 , wherein each of the plurality of 16-bit floating point values included in the neural network training tensor includes:

a six bit mantissa provided by the first plurality of bits;

an eight bit exponent provided by the second plurality of bits; and

a one-bit sign.

3. The system of claim 1 , wherein the mantissa is a variable bit-length mantissa, the exponent portion is a variable bit-length exponent, and wherein the instructions further cause the processor circuitry to select, based on one or more neural network parameters:

a first number of bits to represent the variable bit-length mantissa; and

a second number of bits to represent the variable bit-length exponent.

4. The system of claim 3 , wherein the one or more neural network parameters include a trend indicative of at least one of: an underflow condition or an overflow condition in one or more of the 16-bit floating point values included in the neural network training tensor.

5. The system of claim 1 , wherein each of the plurality of 16-bit floating point values included in the neural network training tensor includes:

the mantissa provided by the first plurality of bits;

the exponent portion provided by the second plurality of bits; and

a one-bit sign.

6. A method of training a neural network, comprising:

generating, by processor circuitry, a neural network training tensor that includes:

a five-bit shared exponent stored in a memory, the five-bit shared exponent common to each of a plurality of 16-bit floating point values included in the neural network training tensor, each of the 16-bit floating point values including:

a first plurality of bits stored in the memory, the first plurality of bits to form a mantissa of the respective floating point value; and

a second plurality of bits stored in the memory, the second plurality of bits form an exponent portion of the respective floating point value; and

a one-bit switch stored in the memory, the one-bit switch to selectively combine the exponent portion of the respective 16-bit floating point value with the five-bit shared exponent;

adjusting, by the processor circuitry in response to prediction of an overflow condition or an underflow condition during training of the neural network, one or more of the 16-bit floating point values in the memory to avoid the predicted overflow or underflow; and

providing, by the processor circuitry, at least one of the plurality of 16-bit floating point values included in the neural network training tensor as an input to the neural network.

7. The method of claim 6 , wherein the generating of the neural network training tensor includes:

generating the neural network training tensor that includes the plurality of 16-bit floating point values and the five-bit shared exponent, wherein each of the plurality of 16-bit floating point values includes:

a six bit mantissa provided by the first plurality of bits;

an eight bit exponent provided by the second plurality of bits; and

a one-bit sign.

8. The method of claim 6 , wherein the generating of the neural network training tensor includes:

generating the neural network training tensor that includes the plurality of 16-bit floating point values and the five-bit shared exponent, wherein each of the plurality of 16-bit floating point values includes:

a variable bit-length mantissa provided by the first plurality of bits;

a variable bit-length exponent provided by the second plurality of bits; and

a one-bit sign.

9. The method of claim 8 , further including selecting, by the processor circuitry based on one or more neural network parameters:

a first number of bits to represent the variable bit-length mantissa; and

a second number of bits to represent the variable bit-length exponent.

10. The method of claim 9 , further including:

detecting, by the processor circuitry, a trend in one or more of the plurality of 16-bit floating point values included in the training tensor, the detected trend indicative of at least one of: an underflow condition or an overflow condition in one or more of the 16-bit floating point values included in the neural network training tensor.

11. The method of claim 9 , wherein the selecting of the first number of bits to represent the variable bit-length mantissa and the second number of bits to represent the variable bit-length exponent includes:

selecting, by the processor circuitry, a first number of bits included in the first plurality of bits and a second number of bits included in the second plurality of bits responsive to detecting a trend indicative of at least one of: an underflow condition or an overflow condition in one or more of the 16-bit floating point values included in the neural network training tensor.

12. The method of claim 6 , wherein the generating of the neural network training tensor includes:

generating the neural network training tensor that includes the plurality of 16-bit floating point values and the five-bit shared exponent, wherein each of the plurality of 16-bit floating point values includes:

the mantissa provided by the first plurality of bits;

the exponent portion provided by the second plurality of bits; and

a one-bit sign.

13. A neural network training system, comprising:

means for generating a neural network training tensor that includes:

a five-bit shared exponent stored in a memory, the five-bit shared exponent common to each of a plurality of 16-bit floating point values included in the neural network training tensor, each of the 16-bit floating point values including:

a first plurality of bits stored in the memory, the first plurality of bits to form a mantissa of the respective floating point value;

a second plurality of bits stored in the memory, the second plurality of bits to form an exponent portion of the respective floating point value; and

a one-bit switch stored in the memory, the one-bit switch to selectively combine the exponent portion of the respective 16-bit floating point value with the five-bit shared exponent;

means for adjusting, in response to prediction of an overflow condition or an underflow condition during training of a neural network, one or more of the 16-bit floating point values in the memory to avoid the predicted overflow or underflow; and

means for providing as an input to the neural network at least one of the plurality of 16-bit floating point values included in the neural network training tensor.

14. The system of claim 13 , wherein the means for generating the neural network training tensor includes:

means for generating the neural network training tensor that includes the plurality of 16-bit floating point values and the five-bit shared exponent, wherein each of the plurality of 16-bit floating point values includes:

a six bit mantissa provided by the first plurality of bits;

an eight bit exponent provided by the second plurality of bits; and

a one-bit sign.

15. The system of claim 13 , wherein the means for generating the neural network training tensor further includes:

means for generating the neural network training tensor that includes the plurality of 16-bit floating point values and the five-bit shared exponent, wherein each of the plurality of 16-bit floating point values includes:

a variable bit-length mantissa provided by the first plurality of bits;

a variable bit-length exponent provided by the second plurality of bits; and

a one-bit sign.

16. The system of claim 15 , further including means for selecting:

a first number of bits to represent the variable bit-length mantissa; and

a second number of bits to represent the variable bit-length exponent.

17. The system of claim 16 , further including means for detecting a trend in one or more of the plurality of 16-bit floating point values included in the neural network training tensor, the detected trend indicative of at least one of: a potential underflow condition or a potential overflow condition in one or more of the 16-bit floating point values included in the neural network training tensor.

18. The system of claim 16 , wherein the means for selecting a first number of bits to represent the variable bit-length mantissa and a second number of bits to represent the variable bit-length exponent further includes means for selecting a first number of bits included in the first plurality of bits and a second number of bits included in the second plurality of bits responsive to detecting a trend indicative of at least one of: an underflow condition or an overflow condition in one or more of the 16-bit floating point values included in the neural network training tensor.

19. The system of claim 13 , wherein the means for generating the neural network training tensor further includes means for generating the neural network training tensor that includes the plurality of 16-bit floating point values and the five-bit shared exponent, wherein each of the plurality of 16-bit floating point values includes:

the mantissa provided by the first plurality of bits;

the exponent portion provided by the second plurality of bits; and

a one-bit sign.

20. A non-transitory, computer-readable storage medium that includes machine readable instructions that, when executed by processor circuitry, cause the processor circuitry to:

generate a neural network training tensor that includes:

a five-bit shared exponent stored in a memory, the five-bit shared exponent common to each of a plurality of 16-bit floating point values included in the neural network training tensor, each of the plurality of 16-bit floating point values including:

a first plurality of bits stored in the memory, the first plurality of bits to form a mantissa of the respective floating point value;

a second plurality of bits stored in the memory, the second plurality of bits to form an exponent portion of the respective floating point value; and

a one-bit switch stored in the memory, the one-bit switch to selectively combine the exponent portion of the respective 16-bit floating point value with the five-bit shared exponent; and

adjust, in response to a prediction of an overflow or underflow condition during training of a neural network, one or more of the 16-bit floating point values in the memory to avoid the predicted overflow or underflow.

21. The non-transitory, computer-readable storage medium of claim 20 , wherein each of the plurality of 16-bit floating point values includes:

a six bit mantissa provided by the first plurality of bits;

an eight bit exponent provided by the second plurality of bits; and

a one-bit sign.

22. The non-transitory, computer-readable storage medium of claim 20 , wherein the mantissa is a variable bit-length mantissa, the exponent portion is a variable bit-length exponent, and wherein the instructions, when executed, cause the processor circuitry to select, based on one or more neural network parameters:

a first number of bits to represent the variable bit-length mantissa; and

a second number of bits to represent the variable bit-length exponent.

23. The non-transitory, computer-readable storage medium of claim 22 , wherein the one or more neural network parameters indicate an underflow condition or an overflow condition in one or more of the plurality of 16-bit floating point values included in the neural network training tensor.

24. The non-transitory, computer-readable storage medium of claim 20 , wherein the machine readable instructions that cause the processor circuitry to generate the neural network training tensor that includes a plurality of 16-bit floating point values further cause the processor circuitry to:

generate a neural network training tensor that includes a plurality of 16-bit floating point values, each of the plurality of 16-bit floating point values including:

the mantissa provided by the first plurality of bits;

the exponent portion provided by the second plurality of bits; and

a one-bit sign.

25. Processor circuitry programmed to implement a tensor data storage structure in a plurality of hardware registers, comprising:

a five-bit shared hardware register to store a first exponent value, the five-bit shared hardware register associated with each respective one of a plurality of 16-bit floating point hardware registers, each of the plurality of 16-bit floating point hardware registers including:

a first hardware register to store a mantissa value;

a second hardware register to store a second exponent value;

a third hardware register to store a sign bit; and

a one-bit switch hardware register to selectively combine each respective 16-bit floating point hardware register with the five-bit shared exponent hardware register; and

predictive circuitry to adjust one or more of the 16-bit floating point hardware registers in response to a prediction of an overflow or underflow condition in one or more of the 16-bit floating point hardware registers to avoid the overflow or underflow.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2018
From: NAIR, KRISHNAKUMAR; YANG, ANDREW; MORRIS, BRIAN
To: INTEL CORPORATION
Reel/Frame 046033/0218 →
Continuity (1)
Related Publication 20190042944A1 · Feb 7, 2019
References Cited (18)
US 10768936B2 · Burger · 2020 [cited by examiner]
US 20070299898A1 · Richey et al. · 2007 [cited by applicant]
US 20090292750A1 · Reyzin et al. · 2009 [cited by applicant]
US 20180157465A1 · Bittner et al. · 2018 [cited by applicant]
US 20190325296A1 · Fowers · 2019 [cited by examiner]
US 20190340492A1 · Burger · 2019 [cited by examiner]
JP 63255735A · 1988 [cited by applicant]
Yokoo, Hidetoshi. “Overflow/underflow-free floating-point number representations with self-delimiting variable-length exponent field.” IEEE Computer Architecture Letters 41.08 (1992): 1033-1039. (Year: 1992). [cited by examiner]
Das, Dipankar, et al. “Mixed precision training of convolutional neural networks using integer operations.” arXiv preprint arXiv: 1802.00930 (Feb. 2018). (Year: 2018). [cited by examiner]
Yokoo, Hidetoshi. “Overflow/underflow-free floating-point No. representations with self-delimiting variable-length exponent field.” IEEE Computer Architecture Letters 41.08 (1992): 1033-1039. (Year: 1992). [cited by examiner]
Ide et al. “A 320-MFLOPS Cmos Floating-point Processing Unit for Superscalar Processors.” IEEE Journal of Solid-State Circuits (vol. 28, Issue: 3, Mar. 1993). pp. 352-361 (Year: 1993). [cited by examiner]
Nagaraju, Mamidi, and Geedimatla Shekar. “FPGA Based Quadruple Precision Floating Point Arithmetic for Scientific Computations.” International Journal of Advanced Computer Research 2.3 (2012). pp. 7-12 (Year: 2012). [cited by examiner]
Köster et al., “Flexpoint: An Adaptive Numerical Format for Efficient Training of Deep Neural Networks”, 2017, NIPS 2017, 11 pages (Year: 2017). [cited by examiner]
Micikevicius, Paulius, Mixed-Precision Training of Deep Neural Networks, Artificial Intelligence(https://devblogs.nvidia.com/category/artificial-intelligence/)., 2017, Oct. 11, pp. 7. [cited by applicant]
Japanese Patent Office, “Decision to Grant a Patent,” issued in connection with Japanese Patent Application No. 2019-082718, dated Jul. 11, 2023, 5 pages. [English Translation Included]. [cited by applicant]
Japanese Patent Office, “Notice of Reasons for Refusal,” issued in connection with Japanese Application No. 2019-082718, issued on Mar. 22, 2023, 6 pages. (Machine translation included). [cited by applicant]
Ryuka et al., “Shifting Amendment & Unity of the Inventions,” Ryuka, dated Oct. 27, 2021, 2 pages. [cited by applicant]
Narang et al., “Mixed Precision Training”, Published as a conference paper at ICLR, Feb. 2018, 12 pages, retrieved from <https://arxiv.org/abs/1710.03740)> on Feb. 8, 2023. [cited by applicant]