Format de coma flotant Bfloat16

format de nombre de coma flotant optimitzat per a l'aprenentatge automàtic From Wikipedia, the free encyclopedia

Remove ads

El format de coma flotant bfloat16 (brain floating point)[1][2] és un format de nombres informàtics que ocupa 16 bits a la memòria de l'ordinador; representa un ampli rang dinàmic de valors numèrics mitjançant un punt de base flotant. Aquest format és una versió escurçada (16 bits) del format de coma flotant de simple precisió IEEE 754 de 32 bits (binary32) amb la intenció d'accelerar l'aprenentatge automàtic i la computació de sensors propers.[3] Preserva el rang dinàmic aproximat dels nombres de coma flotant de 32 bits mantenint 8 bits d'exponent, però només admet una precisió de 8 bits en lloc del significand de 24 bits del format binary32. Més que els nombres de coma flotant de 32 bits de precisió simple, els nombres bfloat16 no són adequats per a càlculs d'enters, però aquest no és el seu ús previst. Bfloat16 s'utilitza per reduir els requisits d'emmagatzematge i augmentar la velocitat de càlcul dels algoritmes d'aprenentatge automàtic.[4]

Thumb
Format de dades bfloat 16

El format bfloat16 va ser desenvolupat per Google Brain, un grup de recerca en intel·ligència artificial de Google. S'utilitza en moltes CPU, GPU i processadors d'IA, com ara els processadors Intel Xeon (extensions AVX-512 BF16), la GPU Intel Data Center, l'Intel Nervana NNP-L1000, les FPGA d'Intel,[5][6][7] AMD Zen, AMD Instinct, les GPU NVIDIA, les TPU de Google Cloud,[8][9][10] AWS Inferentia, AWS Trainium, ARMv8.6-A,[11] i els xips M2[12] i, per tant, A15 d'Apple i posteriors. Moltes biblioteques admeten bfloat16, com ara CUDA,[13] Intel oneAPI Math Kernel Library, AMD ROCM,[14] AMD Optimizing CPU Libraries, PyTorch i TensorFlow.[10] En aquestes plataformes, bfloat16 també es pot utilitzar en aritmètica de precisió mixta, on es pot operar amb els nombres bfloat16 i expandir-los a tipus de dades més amplis.

Remove ads

Format de coma flotant bfloat16

bfloat16 té el format següent:

El format bfloat16, que és un nombre float de 32 bits de precisió simple IEEE 754 abreujat, permet una conversió ràpida des de i cap a un nombre float de 32 bits de precisió simple IEEE 754; en la conversió al format bfloat16, els bits d'exponent es conserven mentre que el camp significand es pot reduir mitjançant truncament (corresponent així a l'arrodoniment cap a 0) o altres mecanismes d'arrodoniment, ignorant el cas especial de NaN. Preservar els bits d'exponent manté el rang del nombre flotant de 32 bits de ≈ 10−38 a ≈ 3 × 1038.[15]

Els bits estan disposats de la següent manera:

IEEE half-precision 16-bit float
sign exponent (5 bit) fraction (10 bit)
  
 0  0  1  1  0  0  0  1  0  0  0  0  0  0  0  0
15 14 10 9 0
bfloat16
sign exponent (8 bit) fraction (7 bit)
  
 0  0  1  1  1  1  1  0  0  0  1  0  0  0  0  0
15 14 7 6 0
Nvidia's TensorFloat-32 (19 bits)
sign exponent (8 bit) fraction (10 bit)
  
 0  0  1  1  1  1  1  0  0  0  1  0  0  0  0  0  0  0  0
18 17 10 9 0
AMD's fp24 format
sign exponent (7 bit) fraction (16 bit)
  
 0  0  1  1  1  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0
23 22 16 15 0
Pixar's PXR24 format
sign exponent (8 bit) fraction (15 bit)
  
 0  0  1  1  1  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0
23 22 15 14 0
IEEE 754 single-precision 32-bit float
sign exponent (8 bit) fraction (23 bit)
  
 0  0  1  1  1  1  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
31 30 23 22 0

Codificació d'exponents

L'exponent de coma flotant binari bfloat16 es codifica mitjançant una representació offset-binary, amb el offset zero de 127; també conegut com a biaix d'exponent a l'estàndard IEEE 754.

  • E mín = 01 H −7F H = −126
  • E màx = FE H −7F H = 127
  • Biaix d'exponent = 7F H = 127

Per tant, per obtenir l'exponent real tal com es defineix per la representació offset-binary, cal restar el desplaçament de 127 del valor del camp d'exponent.

Els valors mínim i màxim del camp d'exponent (00 H i FF H) s'interpreten de manera especial, com en els formats estàndard IEEE 754.

El valor normal positiu mínim és 2−126 ≈ 1,18 × 10−38 i el valor positiu mínim (subnormal) és 2−126−7 = 2−133 ≈ 9,2 × 10−41.

Més informació Exponent, Significant zero ...
Remove ads

Exemples

Aquests exemples es donen en representació de bits, en hexadecimal i binari, del valor de coma flotant. Això inclou el signe, l'exponent (biaixat) i el significand.

3f80 = 0 01111111 0000000 = 1

c000 = 1 10000000 0000000 = −2

7f7f = 0 11111110 1111111 = (28 − 1) × 2−7 × 2127 ≈ 3,38953139 × 1038 (valor positiu finit màxim en precisió bfloat16) 0080 = 0 00000001 0000000 = 2−126 ≈ 1.175494351 × 10−38 (valor positiu mínim normalitzat en bfloat16 de precisió i coma flotant de precisió simple)

El valor finit positiu màxim d'un nombre bfloat16 normal és 3,38953139 × 10^38, lleugerament per sota de (2^24 − 1) × 2−23 × 2^127 = 3,402823466 × 10^38, el valor finit positiu màxim representable en simple precisió.

Remove ads

Referències

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads