सहयोग

क्या FP8 मॉडल के जवाब बदल देता है? 120 में एक पलटा

के साथ Anagha Langhe · एक NVIDIA L4 पर अपना LLM खुद चलाती हैं

आधे मिनट में

Anagha Langhe एक भाषा-मॉडल खुद चलाती हैं, सिर्फ़ एक NVIDIA L4 कार्ड पर, और जानना चाहती थीं कि उसे FP8 पर ले जाने से सटीकता घटती है या नहीं। 120 सवालों पर दोनों बिल्ड का स्कोर 72 और 71 रहा। अकेले इससे ज़्यादा कुछ पता नहीं चलता, इसलिए हमने पलटे हुए जवाब गिने: एक सवाल बदला, और वह bf16 की तरफ़ गया। 49 जवाब शब्द-दर-शब्द एक जैसे थे, और जब दोनों बिल्ड गलत थे तो 48 में से 42 बार गलत जवाब एक ही था। Anagha ने एक खुली तुलना-स्क्रिप्ट अपने दोनों रन पर चलाई, ठीक वही आँकड़े पाए, और अपना निष्कर्ष खुद निकाला: गलतियाँ रिट्रीवल से आती हैं, क्वांटाइज़ेशन से नहीं।

सवाल

मॉडल को bf16 की जगह FP8 में चलाने पर उसे लगभग आधी मेमोरी चाहिए होती है, और एक GPU पर यही इसका पूरा मकसद है। चिंता सीधी-सी है: क्या यह छोटा फ़ॉर्मैट चुपचाप जवाबों को बिगाड़ देता है?

Anagha ने इसे सीधे नापा। उन्होंने दोनों बिल्ड से वही 120 सवाल पूछे और LinkedIn पर लिखा: bf16 में 72 सही, FP8 में 71, और एक्ज़ैक्ट McNemar टेस्ट में p = 1.0। उसी पोस्ट में उन्होंने अपने सेटअप का एक और आँकड़ा बताया: प्रिफ़िक्स-कैश हिट रेट 12% से बढ़कर 26% हो गया।

72 बनाम 71 "कोई फ़र्क नहीं" जैसा दिखता है। मगर 120 सवालों के साथ ऐसा टेस्ट सिर्फ़ बड़ी गिरावट को ही खारिज कर सकता है। तीन-चार अंकों का नुकसान शायद फिर भी सांख्यिकीय रूप से महत्वपूर्ण नहीं दिखेगा। इसलिए दिलचस्प सवाल p-मान नहीं, बल्कि यह है कि हर सवाल के साथ असल में हुआ क्या।

किसने क्या किया

  • Anagha ने सेटअप बनाया, दोनों बिल्ड को वही 120 सवाल पर चलाया, जवाबों को ग्रेड किया, और बाद में अपनी फ़ाइलों पर तुलना चलाई।
  • हमने (Vadym Chernets) उनसे पूछा कि हर दिशा में कितने सवाल पलटे, फिर मॉडलों की सहमति जाँचने वाली अपनी एक खुली स्क्रिप्ट में एक छोटा compare मोड जोड़ा, और उनके सारांश से अंतराल और योजना के आँकड़े निकाले।
  • Anagha के पूरे डेटा पर उस स्क्रिप्ट के रन से वही आँकड़े आए, साथ में एक आँकड़ा और, जो सारांश से हमें नहीं दिख सकता था: दोनों बिल्ड कितनी बार एक ही तरह से गलत थे।

आँकड़े कैसे दिखते हैं

120 सवाल दोनों के लिए वही bf16 72 सही FP8 71 सही 71दोनोंसही 1सिर्फ़ bf16सही 0सिर्फ़ FP8सही 48दोनोंगलत दोनों के गलत 48 में से: 42 में वही गलत जवाब · 6 में अलग
120 में से हर सवाल चार खानों में से एक में आता है। सिर्फ़ एक विकर्ण से बाहर है। साझा गलतियों में से ज़्यादातर बिल्कुल वही जवाब हैं।
120 में 1सवाल दोनों बिल्ड के बीच पलटा, bf16 के पक्ष में
49जवाब शब्द-दर-शब्द एक जैसे आए
48 में 42साझा गलतियाँ एक ही गलत जवाब थीं
पैमाना मान
सटीकता, bf16 72 / 120
सटीकता, FP8 71 / 120
पलटे हुए: सिर्फ़ bf16 सही / सिर्फ़ FP8 सही 1 / 0
एक्ज़ैक्ट McNemar टेस्ट p = 1.0
अंतर bf16 − FP8 +0.8 अंक, 95% अंतराल लगभग −2.3 से +4.6
शब्द-दर-शब्द एक जैसे जवाब 120 में से 49
दोनों गलत, और गलत जवाब वही 48 में से 42

इसे कैसे पढ़ें। एक पलटा हुआ जवाब इस बात से पूरी तरह मेल खाता है कि FP8 की कोई कीमत नहीं है। पर यह इसका प्रमाण नहीं कि कीमत शून्य है: दो अंकों की गिरावट भी अंतराल के भीतर आती है। छह से कम पलटों के साथ एक्ज़ैक्ट McNemar टेस्ट किसी भी तरफ़ p < 0.05 तक नहीं पहुँच सकता, इसलिए यहाँ काम के आँकड़े खुद पलटे हुए जवाब और अंतराल हैं। एक अंक की गिरावट देखने के लिए आपको लगभग 800 सवाल चाहिए होंगे, चाहे हर पलटा एक ही दिशा में जाए।

48 में से 42 वाली बात हमें चौंकाने वाली लगी। अगर FP8 बिल्ड बस ज़्यादा शोर वाला होता, तो उसकी गलतियाँ बिखरी हुई होतीं। इसके बजाय दोनों बिल्ड उन्हीं सवालों पर लड़खड़ाते हैं और उसी गलत जवाब पर पहुँचते हैं। Anagha के शब्दों में, यह "मेरी इस समझ से मेल खाता है कि गलतियाँ रिट्रीवल से आती हैं, क्वांटाइज़ेशन से नहीं": जब पाया गया संदर्भ ही खराब हो, तो दोनों बिल्ड वही खराब संदर्भ पढ़ते हैं और वही बात कहते हैं।

अपने रन पर आज़माइए

अगर आपके पास उन्हीं सवालों पर दो रन JSONL में हैं (सवाल की आईडी, जवाब, और या तो correct फ़ील्ड या एक gold फ़ाइल), तो तुलना एक कमांड की बात है। यह खुली रिपॉज़िटरी memory-agreement-check का हिस्सा है, MIT लाइसेंस, कोई निर्भरता नहीं:

git clone https://github.com/vadimchernets/memory-agreement-check
cd memory-agreement-check
python -m memcheck compare bf16.jsonl fp8.jsonl --label-a bf16 --label-b FP8

हर सवाल की एक पंक्ति ऐसी दिखती है:

{"qid": "q001", "answer": "Paris", "correct": true, "category": "factual"}

यह 2×2 तालिका छापती है, एक्ज़ैक्ट McNemar टेस्ट, सटीकता के अंतर का अंतराल, कितने जवाब एक जैसे हैं, दोनों रन कितनी बार सहमत होकर गलत हैं, और अगर आपके सवालों में श्रेणियाँ हैं तो श्रेणी के हिसाब से बँटवारा। --md report.md रिपोर्ट सहेज देता है।

यह क्या दिखाता है, और क्या नहीं

  • 120 सवाल यह देखने के लिए काफ़ी हैं कि FP8 ने इस मॉडल को बर्बाद नहीं किया। एक-दो अंक की गिरावट न होने का वादा करने के लिए ये काफ़ी नहीं हैं।
  • टेस्ट सवालों को एक-दूसरे से स्वतंत्र मानता है। अगर बहुत से सवाल एक ही दस्तावेज़ या एक ही टेम्पलेट से आते हैं, तो असली नमूना 120 से छोटा है।
  • "गलतियाँ रिट्रीवल से आती हैं" Anagha की अपने सिस्टम के बारे में समझ है। 48 में से 42 इसका समर्थन करता है; इसे सीधे जाँचने के लिए वही सवाल एक बार अच्छे संदर्भ के साथ और एक बार खराब संदर्भ के साथ पूछने होंगे।

आगे क्या

Anagha इस बात पर राज़ी हुईं कि उनकी FP8 बनाम bf16 जाँच रिपॉज़िटरी में एक पूरे हल किए उदाहरण के रूप में, उनके नाम के साथ, जाए, ताकि दो बिल्ड की तुलना करने वाले अगले व्यक्ति के पास शुरू करने के लिए सिर्फ़ बनावटी नहीं, एक असली मामला हो।

समयरेखा

  1. Anagha LinkedIn पर अपनी FP8 जाँच पोस्ट करती हैं: 120 में 71 बनाम 72, McNemar p = 1.0। हम टिप्पणी करते हैं कि पलटे हुए जवाबों की गिनती p-मान से ज़्यादा बताती है। वे जवाब देती हैं, और हम पूछते हैं कि हर दिशा में कितने सवाल पलटे।
  2. उनका जवाब: बस एक, bf16 सही और FP8 गलत, दूसरी दिशा में कोई नहीं, और 120 में से 49 जवाब शब्द-दर-शब्द एक जैसे। रातोंरात खुली स्क्रिप्ट में compare मोड आ जाता है, और हम उनके सारांश से निकाले अंतराल और योजना के आँकड़े उन्हें भेजते हैं।
  3. Anagha इसे अपने दोनों रन पर चलाती हैं: आँकड़े ठीक मिलते हैं, और जब दोनों बिल्ड गलत थे तो 48 में से 42 पर गलत जवाब एक ही था। वे हल किए उदाहरण के लिए हामी भरती हैं।

← सभी सहयोग · सहयोग का प्रस्ताव रखें