ميني فلوت
في مجال الحوسبة ، تُعرف الأعداد العشرية المصغرة بأنها قيم الفاصلة العائمة التي يتم تمثيلها بعدد قليل جدًا من البتات . هذه الدقة المنخفضة تجعلها غير مناسبة للحسابات العددية العامة، ولكنها مفيدة لأغراض خاصة مثل:
- في مجال رسومات الحاسوب، حيث تكون دقة إدراك الإنسان للألوان ومستويات الإضاءة منخفضة. [ 1 ] يُعد تنسيق 16 بت بنصف الدقة شائعًا جدًا.
- التعلم الآلي ، الذي يمكن أن يكون غير حساس نسبياً للدقة العددية. يتم استخدام الأعداد العشرية ذات 16 بت و8 بت وحتى 4 بت بشكل متزايد. [ 2 ]
بالإضافة إلى ذلك، يتم مواجهتها بشكل متكرر كأداة تعليمية في دورات علوم الحاسوب لتوضيح خصائص وهياكل الحساب ذي الفاصلة العائمة وأرقام IEEE 754 .
بحسب السياق، قد يعني مصطلح "minifloat" أي حجم أقل من 32، أو أي حجم أقل من أو يساوي 16، أو أي حجم أقل من 16. وقد يعني مصطلح "microfloat" أي حجم أقل من أو يساوي 8. [ 3 ]
الترميز
تستخدم هذه الصفحة الرمز ( SEM ) لوصف عائم صغير:
- S هو طول حقل الإشارة (0 أو 1).
- يمثل E طول حقل الأس.
- M هو طول حقل المانتسا (الجزء المهم).
يمكن تصميم الأعداد العشرية الصغيرة (Minifloats) وفقًا لمبادئ معيار IEEE 754. تستخدم معظمها أصغر أس للأعداد غير الطبيعية والطبيعية . بينما يستخدم العديد منها أكبر أس للقيم اللانهائية و NaN ، ويُشار إليه بالأس الخاص SE = 1. بعض الأعداد العشرية الصغيرة تستخدم قيمة الأس هذه بشكل طبيعي، وفي هذه الحالة يكون SE = 0 .
الانحياز الأسي B = 2 E − 1 − SE . تضمن هذه القيمة أن جميع الأعداد القابلة للتمثيل لها مقلوب قابل للتمثيل .
يمكن تحويل الترميز إلى تنسيق ( B,P,L,U ) على النحو التالي (2, M + 1, SE − 2E − 1 + 1, 2E − 1 − 1) .
يُستخدم في مجال التعلّم الآلي ترميز شائع هو FP n E e M m ، حيث تُستبدل الأحرف الصغيرة بالأرقام. على سبيل المثال، FP8-E4M3 هو نفسه (1.4.3).
الاستخدام
في كثير من الحالات التي تتطلب أرقامًا عشرية، لا تحتاج في الواقع إلى دقة عالية. وهذا شائع في معالجة الصور والرسومات ذات النطاق الديناميكي العالي. وينطبق هذا أيضًا على الشبكات العصبية الكبيرة، وهي خاصية استُغلت منذ عشرينيات القرن الحادي والعشرين لتمكين تدريب ونشر نماذج لغوية أكبر حجمًا . ومن الأمثلة الأكثر عمومية على ذلك معيار fp16 (1.5.10) في معيار IEEE 754-2008 ، والذي يُسمى " نصف الدقة " (مقارنةً بالدقة المفردة 32 بت والدقة المزدوجة 64 بت ).
تنسيق bfloat16 (1.8.7) هو أول 16 بت من رقم قياسي أحادي الدقة وكان يستخدم غالبًا في معالجة الصور والتعلم الآلي قبل إضافة دعم الأجهزة للتنسيقات الأخرى.
الرسومات
استخدمت وحدات معالجة الرسومات Radeon R300 و R420 تنسيق الفاصلة العائمة "fp24" (1.7.16). [ 4 ] يُعد "الدقة الكاملة" في Direct3D 9.0 تنسيقًا خاصًا للفاصلة العائمة 24 بت. دعمت واجهة برمجة تطبيقات الرسومات D3D9 (Shader Model 2.0) من مايكروسوفت في البداية كلاً من FP24 (كما في شريحة ATI R300) وFP32 (كما في شريحة Nvidia NV30) كـ"دقة كاملة"، بالإضافة إلى FP16 كـ"دقة جزئية" لحسابات تظليل الرؤوس والبكسل التي تُجريها وحدة معالجة الرسومات.
في عام 2016، حددت شركة كرونوس تنسيقات غير موقعة ذات 10 بت (0.5.5) و11 بت (0.5.6) لاستخدامها مع فولكان. [ 5 ] [ 6 ] ويمكن تحويل هذه التنسيقات من دقة نصف موجبة عن طريق حذف الإشارة والأرقام اللاحقة.
وحدة تحكم دقيقة
تُستخدم الأعداد العشرية الصغيرة أيضًا بشكل شائع في الأجهزة المدمجة مثل المتحكمات الدقيقة ، حيث يلزم محاكاة العمليات الحسابية ذات الفاصلة العائمة برمجيًا. ولتسريع الحساب، يشغل الجزء الكسري عادةً نصف البتات بالضبط، لذا فإن حدود السجل تُعنون الأجزاء تلقائيًا دون إزاحة (مثل (1.3.4) على الأجهزة ذات 4 بتات).
التعلم الآلي
في عام 2022، أعلنت إنفيديا وشركات أخرى دعمها لصيغة "fp8" (1.5.2، E5M2). يمكن تحويل هذه الصيغة من الدقة النصفية عن طريق حذف الأرقام الأخيرة. تدعم هذه الصيغة قيمًا خاصة مثل NaN واللانهاية. كما أعلنت الشركات عن صيغة أخرى لا تدعم اللانهاية، وتقتصر على تمثيلين فقط (موجب وسالب) لـ NaN، وهي FP8-E4M3 (1.4.3): ففي النهاية، لا حاجة للقيم الخاصة في عملية الاستدلال (التشغيل الأمامي، على عكس التدريب عبر الانتشار العكسي ) للشبكات العصبية. [ 2 ] وقد أصبحت هذه الصيغ معيارًا صناعيًا يُعرف باسم OCP-FP8. [ 7 ] كما أثبتت تقنيات ضغط أخرى، مثل FP4-E2M1 (1.2.1)، جدواها. [ 8 ]
| 0.000 | 0.001 | 0.010 | 0.011 | 0.100 | 0.101 | 0.110 | 0.111 | |
|---|---|---|---|---|---|---|---|---|
| 0... | 0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 6 |
| 1... | - 0 | - 0.5 | - 1 | - 1.5 | -2 | - 3 | - 4 | -6 |
منذ عام 2023، تعمل مجموعة العمل P3109 التابعة لمعهد مهندسي الكهرباء والإلكترونيات (IEEE) على وضع معيار للأعداد العشرية الصغيرة (minifloat) مُحسَّن للتعلم الآلي، وذلك من خلال تنظيم الممارسات الحالية. يُعرّف التقرير المؤقت، الإصدار 3.0 (أغسطس 2025)، مجموعة من التنسيقات تحت الاسم المنهجي "binary K p P [s/u][e/f]"، حيث K هو إجمالي طول البتات، و P هي الدقة (عدد بتات الجزء الكسري + 1)، وs/u (مُوَقَّع/غير مُوَقَّع) يُشير إلى وجود بت الإشارة، وe/f (مُمتد/مُنْتَهِم) يُشير إلى تضمين اللانهاية. اصطلاحًا، يُمكن حذف s وe. لتوفير مساحة لأرقام أكثر، لا يوجد ما يُسمى "صفر سالب"، ولا يوجد سوى تمثيل واحد لـ NaN؛ بالنسبة للتنسيقات المُوَقَّعة، يُمكن لـ NaN استخدام نمط البتات لما كان سيُمثل صفرًا سالبًا. على سبيل المثال، يمكن تقريب تنسيق FP4-E2M1 على النحو التالي في P3109: [ 9 ]
| 0.000 | 0.001 | 0.010 | 0.011 | 0.100 | 0.101 | 0.110 | 0.111 | |
|---|---|---|---|---|---|---|---|---|
| 0... | 0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 6 |
| 1... | NaN | - 0.5 | - 1 | - 1.5 | -2 | - 3 | - 4 | -6 |
(بالنسبة لـ binary4p2se، يتم استبدال ± 6 بـ ± Infinity.)
من عيوب الأعداد العشرية الصغيرة جدًا (minifloat) محدودية نطاقها الديناميكي القابل للتمثيل . ولحل هذه المشكلة، ابتكرت صناعة التعلم الآلي "تنسيقات القياس المصغر" (MX)، وهي نوع من الأعداد العشرية الكتلية . في تنسيق MX، تشترك مجموعة من 32 عددًا عشريًا صغيرًا في عامل قياس إضافي يُمثله عدد عشري صغير "E8M0" (القادر على تمثيل قوى العدد 2 بين 2⁻¹²⁷ و2¹²⁷ ) . وقد تم تعريف MX للأعداد العشرية FP8-E5M2، وFP8-E4M3، و FP6-E3M2 (1.3.2)، وFP6-E2M3 (1.2.3)، وFP4-E2M1. [ 10 ]
أمثلة
8 بت (1.4.3)
يُعرض هنا نموذجٌ لعدد عشري صغير (minifloat) بحجم بايت واحد (8 بتات) يحتوي على بت إشارة واحد، و4 بتات للأس، و3 بتات للمعامل (1.4.3). تم تعريف انحياز الأس على أنه 7 لتركيز القيم حول 1 بما يتوافق مع معايير IEEE 754 الأخرى للأعداد العشرية [ 11 ] [ 12 ] ، لذا (بالنسبة لمعظم القيم) يكون المضاعف الفعلي للأس x هو 2x - 7. ينبغي أن تكون جميع مبادئ IEEE 754 سارية المفعول. [ 13 ] هذا الشكل شائع جدًا في التعليمات.
| لافتة | الأس | المهم | |||||
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
يُكتب الصفر على شكل أس صفري وجزء عشري صفري. الأس الصفري يعني أن الصفر عدد غير طبيعي مسبوق بـ "0."، ومع الجزء العشري الصفري، تكون جميع البتات بعد الفاصلة العشرية أصفارًا، مما يعني أن هذه القيمة تُفسر على أنهاتستخدم الأعداد العشرية ذات الفاصلة العائمة صفرًا مُوَقَّعًا ، لذاوهو متاح أيضًا ويساوي قيمة موجبة.
0 0000 000 = 0 1 0000 000 = −0
بالنسبة لأصغر أس، يتم تمديد الجزء الدال بـ "0." ويتم التعامل مع قيمة الأس على أنها أعلى بمقدار 1 مثل أصغر عدد معياري:
0 0000 001 = 0.001 2 × 2 1 − 7 = 0.125 × 2 −6 = 0.001953125 (أصغر عدد دون المستوى الطبيعي) ... 0 0000 111 = 0.111 2 × 2 1 − 7 = 0.875 × 2 −6 = 0.013671875 (أكبر عدد دون الطبيعي)
يتم تمديد جميع الأسس الأخرى بالمعامل "1".:
0 0001 000 = 1.000 2 × 2 1 − 7 = 1 × 2 −6 = 0.015625 (أصغر عدد معياري) 0 0001 001 = 1.001 2 × 2 1 − 7 = 1.125 × 2 −6 = 0.017578125 ... 0 0111 000 = 1.000 2 × 2 7 − 7 = 1 × 2 0 = 1 0 0111 001 = 1.001 2 × 2 7 − 7 = 1.125 × 2 0 = 1.125 (أصغر قيمة أكبر من 1) ... 0 1110 000 = 1.000 2 × 2 14 − 7 = 1.000 × 2 7 = 128 0 1110 001 = 1.001 2 × 2 14 − 7 = 1.125 × 2 7 = 144 ... 0 1110 110 = 1.110 2 × 2 14 − 7 = 1.750 × 2 7 = 224 0 1110 111 = 1.111 2 × 2 14 − 7 = 1.875 × 2 7 = 240 (أكبر عدد معياري)
تحتوي قيم اللانهاية على أعلى أس، مع ضبط الجزء الكسري على الصفر. يمكن أن تكون خانة الإشارة موجبة أو سالبة.
0 1111 000 = +∞ 1,1111,000 = −∞
تحتوي قيم NaN على أعلى أس، مع كون الجزء الكسري غير صفري.
s 1111 mmm = NaN (إذا كان mmm ≠ 000)
هذا مخطط لجميع القيم الممكنة لهذا المثال من نوع float ذي 8 بت:
| … ٠٠٠ | … ٠٠١ | … 010 | … 011 | 100 | 101 | 110 | ١١١ | |
|---|---|---|---|---|---|---|---|---|
| 0 0000 … | 0 | 0.001953125 | 0.00390625 | 0.005859375 | 0.0078125 | 0.009765625 | 0.01171875 | 0.013671875 |
| 0 0001 … | 0.015625 | 0.017578125 | 0.01953125 | 0.021484375 | 0.0234375 | 0.025390625 | 0.02734375 | 0.029296875 |
| 0 0010 … | 0.03125 | 0.03515625 | 0.0390625 | 0.04296875 | 0.046875 | 0.05078125 | 0.0546875 | 0.05859375 |
| 0 0011 … | 0.0625 | 0.0703125 | 0.078125 | 0.0859375 | 0.09375 | 0.1015625 | 0.109375 | 0.1171875 |
| 0 0100 … | 0.125 | 0.140625 | 0.15625 | 0.171875 | 0.1875 | 0.203125 | 0.21875 | 0.234375 |
| 0 0101 … | 0.25 | 0.28125 | 0.3125 | 0.34375 | 0.375 | 0.40625 | 0.4375 | 0.46875 |
| 0 0110 … | 0.5 | 0.5625 | 0.625 | 0.6875 | 0.75 | 0.8125 | 0.875 | 0.9375 |
| 0 0111 … | 1 | 1.125 | 1.25 | 1.375 | 1.5 | 1.625 | 1.75 | 1.875 |
| 0 1000 … | 2 | 2.25 | 2.5 | 2.75 | 3 | 3.25 | 3.5 | 3.75 |
| 0 1001 … | 4 | 4.5 | 5 | 5.5 | 6 | 6.5 | 7 | 7.5 |
| 0 1010 … | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 0 1011 … | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 |
| 0 1100 … | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 |
| 0 1101 … | 64 | 72 | 80 | 88 | 96 | 104 | 112 | 120 |
| 0 1110 … | 128 | 144 | 160 | 176 | 192 | 208 | 224 | 240 |
| 0 1111 … | معلومات | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 10000 … | -0 | -0.001953125 | -0.00390625 | -0.005859375 | -0.0078125 | -0.009765625 | -0.01171875 | -0.013671875 |
| 10001 … | -0.015625 | -0.017578125 | -0.01953125 | -0.021484375 | -0.0234375 | -0.025390625 | -0.02734375 | -0.029296875 |
| 1 0010 … | -0.03125 | -0.03515625 | -0.0390625 | -0.04296875 | -0.046875 | -0.05078125 | -0.0546875 | -0.05859375 |
| 1 0011 … | -0.0625 | -0.0703125 | -0.078125 | -0.0859375 | -0.09375 | -0.1015625 | -0.109375 | -0.1171875 |
| 1 0100 … | -0.125 | -0.140625 | -0.15625 | -0.171875 | -0.1875 | -0.203125 | -0.21875 | -0.234375 |
| 1 0101 … | -0.25 | -0.28125 | -0.3125 | -0.34375 | -0.375 | -0.40625 | -0.4375 | -0.46875 |
| 1 0110 … | -0.5 | -0.5625 | -0.625 | -0.6875 | -0.75 | -0.8125 | -0.875 | -0.9375 |
| 1 0111 … | -1 | -1.125 | -1.25 | -1.375 | -1.5 | -1.625 | -1.75 | -1.875 |
| 1 1000 … | -2 | -2.25 | -2.5 | -2.75 | -3 | -3.25 | -3.5 | -3.75 |
| 1 1001 … | -4 | -4.5 | -5 | -5.5 | -6 | -6.5 | -7 | -7.5 |
| 1 1010 … | -8 | -9 | -10 | -11 | -12 | -13 | -14 | -15 |
| 1 1011 … | -16 | -18 | -20 | -22 | -24 | -26 | -28 | -30 |
| 1 1100 … | -32 | -36 | -40 | -44 | -48 | -52 | -56 | -60 |
| 1 1101 … | -64 | -72 | -80 | -88 | -96 | -104 | -112 | -120 |
| 1 1110 … | -128 | -144 | -160 | -176 | -192 | -208 | -224 | -240 |
| 1 1111 … | -Inf | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
لا يوجد سوى 242 قيمة مختلفة غير NaN (إذا اعتبرنا +0 و -0 مختلفين)، لأن 14 من أنماط البتات تمثل NaNs.
لتحويل البيانات من وإلى أعداد عشرية ذات 8 بت في لغات البرمجة، عادةً ما تكون هناك حاجة إلى مكتبات أو دوال، لأن هذا التنسيق غير موحد. على سبيل المثال، إليك مثال على تطبيق بلغة C++ (متاح للجميع).
8 بت (1.4.3) مع B = −2
عند هذه الأحجام الصغيرة، قد تكون قيم الانحياز الأخرى مثيرة للاهتمام، على سبيل المثال، الانحياز -2 سيجعل الأرقام من 0 إلى 16 لها نفس تمثيل البتات مثل الأعداد الصحيحة من 0 إلى 16، مع فقدان عدم إمكانية تمثيل أي قيم غير صحيحة.
0 0000 000 = 0.000 2 × 2 1 - (-2) = 0.0 × 2 3 = 0 (عدد دون المستوى الطبيعي) 0 0000 001 = 0.001 2 × 2 1 - (-2) = 0.125 × 2 3 = 1 (عدد دون المستوى الطبيعي) 0 0000 111 = 0.111 2 × 2 1 - (-2) = 0.875 × 2 3 = 7 (عدد دون المستوى الطبيعي) 0 0001 000 = 1.000 2 × 2 1 - (-2) = 1.000 × 2 3 = 8 (عدد معياري) 0 0001 111 = 1.111 2 × 2 1 - (-2) = 1.875 × 2 3 = 15 (عدد معياري) 0 0010 000 = 1.000 2 × 2 2 - (-2) = 1.000 × 2 4 = 16 (عدد معياري)
8 بت (1.3.4)
يُمكن تخصيص أي عدد من البتات. يُمكن للتنسيق اختيار تخصيص عدد أكبر من البتات للأس إذا كان يتطلب نطاقًا ديناميكيًا أوسع مع دقة أقل، أو تخصيص عدد أكبر من البتات للجزء الكسري إذا كان يتطلب دقة أكبر مع نطاق ديناميكي أضيق. في أقصى الحالات، يُمكن تخصيص جميع البتات للأس (1.7.0)، أو تخصيص جميع البتات باستثناء بت واحد للجزء الكسري (1.1.6)، مما يترك للأس بتًا واحدًا فقط. يجب تخصيص بت واحد على الأقل للأس، وإلا فإنه يفقد معناه كعدد عشري، ويصبح مجرد عدد صحيح مُوَقَّع .
فيما يلي جدول بجميع القيم الممكنة للمعادلة (1.3.4). يضمن الشرط M ≥ 2E − 1 أن تظل الدقة على الأقل 0.5 في النطاق بأكمله. [ 14 ]
| … 0000 | … ٠٠٠١ | … ٠٠١٠ | … ٠٠١١ | … 0100 | … 0101 | … 0110 | … 0111 | ... 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | ١١١٠ | ١١١١ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 000 … | 0 | 0.015625 | 0.03125 | 0.046875 | 0.0625 | 0.078125 | 0.09375 | 0.109375 | 0.125 | 0.140625 | 0.15625 | 0.171875 | 0.1875 | 0.203125 | 0.21875 | 0.234375 |
| 0 001 … | 0.25 | 0.265625 | 0.28125 | 0.296875 | 0.3125 | 0.328125 | 0.34375 | 0.359375 | 0.375 | 0.390625 | 0.40625 | 0.421875 | 0.4375 | 0.453125 | 0.46875 | 0.484375 |
| 0 010 … | 0.5 | 0.53125 | 0.5625 | 0.59375 | 0.625 | 0.65625 | 0.6875 | 0.71875 | 0.75 | 0.78125 | 0.8125 | 0.84375 | 0.875 | 0.90625 | 0.9375 | 0.96875 |
| 0 011 … | 1 | 1.0625 | 1.125 | 1.1875 | 1.25 | 1.3125 | 1.375 | 1.4375 | 1.5 | 1.5625 | 1.625 | 1.6875 | 1.75 | 1.8125 | 1.875 | 1.9375 |
| 0 100 … | 2 | 2.125 | 2.25 | 2.375 | 2.5 | 2.625 | 2.75 | 2.875 | 3 | 3.125 | 3.25 | 3.375 | 3.5 | 3.625 | 3.75 | 3.875 |
| 0 101 … | 4 | 4.25 | 4.5 | 4.75 | 5 | 5.25 | 5.5 | 5.75 | 6 | 6.25 | 6.5 | 6.75 | 7 | 7.25 | 7.5 | 7.75 |
| 0 110 … | 8 | 8.5 | 9 | 9.5 | 10 | 10.5 | 11 | 11.5 | 12 | 12.5 | 13 | 13.5 | 14 | 14.5 | 15 | 15.5 |
| 0 111 … | معلومات | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 1000 … | -0 | -0.015625 | -0.03125 | -0.046875 | -0.0625 | -0.078125 | -0.09375 | -0.109375 | -0.125 | -0.140625 | -0.15625 | -0.171875 | -0.1875 | -0.203125 | -0.21875 | -0.234375 |
| 1001 … | -0.25 | -0.265625 | -0.28125 | -0.296875 | -0.3125 | -0.328125 | -0.34375 | -0.359375 | -0.375 | -0.390625 | -0.40625 | -0.421875 | -0.4375 | -0.453125 | -0.46875 | -0.484375 |
| 1010 … | -0.5 | -0.53125 | -0.5625 | -0.59375 | -0.625 | -0.65625 | -0.6875 | -0.71875 | -0.75 | -0.78125 | -0.8125 | -0.84375 | -0.875 | -0.90625 | -0.9375 | -0.96875 |
| 1011 … | -1 | -1.0625 | -1.125 | -1.1875 | -1.25 | -1.3125 | -1.375 | -1.4375 | -1.5 | -1.5625 | -1.625 | -1.6875 | -1.75 | -1.8125 | -1.875 | -1.9375 |
| 1 100 … | -2 | -2.125 | -2.25 | -2.375 | -2.5 | -2.625 | -2.75 | -2.875 | -3 | -3.125 | -3.25 | -3.375 | -3.5 | -3.625 | -3.75 | -3.875 |
| 1 101 … | -4 | -4.25 | -4.5 | -4.75 | -5 | -5.25 | -5.5 | -5.75 | -6 | -6.25 | -6.5 | -6.75 | -7 | -7.25 | -7.5 | -7.75 |
| 1 110 … | -8 | -8.5 | -9 | -9.5 | -10 | -10.5 | -11 | -11.5 | -12 | -12.5 | -13 | -13.5 | -14 | -14.5 | -15 | -15.5 |
| 1 111 … | -Inf | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
يمكن إنشاء جداول مثل الجدول أعلاه لأي مجموعة من قيم SEMB (الإشارة، والأس، والجزء الكسري/المعامل، والانحياز) باستخدام برنامج نصي بلغة بايثون أو بلغة GDScript .
6 بت (1.3.2)
باستخدام 64 قيمة فقط، من الممكن رسم جميع القيم في مخطط بياني، وهو ما يمكن أن يكون مفيدًا.
توضح هذه الرسوم البيانية العمليات الحسابية لعددين من نوع minifloat (1.3.2) ذي 6 بتات، وفقًا لقواعد معيار IEEE 754 بدقة. تشير علامات X الخضراء إلى نتائج NaN، وعلامات X السماوية إلى نتائج +∞، وعلامات X الأرجوانية إلى نتائج −∞. يُملأ نطاق النتائج المحدودة بمنحنيات تصل بين القيم المتساوية، الأزرق للموجب والأحمر للسالب.
إضافة
الطرح
الضرب
قسم
4 بت (1.2.1)
أصغر حجم ممكن للعدد العشري العائم الذي يتبع جميع مبادئ IEEE، بما في ذلك الأعداد المعيارية، والأعداد غير المعيارية، والصفر المُوَقَّع، واللانهاية المُوَقَّعة، وقيم NaN المتعددة، هو عدد عشري عائم مكون من 4 بتات مع بت واحد للإشارة، وبتين للأس، وبت واحد للكسر العشري. [ 15 ]
| 0.000 | 0.001 | 0.010 | 0.011 | 0.100 | 0.101 | 0.110 | 0.111 | |
|---|---|---|---|---|---|---|---|---|
| 0... | 0 | 0.5 | 1 | 1.5 | 2 | 3 | معلومات | NaN |
| 1... | - 0 | - 0.5 | - 1 | - 1.5 | -2 | - 3 | - Inf | NaN |
يُشابه هذا المثال من نوع float ذي 4 بتات تنسيق FP4-E2M1 المستخدم من قِبل Nvidia، وتنسيقات IEEE P3109 binary4p2s*، كما هو موضح أعلاه، باستثناء اختلاف تخصيص قيمتي Infinity وNaN الخاصتين. يستخدم هذا المثال تخصيصًا تقليديًا يتبع نفس مبادئ أحجام float الأخرى. قد تُفضّل أنواع float المُخصصة لحالات استخدام مُحددة للتطبيقات، بدلاً من التوافقية العامة، استخدام أنماط البتات هذه للأعداد المحدودة، وذلك حسب احتياجات التطبيق.
تشمل تنسيقات الأعداد العشرية ذات 4 بتات الأخرى MXFP4 وNVFP4 (حيث يتم استبدال أنماط البتات المنفصلة للقيم الموجبة والسالبة، وInf، وNaN كما هو مذكور أعلاه). "يتراوح نطاق القيمة في هذا التنسيق تقريبًا من -6 إلى 6. على سبيل المثال، يمكن أن تشمل القيم في هذا النطاق 0.0، 0.5، 1.0، 1.5، 2، 3، 4، 6 (وينطبق الأمر نفسه على النطاق السالب)." [ 16 ] يحتوي هذا التنسيق أيضًا على تنسيق مقياس منفصل يُخزن بشكل منفصل لكل كتلة.
3 بت (1.1.1)
إذا لم تكن الأرقام المعيارية مطلوبة، فيمكن تقليل الحجم إلى 3 بت عن طريق تقليل الأس إلى 1.
| .00 | 0.01 | 0.10 | 0.11 | |
|---|---|---|---|---|
| 0... | 0 | 1 | معلومات | NaN |
| 1... | - 0 | - 1 | - Inf | NaN |
2 بت (0.1.1) و 3 بت (0.2.1)
في الحالات التي يمكن فيها استبعاد بت الإشارة، يمكن تقليل كل مثال من الأمثلة السابقة بمقدار بت واحد إضافي، مع الاحتفاظ فقط بالصف الأول من الجداول المذكورة. العدد العشري ذو البتتين، مع أس وجزء كسري مكونين من بت واحد، لن يحتوي إلا على القيم 0، 1، ∞، وNaN.
بت واحد (0.1.0)
إزالة الجزء الكسري (المانتسا) لا تُنتج سوى قيمتين: صفر وما لا نهاية. إزالة الأس لا تُجدي نفعًا، فالصيغ المذكورة أعلاه تُنتج صفرًا وجذر 2 مقسومًا على 2. يجب أن يكون الأس بتًا واحدًا على الأقل، وإلا فلن يكون له معنى كعدد عشري (سيصبح مجرد عدد صحيح مُوَقَّع ).
انظر أيضاً
مراجع
- ↑ موسيرينو، لوكا؛ كاليميرا، أندريا (24 نوفمبر 2021). "AxP: خط أنابيب تصميم مشترك للأجهزة والبرمجيات لشبكات عصبية التفافية تقريبية موفرة للطاقة عبر المطابقة الترابطية" . العلوم التطبيقية . 11 (23) 11164. doi : 10.3390/app112311164 .
- ١ ٢ https://developer.nvidia.com/blog/nvidia-arm-and-intel-publish-fp8-specification-for-standardization-as-an-interchange-format-for-ai/ (إعلان مشترك من إنتل، إنفيديا، آرم)؛ https://arxiv.org/abs/2209.05433 (ورقة بحثية أولية كتبها باحثون من الشركات الثلاث المذكورة آنفاً)
- ↑ https://www.mrob.com/pub/math/floatformats.html#microfloat العوامات الدقيقة
- ↑ باك، إيان (13 مارس 2005)، "الفصل 32. الغوص في حوسبة وحدة معالجة الرسومات" ، في فار، مات (محرر)، جواهر وحدة معالجة الرسومات ، أديسون-ويسلي، ISBN 0-321-33559-7تم الاطلاع عليه بتاريخ 5 أبريل 2018.
- ↑ غارارد، أندرو. "10.3. أعداد الفاصلة العائمة غير الموقعة ذات 10 بت" . مواصفات تنسيق بيانات كرونوس الإصدار 1.2 المراجعة 1. مجموعة كرونوس . تم الاطلاع عليه بتاريخ 10 أغسطس 2023 .
- ↑ غارارد، أندرو. "10.2. أعداد الفاصلة العائمة غير الموقعة ذات 11 بت" . مواصفات تنسيق بيانات كرونوس الإصدار 1.2 المراجعة 1. مجموعة كرونوس . تم الاطلاع عليه بتاريخ 10 أغسطس 2023 .
- ↑ "مواصفات OCP للنقطة العائمة 8 بت (OFP8) المراجعة 1.0" . مايو 2023.
- ↑ "تسريع استدلال LLM على جهاز الكمبيوتر المحلي الخاص بك" .
- ↑ "التقرير المؤقت لمجموعة عمل IEEE P3109 حول تنسيقات الفاصلة العائمة الثنائية للتعلم الآلي" (ملف PDF) . GitHub . مجموعة عمل IEEE P3109. 5 أغسطس 2025.( أحدث إصدار )
- ↑ "مواصفات تنسيقات الحوسبة المصغرة (MX) لمشروع الحوسبة المفتوحة، الإصدار 1.0" . مشروع الحوسبة المفتوحة . مؤرشف من الأصل بتاريخ 24 فبراير 2024. تم الاطلاع عليه بتاريخ 21 فبراير 2025 .
- ↑ يحتوي معيار IEEE للدقة النصفية على 5 بتات للأس مع انحياز 15 ()، تحتوي دقة IEEE المفردة على 8 بتات للأس مع انحياز 127 ()، يحتوي نظام IEEE ذو الدقة المزدوجة على 11 بتًا للأس مع انحياز 1023 ()، ويحتوي معيار IEEE ذو الدقة الرباعية على 15 بتًا للأس مع انحياز 16383 (). راجع مقالة "انحياز الأس" لمزيد من التفاصيل.
- ↑ أوهالارون، ديفيد ر.؛ براينت، راندال إي. (2010). أنظمة الحاسوب: منظور المبرمج ( الطبعة الثانية). بوسطن، ماساتشوستس، الولايات المتحدة الأمريكية: برنتيس هول . ISBN 978-0-13-610804-7.
- ↑ بيرش، كارل. "تمثيل الفاصلة العائمة" . كلية هندريكس . تم الاسترجاع في 29 أغسطس 2023 .
- ↑ "تمثيل الفاصلة العائمة 8 بت" (ملف PDF) . مؤرشف من الأصل (ملف PDF) في 8 يوليو 2024.
- ↑ شاني فيلت، د. تيد. "أداة بناء النقطة العائمة للدكتور شاني فيلت" . د. تيد شاني فيلت. مؤرشف من الأصل في 15 ديسمبر 2024. تم الاطلاع عليه في 29 أغسطس 2023 .
- ↑ "تقديم NVFP4 للاستدلال الفعال والدقيق منخفض الدقة" . مدونة NVIDIA التقنية . 24 يونيو 2025. تم الاطلاع عليه في 15 مارس 2026 .
- مونافو، روبرت (15 مايو 2016). "دراسة استقصائية لتنسيقات الفاصلة العائمة" . تم الاسترجاع في 8 أغسطس 2016 .
روابط خارجية
- الأرقام العشرية الصغيرة (في دراسة استقصائية لتنسيقات الفاصلة العائمة )
- أنواع البيانات ذات الفاصلة العائمة
- الحساب الحاسوبي
