عنوان: باگ در یک محور بود

یک باگ پنهان در پیاده‌سازی chunked-scan در PyTorch باعث می‌شود مدل‌های هیبریدی خاص، هر زمان که هسته‌های ادغام‌شده‌ی سریع (fast fused kernels) موجود نباشند، نگاهی به توکن‌های آینده بیندازند؛ این مسئله باعث به خطر افتادن چک‌پوینت‌هایی مانند Zamba2-1.2B و Nemotron-H-8B می‌شود. این نقص از یک عملیات کاهش (reduction) واحد ناشی می‌شود که در محور (axis) اشتباهی انجام شده است و در مسیر اجرایی که اکثر خط لوله‌های CI و اجراهای مبتنی بر CPU به آن متکی هستند، خود را نشان می‌دهد.

چرا این باگ اهمیت دارد

مدل‌های هیبریدی و مدل‌های فضای حالت (state-space models) دیگر صرفاً به مکانیزم توجه (attention) وابسته نیستند؛ آن‌ها همچنین از بازگشت‌های خطی (linear recurrences)، اسکن‌ها (scans) و کانولوشن‌ها استفاده می‌کنند. یک عملیات ماسک‌گذاری (masking) که توکن‌های آینده را در ماتریس توجه مسدود می‌کند، به‌طور خودکار علیت (causality) را برای آن عملیات‌های اضافی تضمین نمی‌کند. هنگامی که هسته‌های ادغام‌شده‌ی سریع که به‌طور معمول اسکن را به‌درستی مدیریت می‌کنند موجود نباشند، PyTorch به مسیر جایگزین chunked-scan در حالت pure-Python بازمی‌گردد. آن مسیر جایگزین حاوی جابه‌جایی محورها (axis-mixup) است که اجازه می‌دهد اطلاعات از موقعیت‌های بعدی در طول استنتاج (inference) به سمت عقب جریان یابد.

این نشت اطلاعات بی‌صدا است. باعث کرش کردن مدل یا بروز خطای آشکار نمی‌شود. در عوض، باعث می‌شود میزان خطا (loss) و سرگشتگی (perplexity) به‌طور مصنوعی پایین به نظر برسند، زیرا مدل در واقع در حال تقلب کردن است—یعنی دقیقاً همان توکن‌هایی را می‌بیند که قرار است آن‌ها را پیش‌بینی کند. بنابراین، هر ارزیابی پایین‌دستی که به این معیارها اعتماد کند، بر پایه‌ای معیوب بنا شده است.

چگونه مشکل کشف شد

محققان دو گذر رفت (forward pass) را از طریق یک مدل یکسان مقایسه کردند:

  1. یک توالی توکن تصادفی.
  2. توالی کاملاً مشابه با تغییر تنها یک توکن.

آن‌ها تفاوت در حالت‌های پنهان (hidden states) را لایه به لایه اندازه‌گیری کردند. بازرسی ماسک هیچ موردی را نشان نداد، اما یک بازرسی لایه به لایه که خطاها را تزریق می‌کرد، ۱۹۲ مورد از ۱۹۲ خطای تزریق‌شده را شناسایی کرد که نشت اطلاعات را تأیید نمود.

بررسی سریع کتابخانه transformers نشان داد:

  • Zamba2-1.2B زمانی که اندازه تکه (chunk size) روی ۲۵۶ تنظیم شده باشد، دچار نشت می‌شود.
  • Nemotron-H-8B در اندازه تکه ۱۲۸ دچار نشت می‌شود.
  • اکثر چک‌پوینت‌های دیگر تحت همان شرایط هیچ نشتی نشان ندادند.

این نقص در مسیر کد chunked-scan قرار دارد که هر زمان هسته‌های ادغام‌شده‌ی اختیاری موجود نباشند، اجرا می‌شود. این موارد شامل می‌شود:

  • تمام اجراهای مبتنی بر CPU.
  • محیط‌های GPU که فاقد بسته‌های خاص fused-kernel هستند.
  • نصب‌های استاندارد PyTorch که وابستگی‌های اضافی را ندارند.

از آنجایی که این باگ تنها زمانی ظاهر می‌شود که آن هسته‌ها موجود نباشند، می‌تواند در محیط‌های CI و روی CPUها خود را نشان دهد.

چه کسانی در معرض خطر هستند و هزینه آن چیست

هر تیمی که مدل‌های هیبریدی را بدون هسته‌های ادغام‌شده آموزش می‌دهد، بازتنظیم (fine-tune) می‌کند یا ارزیابی می‌کند، در معرض خطر انتشار اعداد عملکردی اغراق‌آمیز قرار دارد. بهبود ظاهری در loss یا perplexity توهمی است؛ مدل در واقع «به آینده نگاه کرده است». برای گروه‌های تحقیقاتی، این می‌تواند منجر به ادعاهای گمراه‌کننده درباره نتایج پیشرو (state-of-the-art) شود. برای استقرارهای تجاری، می‌تواند باعث بروز خطاهای پایین‌دستی در وظایف تولید متن (generation) شود که هرگز به‌درستی آموخته نشده‌اند.

استدلال مخالف

برخی از توسعه‌دهندگان استدلال می‌کنند که اعمال صحیح یک ماسک علی (causal mask) برای جلوگیری از هرگونه نشت توکن‌های آینده کافی است. این باگ آن تصور را رد می‌کند: اسکن‌ها، کانولوشن‌ها و برخی لایه‌های نرمال‌سازی می‌توانند به‌طور کامل ماسک را دور بزنند. جابه‌جایی محورها در chunked-scan نشان می‌دهد که علیت باید در هر جایی که داده‌ها جریان می‌یابند اعمال شود، نه فقط در ماتریس توجه.

اقدامات بعدی

  • مدیریت صحیح وابستگی‌ها (Dependency hygiene): بسته‌های سریع fused-kernel را در تمام گره‌های آموزش و استنتاج، به‌ویژه در خط لوله‌های CI نصب کنید.
  • اسکریپت‌های بازرسی: از بازرسی دو مرحله‌ای توصیه شده توسط کشف‌کنندگان پیروی کنید:
    • یک خطای شناخته‌شده را به عنوان کنترل مثبت (positive control) به چک‌پوینت مورد آزمایش خود تزریق کنید.
    • توالی‌هایی طولانی‌تر از اندازه تکه (chunk) یا پنجره مدل اجرا کنید؛ توالی‌های کوتاه هرگز نشت را آشکار نمی‌کنند.

اجرای بازرسی روی هر چک‌پوینت هیبریدی یا فضای حالت که طول توالی آن از اندازه تکه فراتر می‌رود، نشان خواهد داد که آیا مدل همچنان آسیب‌پذیر است یا خیر.

نکته کلیدی: حتی مدلی که تمام تست‌های استاندارد را پشت سر می‌گذارد، می‌تواند زمانی که مسیر اجرا به یک پیاده‌سازی دارای باگ بازمی‌گردد، به‌طور بی‌صدا تقلب کند. تأیید حضور هسته‌های سریع fused-kernel و تست صریح برای نشت فراتر از ماسک‌های توجه، اکنون از مراحل ضروری قبل از اعتماد به معیارهای هر مدل هیبریدی است.