Bfloat16 फ़्लोटिंग-पॉइंट प्रारूप

Bfloat16 (मस्तिष्क फ़्लोटिंग पॉइंट) फ़्लोटिंग-पॉइंट प्रारूप कंप्यूटर नंबर प्रारूप है जो स्मृति में 16-बिट रखता है; यह तैरनेवाला स्थल का उपयोग करके संख्यात्मक मानों की विस्तृत गतिशील श्रृंखला का प्रतिनिधित्व करता है। यह प्रारूप हार्डवेयर एक्सिलरेशन यंत्र अधिगम और बुद्धिमान सेंसर के इरादे से 32-बिट एकल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप Iआईईईई 754 सिंगल-प्रिसिजन फ्लोटिंग-पॉइंट फॉर्मेट (बाइनरी 32) का छोटा (16-बिट) संस्करण है। सेंसर कंप्यूटिंग. यह 8 एक्सपोनेंट पूर्वाग्रह को बनाए रखते हुए 32-बिट फ्लोटिंग-पॉइंट नंबरों की अनुमानित गतिशील रेंज को संरक्षित करता है, लेकिन बाइनरी32 प्रारूप के 24-बिट महत्व के बजाय केवल 8-बिट परिशुद्धता का समर्थन करता है। एकल-परिशुद्धता 32-बिट फ़्लोटिंग-पॉइंट संख्याओं से अधिक, bfloat16 संख्याएँ पूर्णांक गणना के लिए अनुपयुक्त हैं, लेकिन यह उनका इच्छित उपयोग नहीं है। Bfloat16 का उपयोग भंडारण आवश्यकताओं को कम करने और मशीन लर्निंग एल्गोरिदम की गणना गति को बढ़ाने के लिए किया जाता है।

Bfloat16 प्रारूप गूगल ब्रेन द्वारा विकसित किया गया था, जो गूगल का कृत्रिम बुद्धिमत्ता अनुसंधान समूह है। इसका उपयोग Intel AI त्वरक में किया जाता है, जैसे नर्वाना सिस्टम्स NNP-L1000, Xeon प्रोसेसर (AVX-512 BF16 एक्सटेंशन), ​​और Intel FPGAs,  गूगल क्लाउड टेन्सर प्रोसेसिंग इकाइयाँ,   और TensorFlow। ARM आर्किटेक्चर#ARMv8.6-A|ARMv8.6-A, रेफरी> AMD OpenCL#ओपन सोर्स कार्यान्वयन, रेफरी> सीयूडीए, रेफरी> Apple का Apple M2 रेफरी> और इसलिए Apple A15 चिप्स और बाद में, bfloat16 प्रारूप का भी समर्थन करते हैं। इन प्लेटफार्मों पर, bfloat16 का उपयोग मिश्रित-सटीक अंकगणित में भी किया जा सकता है, जहां bfloat16 संख्याओं को संचालित किया जा सकता है और व्यापक डेटा प्रकारों तक विस्तारित किया जा सकता है।

bfloat16 फ़्लोटिंग-पॉइंट प्रारूप
bfloat16 में निम्नलिखित प्रारूप है:
 * साइन बिट: 1 बिट
 * घातांक चौड़ाई: 8 बिट्स
 * महत्वपूर्ण परिशुद्धता (अंकगणित): 8 बिट्स (7 स्पष्ट रूप से संग्रहीत, अंतर्निहित अग्रणी बिट के साथ), शास्त्रीय एकल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप में 24 बिट्स के विपरीत

Bfloat16 प्रारूप, छोटा एकल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप है | आईईईई 754 एकल-परिशुद्धता 32-बिट फ़्लोट, आईईईई 754 एकल-परिशुद्धता 32-बिट फ़्लोट से तेज़ प्रकार के रूपांतरण की अनुमति देता है; Bfloat16 प्रारूप में रूपांतरण में, घातांक बिट्स को संरक्षित किया जाता है, जबकि NaN विशेष मामले को अनदेखा करते हुए महत्व क्षेत्र को काट-छाँट (इस प्रकार आईईईई 754 राउंडिंग नियमों के अनुरूप) द्वारा कम किया जा सकता है। प्रतिपादक बिट्स को संरक्षित करने से 32-बिट फ्लोट की रेंज ≈ 10 बनी रहती है−38 से ≈ 3 × 1038.

बिट्स को इस प्रकार रखा गया है:

किंवदंती

 * {{Legend|#f99|S: sign}}
 * {{Legend|#9f9|E: exponent}}
 * {{Legend|#99f|एफ: अंश (दोनों प्रारूपों में महत्वपूर्ण से पीछे)।}}
 * {{Legend|#ccc|एफ: 32-बिट में अंश (अनुगामी महत्व) एकल परिशुद्धता (तुलनात्मक)}}

घातांक एन्कोडिंग
Bfloat16 बाइनरी फ्लोटिंग-पॉइंट एक्सपोनेंट को ऑफसेट बाइनरी | ऑफसेट-बाइनरी प्रतिनिधित्व का उपयोग करके एन्कोड किया गया है, जिसमें शून्य ऑफसेट 127 है; आईईईई 754 मानक में प्रतिपादक पूर्वाग्रह के रूप में भी जाना जाता है।
 * इmin = 01H−7FH = −126
 * औरmax = एफईH−7FH = 127
 * घातांक पूर्वाग्रह = 7FH = 127

इस प्रकार, ऑफसेट-बाइनरी प्रतिनिधित्व द्वारा परिभाषित वास्तविक प्रतिपादक प्राप्त करने के लिए, 127 के ऑफसेट को प्रतिपादक क्षेत्र के मूल्य से घटाना होगा।

घातांक फ़ील्ड का न्यूनतम और अधिकतम मान (00)H और एफएफH) की विशेष रूप से व्याख्या की जाती है, जैसे आईईईई 754 मानक प्रारूपों में। न्यूनतम सकारात्मक सामान्य मान 2 है−126 ≈ 1.18 × 10−38 और न्यूनतम सकारात्मक (असामान्य) मान 2 है−126−7 = 2−133 ≈9.2 × 10−41.

सकारात्मक और नकारात्मक अनंत
जैसे आईईईई 754 में, सकारात्मक और नकारात्मक अनंत को उनके संबंधित साइन बिट्स के साथ दर्शाया जाता है, सभी 8 एक्सपोनेंट बिट्स सेट (एफएफ)hex) और सभी महत्वपूर्ण बिट्स शून्य। स्पष्ट रूप से,

कोई संख्या नहीं
जैसे आईईईई 754 में, NaN मानों को या तो साइन बिट के साथ दर्शाया जाता है, सभी 8 एक्सपोनेंट बिट्स सेट (एफएफ)hex) और सभी महत्वपूर्ण बिट्स शून्य नहीं हैं। स्पष्ट रूप से, जहां k, l, m, n, o, p, या q में से कम से कम 1 है। आईईईई 754 की तरह, NaN मान शांत या सिग्नलिंग हो सकते हैं, हालांकि सितंबर 2018 तक bfloat16 NaNs सिग्नलिंग का कोई ज्ञात उपयोग नहीं है।

सीमा और परिशुद्धता
Bfloat16 को 32-बिट सिंगल-प्रिसिजन फ़्लोटिंग-पॉइंट फॉर्मेट | आईईईई 754 सिंगल-प्रिसिजन फ़्लोटिंग-पॉइंट फॉर्मेट (बाइनरी 32) से संख्या सीमा बनाए रखने के लिए डिज़ाइन किया गया है, जबकि परिशुद्धता को 24 बिट्स से घटाकर 8 बिट्स किया गया है। इसका मतलब है कि परिशुद्धता दो और तीन दशमलव अंकों के बीच है, और bfloat16 लगभग 3.4 × 10 तक परिमित मानों का प्रतिनिधित्व कर सकता है38.

उदाहरण
ये उदाहरण फ्लोटिंग-पॉइंट मान के हेक्साडेसिमल और बाइनरी संख्या में बिट प्रतिनिधित्व में दिए गए हैं। इसमें संकेत, (पक्षपातपूर्ण) प्रतिपादक और महत्व शामिल हैं। 3f80 = 0 01111111 0000000 = 1 c000 = 1 10000000 0000000 = −2

7f7f = 0 11111110 1111111 = (28 − 1)×2−7×2127 ≈ 3.38953139 × 1038 (bfloat16 परिशुद्धता में अधिकतम परिमित सकारात्मक मान) 0080 = 0 00000001 000000 = 2−126 ≈ 1.175494351 × 10−38 (bfloat16 परिशुद्धता और एकल-परिशुद्धता फ़्लोटिंग बिंदु में न्यूनतम सामान्यीकृत सकारात्मक मान) एक सामान्य bfloat16 संख्या का अधिकतम सकारात्मक परिमित मान 3.38953139 × 10 है38, थोड़ा नीचे (224 − 1)×2−23×2127 = 3.402823466 × 1038, एकल परिशुद्धता में दर्शाने योग्य अधिकतम परिमित सकारात्मक मान।

शून्य और अनंत
0000 = 0 00000000 0000000 = 0 8000 = 1 00000000 0000000 = −0

7f80 = 0 11111111 0000000 = infinity ff80 = 1 11111111 0000000 = −infinity

विशेष मान
4049 = 0 10000000 1001001 = 3.140625 ≈ π ( pi ) 3eab = 0 01111101 0101011 = 0.333984375 ≈ 1/3

NaNs
ffc1 = x 11111111 1000001 => qNaN ff81 = x 11111111 0000001 => sNaN

यह भी देखें

 * अर्ध-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप: 16-बिट फ़्लोट w/1-बिट साइन, 5-बिट एक्सपोनेंट, और 11-बिट महत्व, जैसा कि आईईईई 754 द्वारा परिभाषित किया गया है
 * आईएसओ/आईईसी 10967, भाषा स्वतंत्र अंकगणित
 * आदिम डेटा प्रकार
 * मिनीफ्लोट
 * गूगल ब्रेन