چرا LLM لوکالت مثل نسخهٔ اصلی جواب نمیده؟
خلاصهٔ کاملتر
نویسنده تو فروم Level1Techs یه سری آزمایش فنی انجام داده تا نشون بده چرا مدلی که رو کامپیوتر خودت اجرا میکنی، بعضی وقتا خیلی ضعیفتر از چیزی جواب میده که تو بنچمارکهای رسمی سازنده دیدی. دلیلش فقط سختافزار ضعیفتر نیست: هر ترکیب از GPU، درایور و کتابخونهٔ inference، حتی با وزنهای کاملاً یکسان، ریاضیات محاسبهٔ توکن بعدی رو یهجور دیگه انجام میده.
برای اندازهگیری این فرق، از logits (نمرهٔ خام مدل برای هر توکن ممکن) و KL Divergence یا KLD استفاده کرده؛ KLD فاصلهٔ توزیع احتمال یه اجرا رو نسبت به یه baseline اندازه میگیره. KLD پایینتر لزوماً یعنی «باهوشتر» نیست، فقط یعنی نزدیکتر به baseline؛ نویسنده هشدار میده که بدون افشای کامل روش اندازهگیری، به هیچ عدد KLDای نباید اعتماد کرد.
تو آزمایش اول، سه تا بکاند مختلف اتنشن تو vLLM (FlashAttention2، FlashInfer و Triton) رو با مدل Qwen3.6-27B مقایسه کرده. تا چند هزار توکن اول همه یه جواب میدادن، ولی از یه جایی به بعد شروع میکردن به اختلاف نظر رو توکن بعدی؛ این اختلافها پراکنده و خوشهای ظاهر میشدن، نه اینکه با افزایش طول context یکنواخت زیاد بشن.
تو آزمایش دوم، کوانتایز کردن کش KV رو تست کرده: با کش int8، مدل بعد از یه خطا تو یه فراخوانی ابزار (tool call) بالاخره خودشو جمعوجور میکرد، ولی با کش int4 اینطور نبود و خطا برطرف نمیشد؛ یعنی فشردهسازی زیاد کش، دقیقاً همونجایی که context طولانی میشه، قابلیت اعتماد مدل رو از بین میبره.
تو آزمایش سوم، پنج نسخهٔ مختلف کوانتایز وزنها رو مقایسه کرده: BF16 (مرجع)، FP8 رسمی، INT8 با W8A16، NVFP4 انویدیا و AWQ با W4A16. نتیجه غیرمنتظره بود: کوانتایز سادهٔ INT8 حتی از FP8 رسمی و NVFP4 انویدیا هم به baseline نزدیکتر موند، در حالی که NVFP4 بدترین عملکرد رو داشت و تو context حدود ۸۸ هزار توکنی، حدود نصف توکنها رو اشتباه پیشبینی میکرد. NVFP4 و AWQ حتی نتونستن یه فراخوانی ابزار ساده رو درست کامل کنن، در حالی که FP8 و INT8 درست عمل کردن.
تو بخش دوم نوشته، نویسنده یه ابزار تصویری ساخته که ۱۰۰٪ لاجیتهای خروجی رو موقع فراخوانی ابزار ضبط میکنه و مسیر هر اجرا رو موقع اختلاف روی یه توکن جدا دنبال میکنه. تو یه نمونهٔ واقعی، فقط با عوض کردن بکاند اتنشن، مدل اینترفیس اشتباه یه روتر سیسکو رو هدف گرفته و دو بار دستور غلط زده؛ به گفتهٔ نویسنده همین اختلاف کوچیک میتونه تو محیط عملیاتی به قطعی شبکه منجر بشه. درجهٔ tensor parallelism هم اثر میذاشت، که بیشتر به NCCL ربط داشت.
نکات کلیدی:
- بکاند اتنشن (FlashAttention2 در برابر FlashInfer و Triton) تو vLLM روی مدل Qwen3.6-27B نتایج متفاوتی میده، مخصوصاً تو contextهای طولانی
- کش KV با کوانتایز int8 معمولاً از یه خطای فراخوانی ابزار برمیگرده، ولی int4 برنمیگرده
- کوانتایز ساده INT8 (W8A16) به baseline نزدیکتر از FP8 رسمی و NVFP4 انویدیا موند؛ NVFP4 تو context ۸۸ هزار توکنی حدود ۵۰٪ توکنها رو اشتباه زد
- تو یه نمونهٔ واقعی، فقط عوض کردن بکاند اتنشن باعث شد مدل اینترفیس اشتباه یه روتر سیسکو رو هدف بگیره
- درجهٔ tensor parallelism (TP1/TP2/TP4) هم روی نتیجه اثر میذاره، که بیشتر به تنظیمات NCCL برمیگرده




