پرش به محتوای اصلی
پرش به محتوای مقاله

ترنسفورمرها با جایگزینی پردازش ترتیبی، گلوگاه حافظه در شبکه‌های عصبی را شکستند

·۸ مرداد ۱۴۰۵۷ دقیقه مطالعه۲ بازدید
راهنما
ساخت یک Transformer از صفر با PyTorch: معماری، آموزش و پیاده‌سازی کامل شبکه عصبی ترنسفورمر.
ساخت یک Transformer از صفر با PyTorch: معماری، آموزش و پیاده‌سازی کامل شبکه عصبی ترنسفورمر.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

تجزیه و تحلیل اثر مستقیم تک‌تک اجزا (مانند ضریب مقیاس‌بندی و Pre-norm) بر همگرایی مدل در مقیاس کوچک، که در مقالات تئوری معمولاً به‌عنوان پیش‌فرض پذیرفته شده‌اند.

اگر می‌خواهید از سطح یک کاربر ساده فراتر بروید و بفهمید چرا مدل‌های زبانی گاهی دچار توهم می‌شوند یا در کجا می‌شکنند، باید از نگاه به APIها دست بردارید و سراغ کدنویسی لایه‌ها بروید. تنها راه توقف در treating مدل‌های زبانی بزرگ به عنوان «جعبه‌های سیاه»، درک ریاضیات پشت هر تنسور است.

به نقل از مستندات پروژه ریچارد فاینمن (نام مستعار توسعه‌دهنده)، او در ۳۰ جولای ۲۰۲۶ یک پیاده‌سازی کامل از معماری ترنسفورمر را با استفاده از PyTorch منتشر کرد. این پروژه از دلِ ناکامی در پروژه Manshverse شکل گرفت؛ جایی که توسعه‌دهنده متوجه شد بدون داشتن استدلال‌های بنیادین، نمی‌تواند دلیل شکست مدل را در مرحله تنظیم دقیق (Fine-tuning) — که شبیه تخصص دادن به یک پزشک عمومی در یک حوزه خاص است — تشخیص دهد. در این راستا، درک زیرساخت‌های توزیع‌شده برای آموزش مدل‌های بزرگ حیاتی است، همان‌طور که در تحلیل سازوکارهای همگام‌سازی گره‌ها در PyTorch به چالش‌های پایداری در مقیاس بالا پرداخته‌ایم.

این گذار از مصرف‌کنندگی به خلق‌کنندگی در زمانی رخ می‌دهد که بسیاری از مهندسان تنها به وزن‌های پیش‌آموزش‌دیده تکیه می‌کنند. برای کسانی که به کتابخانه‌های سطح بالا عادت کرده‌اند، بازگشت به عملیات خام تنسورها یک صعود دشوار است. همان‌طور که در تحلیل قبلی ما درباره‌ی ساخت اسکرینرهای رزومه با Sentence-Transformers اشاره کردیم، هدف این است که وقتی یک سیستم در محیط عملیاتی می‌شکند، مهندس بتواند از اصول اولیه استدلال کند. فلسفه ساده است: اگر نتوانید چیزی را از صفر بسازید، آن را نفهمیده‌اید.

شکست شبکه‌های عصبی بازگشتی (RNN)

پروژه با ساخت یک شبکه عصبی (Neural Network) — شبکه‌ای از سلول‌های کوچک، شبیه نقشه مترو، که سیگنال را از ورودی به جواب می‌رساند — در سطح کاراکتر روی متون شکسپیر آغاز شد. این یک گام آموزشی برای لمس «درد» پردازش ترتیبی بود. مدل ساختار کلمات را یاد گرفت، اما خروجی‌ها فراتر از عبارات کوتاه، بی‌معنی بودند. طبق گزارش توسعه‌دهنده، سه شکست فاجعه‌بار در پردازش ترتیبی رخ داد:

  • محوشدن گرادیان (Vanishing Gradients): اطلاعات توکن‌های اولیه به سرعت تکیده می‌شوند. در توکن ۵۰اُم، مدل تقریباً هیچ خاطره‌ای از توکن ۱ ندارد.
  • گلوگاه‌های ترتیبی: آموزش نمی‌تواند موازی شود چون هر توکن به وضعیت پنهان قبلی وابسته است. این موضوع در سیستم‌های محلی، سرعت آموزش را به‌شدت کاهش داد.
  • وابستگی‌های محدود: مدل نمی‌توانست روابط بین توکن‌هایی که بیش از ۲۰ جایگاه با هم فاصله داشتند را یاد بگیرد و تابع زیان در عدد ۱.۸ متوقف شد.

منطق خودتوجهی

برای حل این بحران، مکانیسم بازگشتی کاملاً حذف و با هسته اصلی مقاله «Attention Is All You Need» جایگزین شد. برخلاف RNNها، در خودتوجهی (Self-Attention) هر توکن به‌طور موازی به تمام توکن‌های دیگر نگاه می‌کند. مدل سه تصویر (Projection) را محاسبه می‌کند:

  • پرس‌وجوها (Q): «من دنبال چه هستم؟»
  • کلیدها (K): «من چه محتوایی دارم؟»
  • مقادیر (V): «چه اطلاعاتی را منتقل می‌کنم؟»

فرآیند شامل محاسبه امتیاز سازگاری، نرمال‌سازی از طریق تابع سافت‌مکس (Softmax) و سپس اعمال آن روی مقادیر برای تولید ترکیبی وزن‌دار از تمام توکن‌هاست.

یک کشف حیاتی در این مرحله، ضرورت ضریب مقیاس‌بندی $\sqrt{d_k}$ بود. بدون این تقسیم، حاصل‌ضرب داخلی در ابعاد بالا بسیار بزرگ شده و سافت‌مکس را به مناطقی می‌برد که گرادیان‌ها نزدیک به صفر می‌شوند. بدون این یک خط کد، مدل هرگز همگرا نمی‌شد. این معماری پیچیدگی $O(n^2)$ نسبت به طول توالی دارد که توضیح می‌دهد چرا پنجرهٔ زمینه (Context Window) — میزان متنی که مدل هم‌زمان در ذهن نگه می‌دارد، شبیه میز کاری که جا برای چند ورق دارد — محدودیت‌های فیزیکی سخت‌گیرانه‌ای دارد.

گسترش به توجه چندسر (MHA)

از آنجا که یک سر توجه تنها می‌تواند یک نوع رابطه را یاد بگیرد، معماری از توجه چندسر (Multi-Head Attention) استفاده می‌کند. در این ساختار، چندین سر توجه به‌طور موازی اجرا می‌شوند و نتایج آن‌ها در نهایت از یک لایه خطی عبور می‌کند.

جزئیات فنی پیاده‌سازی MHA:

  • پیکربندی: استفاده از ۸ سر با ابعاد مدل (d_model) ۵۱۲.
  • بعد هر سر: مقدار ۶۴ برای d_k در هر سر.
  • تشخیص الگو: سرها الگوهای متفاوتی را یاد گرفتند؛ برخی روی نحو محلی و برخی بر روابط معنایی دوردست تمرکز کردند.
  • تغییر شکل: تبدیل تنسورها از (B, T, C) به (B, T, n_heads, d_k) برای محاسبات موازی.

حل مشکل ترتیب با رمزگذاری موقعیت

مکانیسم توجه ذاتاً ترتیب توکن‌ها را نمی‌فهمد و برایش «گربه روی فرش نشست» با «فرش روی گربه نشست» تفاوتی ندارد. برای حل این مشکل، از رمزگذاری موقعیت (Positional Encoding) سینوسی استفاده شد.

با اعمال توابع سینوس و کسینوس در فرکانس‌های مختلف، یک « اثر انگشت» موقعیتی برای هر توکن ساخته می‌شود. کلاس PositionalEncoding با حداکثر طول ۵۰۰۰، بافری ایجاد می‌کند که در آن هر بعد در فرکانسی متفاوت نوسان می‌کند تا مدل بتواند موقعیت‌های نسبی را یاد بگیرد.

معماری کامل و پایداری

در نهایت، این اجزا در یک TransformerBlock قرار گرفتند. این بلوک شامل لایه توجه چندسر و یک شبکه پیش‌رو (FFN) با لایه خطی، فعال‌ساز GELU و دراپ‌اوت است.

یک تصمیم راهبردی، استفاده از «Pre-norm» (اعمال نرمال‌سازی لایه قبل از زیرلایه) به‌جای روش Post-norm مقاله اصلی بود. این کار پایداری آموزش را به‌شد دلیل افزایش داد چون گرادیان‌ها به‌طور یکنواخت‌تری از اتصالات باقی‌مانده می‌گذرند و نیاز به گرم‌کردن (Warmup) نرخ یادگیری را از بین برد.

مشخصات نهایی مدل:

  • تعداد لایه‌ها: ۶ لایه
  • تعداد سرها: ۸ سر
  • بعد مدل: ۵۱۲
  • بعد شبکه پیش‌رو: ۲۰۴۸
  • تعداد پارامترها: تقریباً ۴۵ میلیون

واقعیت سخت آموزش

آموزش روی CPU یک تجربه آموزشی است اما غیرعملی است؛ هر Epoch بیش از ۴۰ دقیقه زمان می‌برد. انتقال به GPUهای T4 گوگل در محیط Colab، این زمان را به کمتر از ۳ دقیقه کاهش داد.

بر اساس بررسی‌های پروژه، بهینه‌سازی‌های زیر برای همگرایی ضروری بودند:

  • بهینه‌ساز: AdamW با کاهش وزن ۰.۰۱ (Adam معمولی باعث بیش‌برازش یا Overfitting می‌شد).
  • نرخ یادگیری: زمان‌بندی کسینوسی از 3e-4؛ شروع مستقیم با نرخ اوج باعث واگرایی فوری می‌شد.
  • برش گرادیان (Gradient Clipping): مقدار ۱.۰ برای جلوگیری از انفجار گرادیان و خطاهای NaN.
  • دقت ترکیبی (Mixed Precision): استفاده از fp16 که سرعت را در GPU تقریباً ۲ برابر کرد.

یک چالش بزرگ در عیب‌یابی، «ماسک علّی» (Causal Mask) بود. یک ماسک اشتباه به مدل اجازه داد در حین آموزش به توکن‌های آینده نگاه کند و مدل به‌جای پیش‌بینی، «تقلب» کرد که دو روز زمان برد تا این باگ شناسایی شود.

نتایج نهایی و بنچمارک‌ها

بعد از ۵۰ Epoch تنظیم، مدل به تابع زیان ۰.۸۵ رسید. اگرچه این مدل با GPT-3 رقابت نمی‌کند، اما نسخه‌ی ۴۵ میلیون پارامتری توانست متونی منسجم در سطح جمله تولید کند و درک واضحی از نحو و معنا را نشان دهد — چیزی که فرسنگ‌ها از تلاش‌های RNN جلوتر بود. در حالی که این مدل بر پایه متون است، پژوهش‌های جدیدتر درباره جایگزینی برچسب‌های متنی با ویدئو نشان می‌دهد که مسیر استدلال مدل‌ها در حال تکامل به سوی داده‌های چندرسانه‌ای است.

گام بعدی شما

  • پیاده‌سازی مکانیسم Scaled Dot-Product Attention در PyTorch برای درک نقاط محوشدگی گرادیان.
  • آزمایش تفاوت بین Pre-norm و Post-norm در یک مدل کوچک برای مشاهده پایداری آموزش.
  • بررسی اثر Lr-Warmup در مدل‌های بزرگ‌تر برای جلوگیری از واگرایی اولیه.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این تحلیل با تکیه بر تجربه عملی پیاده‌سازی، تخصص لازم برای عبور از نگاه «جعبه سیاه» به مدل‌ها را فراهم می‌کند. درک دقیق مکانیسم‌های توجه، اعتبار تحلیل‌های مهندسی را در مواجهه با شکست‌های سیستم‌های استنتاجی افزایش می‌دهد.

تأثیر برای ایران

این رویکرد پیاده‌سازی با PyTorch برای پژوهشگران و توسعه‌دهندگان ایرانی که به دلیل محدودیت‌های پردازشی (GPU) با مدل‌های کوچک‌تر کار می‌کنند، یک نقشه راه عملی برای بهینه‌سازی منابع است.

·نگاه ما
تحریریه دات‌هوش

شکاف بین مدل‌های ۴۵ میلیون و ۱۷۵ میلیارد پارامتری را نباید یک جهش کیفی در معماری دانست؛ این فاصله عمدتاً حاصل مقیاس داده و محاسبات است. ارزشی که این پیاده‌سازی خلق می‌کند، تغییر فلسفه عیب‌یابی است؛ در ML، یک باگ لزوماً یک خطای باینری نیست، بلکه خروجی «کمی کمتر درست» است. یادگیری خواندن منحنی زیان (Loss Curve) مانند یک نوار قلب، پیش‌نیاز هر مهندسی است که می‌خواهد از سطح Prompt Engineering به مهندسی واقعی سیستم‌های AI برسد.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.