چیت‌شیت

مقایسه‌ی BERT، GPT و T5

BERT, GPT and T5 Compared

فقط-انکودر، فقط-دیکودر و انکودر-دیکودر در کنار هم. اهداف، ماسک‌ها، بلوک‌ها، رمزگشایی و زمان انتخاب هر کدام.

  • ۱۲ بخش
  • ۴ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. سه خانواده در کنار هم
  2. سیم‌کشی بلوک‌ها
  3. یک گذر رو به جلو انکودر-دیکودر
  4. وظایف در کد درس
  5. بارگذاری هر خانواده
  6. اهداف پیش‌آموزش
  7. استراتژی‌های رمزگشایی
  8. بلوک: 2017 در برابر 2026
  9. پیش‌فرض‌ها در کد
  10. زمان استفاده از هر خانواده
  11. عیب‌یابی
  12. پرسش‌ها

سه خانواده در کنار هم

مقایسه
عاملBERTGPTT5 / BART
پشتهفقط انکودرفقط دیکودرانکودر و دیکودر
اتنشندوطرفه، بدون ماسکماسک مثلثی علّیانکودر دوطرفه، دیکودر علّی
کراس‌اتنشننداردنداردQ از دیکودر، K/V از انکودر
هدفMLM روی 15٪ از توکن‌هاتوکن بعدی، انتقال به اندازه‌ی یک واحدتخریب بخش‌های متن یا حذف نویز
پیش‌بینی می‌کند$P(x_{\text{masked}} \mid x_{\text{unmasked}})$$P(x_t \mid x_{<t})$اسپن‌های هدف یا توالی تمیز
تولید متنخیربله، توکن به توکنبله، از خروجی انکودر
بهترین کاربردطبقه‌بندی، بازیابی، NERچت، کد، استدلالترجمه، گفتار به متن
نمونه‌هاBERT، DeBERTa، ModernBERTGPT، Llama، QwenT5، BART، Whisper

سیم‌کشی بلوک‌ها

معماری
K, Vتوکن‌های مبدأامبدینگ + موقعیتبلوک انکودرLN، خود MHA، LN، FFNخروجی انکودر(N_src, d_model)، یک بار اجرا می‌شودتوکن‌های هدفانتقال به اندازه‌ی یک واحدخوداتنشن ماسک‌شدهزیرلایه‌ی 1کراس‌اتنشنزیرلایه‌ی 2FFNزیرلایه‌ی 3لاجیت‌های توکن بعدیLN نهایی + تصویر

یک گذر رو به جلو انکودر-دیکودر

گام‌به‌گام
  1. امبدینگتوکن‌ها بردار می‌شوند. RoPE یا سیگنال موقعیت سینوسی را اضافه کنید.
  2. انکودرهر بلوک خوداتنشن پیش‌نرمال‌سازی و سپس FFN پیش‌نرمال‌سازی را اجرا می‌کند، هرکدام با یک اتصال باقیمانده.
  3. خروجی انکودرانکودر یک بار به ازای هر ورودی اجرا می‌شود. آن را برای ورودی‌های طولانی کَش کنید.
  4. خوداتنشن دیکودرماسک‌شده، تا موقعیت i تنها موقعیت‌های تا i را ببیند.
  5. کراس‌اتنشن دیکودرتنها جایی که اطلاعات انکودر وارد دیکودر می‌شود.
  6. FFN دیکودرسپس یک LN نهایی پیش از تصویر خروجی.
  7. بررسیمبدأ 6 توکنی و هدف 5 توکنی خروجی با شکل (5, vocab) می‌دهند.

وظایف در کد درس

کار و کد
وظیفهکد
ماسک‌گذاری 80/10/10 در BERTcreate_mlm_batch(tokens, vocab_size)
ماسک‌گذاری کل کلماتwhole_word_mlm(tokens, spans, vocab_size)
ماسک علّی GPTcausal_mask(n)
تابع زیان (loss) توکن بعدیcross_entropy_shifted(logits, target_ids)
تخریب بخش‌های متن در T5corrupt_spans(tokens, mask_rate=0.15)
بازسازی نسخه‌ی اصلیround_trip(source, target)
یک بلوک انکودرencoder_block(x, p)
یک بلوک دیکودرdecoder_block(x, enc_out, p)

بارگذاری هر خانواده

کد
python
tok = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base")
model = AutoModel.from_pretrained("answerdotai/ModernBERT-base")
out = model(**inputs).last_hidden_state                                   # (1, N, 768)، فقط امبدینگ‌ها
model = AutoModelForCausalLM.from_pretrained("<model>")
out = model.generate(**inputs, max_new_tokens=64,
    temperature=0.7, top_p=0.9, do_sample=True)                           # نمونه‌گیری پاسخ
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-base")
inputs = tok("translate English to French: <text>", return_tensors="pt")  # نام وظیفه در ورودی
out = model.generate(**inputs, max_new_tokens=32)
print(tok.decode(out[0], skip_special_tokens=True))

اهداف پیش‌آموزش

مفهوم‌ها
MLM
انتخاب 15٪ از توکن‌ها. 80٪ تبدیل به [MASK] می‌شوند، 10٪ تصادفی، 10٪ دست‌نخورده.
برچسب‌ها
توکن اصلی در موقعیت‌های انتخابی. -100 در تمام موقعیت‌های دیگر.
NSP
پیش‌بینی اینکه آیا جمله‌ی B پس از A می‌آید. RoBERTa نشان داد که آسیب‌زننده است. انکودرهای مدرن آن را رد می‌کنند.
مدل زبانی علّی
ورودی [t1, t2, t3]، اهداف [t2, t3, t4]. جمع $-\log P$ روی موقعیت‌ها.
ماسک علّی
اگر $j \le i$ باشد $M_{ij} = 0$، در غیر این صورت $-\infty$. قبل از سافت‌مکس اضافه شود.
تخریب بخش‌های متن
اسپن‌هایی با میانگین طول 3، مجموعاً 15٪، هرکدام جایگزین با <extra_id_0>، <extra_id_1>.
هدف T5
فقط اسپن‌های تخریب‌شده، هرکدام پس از نشانه‌ی نگهبان (sentinel) خود.
BART
پنج تابع نویز. دیکودر کل توالی اصلی را بازسازی می‌کند.

استراتژی‌های رمزگشایی

دستورها
دستورکارکرد
sample_greedy(probs)Argmax در هر گام. تکمیل کد، وظایف قطعی
sample_temperature(logits, t, rng)تقسیم لاجیت‌ها بر T. مقدار بالاتر T تنوع بیشتری می‌دهد
sample_top_k(logits, k, rng)نمونه‌گیری فقط از k توکن برتر
sample_top_p(logits, p, rng)کوچک‌ترین مجموعه‌ای با احتمال تجمعی حداقل p
sample_min_p(logits, min_p, rng)نگه‌داشتن توکن‌ها با شرط p >= min_p * max_p
Beam searchعرض 4 تا 5 برای ترجمه و خلاصه‌سازی
Speculative decodingمدل پیش‌نویس N توکن پیشنهاد می‌دهد. مدل بزرگ تأیید می‌کند

بلوک: 2017 در برابر 2026

مقایسه
مؤلفهبلوک 2017بلوک 2026
نرمال‌سازیLayerNorm، پس‌نرمال‌سازیRMSNorm، پیش‌نرمال‌سازی
فعال‌سازی FFNReLUSwiGLU
بسط FFN4 برابر2.6 برابر (سه ماتریس)
موقعیتسینوسی مطلقRoPE
اتنشنMHA کاملGQA (یا MLA)
جملات بایاسبلهخیر

پیش‌فرض‌ها در کد

پیش‌فرض‌ها
تنظیمپیش‌فرضنکته
mask_prob0.15نرخ انتخاب BERT
IGNORE_INDEX-100برچسب در موقعیت‌های انتخاب‌نشده
mask_rate0.15سهم توکن‌ها در اسپن‌های T5
mean_span3.0میانگین طول اسپن در T5
mask_token<mask>توکن ماسک و پرکننده در BART
`layer_norm` eps1e-5میانگین را کم می‌کند
`rms_norm` eps1e-6بدون تفریق میانگین
temperature1.0softmax، top-k، top-p، min-p

زمان استفاده از هر خانواده

نکته‌ها
  • از BERT برای طبقه‌بندی، امبدینگ‌ها، NER، NLI و بازرتبه‌بندهای RAG استفاده کنید. 5 تا 10 برابر سریع‌تر از دیکودرها به ازای هر توکن اجرا می‌شود.
  • از BERT برای تولید متن استفاده نکنید. انکودر نمی‌تواند توکن‌ها را به صورت خودبازگشتی تولید کند.
  • از GPT برای تولید متن، چت، کد و استدلال استفاده کنید. فقط-دیکودر تمیزترین مقیاس‌پذیری را دارد.
  • از min-p + دمای 0.7 به عنوان پیش‌فرض مدل‌های با وزن باز استفاده کنید.
  • زمانی از T5 یا BART استفاده کنید که ورودی یک توالی مبدأ مشخص باشد: ترجمه، گفتار، وظایف ساختاریافته.
  • با انکودر-دیکودر از جستجوی پرتو استفاده کنید. توزیع خروجی باریک‌تر از چت است.
  • خلاصه‌سازی و استخراج داده با هر دو ساختار انکودر-دیکودر یا فقط-دیکودر کار می‌کنند.

عیب‌یابی

عیب‌یابی
  • مدل بدون [MASK] در فاین‌تیون شکست می‌خورد

    علت
    آموزش‌دیده روی 100٪ [MASK]
    راه‌حل
    استفاده از قانون 80/10/10
  • مدل با نگاه کردن به جواب تقلب می‌کند

    علت
    نبود ماسک علّی
    راه‌حل
    افزودن مثلث -inf قبل از سافت‌مکس
  • وزن‌های آینده دقیقاً صفر نیستند

    علت
    سافت‌مکس هرگز صفر مطلق خروجی نمی‌دهد
    راه‌حل
    قرار دادن -inf در امتیازهای آینده
  • محو شدن گرادیان‌ها در پشته‌ی عمیق

    علت
    عدم وجود اتصالات باقیمانده
    راه‌حل
    استفاده از x + sublayer(x)
  • انفجار اکتیویشن‌ها پس از 12 لایه

    علت
    پس‌نرمال‌سازی
    راه‌حل
    تغییر به پیش‌نرمال‌سازی
  • اسپن تخریب‌شده بازسازی نمی‌شود

    علت
    خطای یکی اضافه/کم (off-by-one) در ثبت موقعیت اسپن‌ها
    راه‌حل
    اجرای بررسی بازگشت‌پذیری (round-trip)
  • رمزگشایی کُند روی ورودی‌های طولانی

    علت
    انکودر در هر گام دوباره اجرا می‌شود
    راه‌حل
    کَش کردن خروجی انکودر

پرسش‌ها

پرسش و پاسخ
چرا BERT می‌تواند از کانتکست راست استفاده کند؟
انکودر ماسک علّی ندارد.
چرا آموزش GPT موازی است؟
یک گذر N تابع زیان توکن بعدی را می‌دهد. استنتاج سریال باقی می‌ماند.
چند پارامتر در یک بلوک وجود دارد؟
اتنشن MHA برابر با 4 · d² است. بلوک FFN از نوع SwiGLU حدود 3rd² است.
چرا پیش‌آموزش T5 ارزان‌تر از BART است؟
T5 فقط اسپن‌ها را رمزگشایی می‌کند. BART کل توالی را رمزگشایی می‌کند.
آیا مدل‌های امبدینگ همان BERT هستند؟
بله. همان انکودر، با تابع زیان تقابلی.