Mixture of Depths (MoD)
توجّه مزيجة الأعماق (MoD) الرموز الأعلى تقييمًا فقط عبر كل كتلة Transformer، وتتيح لبقية الرموز تجاوزها، مما يقلل العمليات الحسابية في كل تمريرة أمامية.
مزيج الأعماق (MoD) تقنية محوّل يقرر فيها موجّه متعلّم، كتلةً بكتلة، أي الرموز ستُعالَج وأيها سيتجاوز الكتلة عبر الاتصال المتبقي، بحيث تحصل الرموز المختلفة على مقادير متفاوتة من الحوسبة. قدم ديفيد رابوسو وآدم سانتورو وزملاؤهما في Google DeepMind هذه التقنية في أبريل 2024 في بحث مزيج الأعماق: تخصيص ديناميكي للحوسبة في نماذج اللغة القائمة على المحوّلات. وتحدد سعة ثابتة k عدد الرموز التي تعالجها كل كتلة موجّهة، لذا تكون ميزانية الحوسبة وأشكال الموترات معروفة مسبقًا رغم اعتماد اختيار الرموز على الإدخال. حققت نماذج اللغة الكبيرة (LLMs) من MoD جودة تضاهي خط الأساس عند تساوي عمليات الفاصلة العائمة (FLOPs) للتدريب والزمن المنقضي، مع استخدام جزء من FLOPs في كل تمريرة أمامية، ونفّذت خطوات أخذ العينات بسرعة تزيد على 50%. وعند تثبيت ميزانية التدريب، كان أفضل نموذج MoD أكبر من أفضل نموذج لخط الأساس وحقق خسارة أقل.
آلية عمل توجيه MoD#
قبل الكتلة الموجّهة، يمنح موجّه خطي كل رمز درجة قياسية. تمر الرموز الأعلى تقييمًا، وعددها k، عبر آلية الانتباه الذاتي وMLP في الكتلة، ثم تُضرب مخرجاتها بدرجات الموجّه الخاصة بها وتُضاف مجددًا إلى مسار البواقي. ويجعل الضرب بالدرجة الموجّهَ جزءًا من مسار التدرّج، ما يمكّن الانتشار العكسي من تعليم الموجّه أيَّ الرموز تستفيد. أما الرموز المتبقية فتمر دون تغيير وتُستبعد من آلية الانتباه في تلك الكتلة، لذا لا تستطيع الرموز اللاحقة الانتباه إليها داخل تلك الكتلة، وتتناقص كلفة الانتباه بما يتناسب مع مربع السعة: فنصف عدد الرموز يتطلب ربع عدد عمليات ضرب الاستعلامات في المفاتيح. وكان أفضل إعداد في الورقة البحثية يوجّه كتلةً واحدة من كل كتلتين، بسعة تبلغ 12.5% من طول التسلسل. وفيما يلي تنفيذ مبسّط لكتلة موجّهة واحدة باستخدام PyTorch، يقتصر هنا على MLP:
import torch
from torch import nn
torch.manual_seed(0)
batch, seq_len, dim = 2, 64, 128
capacity = int(0.125 * seq_len) # 12.5% of tokens, the paper's best setting
x = torch.randn(batch, seq_len, dim)
router = nn.Linear(dim, 1)
block = nn.Sequential(nn.Linear(dim, 4 * dim), nn.GELU(), nn.Linear(4 * dim, dim))
# The router scores every token, and only the top-k tokens enter the block
weights, idx = router(x).squeeze(-1).topk(capacity, dim=1)
idx = idx[..., None].expand(-1, -1, dim)
update = block(x.gather(1, idx)) * weights[..., None] # router weight keeps the router trainable
# Selected tokens get the residual update; the rest skip the block unchanged
out = x.scatter_add(1, idx, update)
unchanged = (out == x).all(dim=-1).sum().item()
print(f"Block ran on {batch * capacity} of {batch * seq_len} tokens; {unchanged} skipped it unchanged")يطبع Block ran on 16 of 128 tokens; 112 skipped it unchanged: نفذت MLP في الكتلة ثُمن عملها المعتاد، ويحافظ موتر الخرج على شكل التسلسل الكامل للكتلة التالية.
التوجيه أثناء التوليد#
إن اختيار أعلى k غير سببي: إذ يعتمد ترتيب رمز ضمن أعلى k في تسلسله على درجات الرموز اللاحقة له، وهي غير موجودة بعد عندما يولّد النموذج النص رمزًا تلو الآخر. وجعل المؤلفون التوجيه سببيًا بطريقتين: خسارة مساعدة للانتروبيا المتقاطعة الثنائية تعلّم خرج الموجّه توقع الانتماء إلى أعلى k، ما غيّر خسارة نمذجة اللغة بنسبة 0.2-0.3% فقط؛ أو متنبئ صغير منفصل من نوع MLP على مدخلات ذات تدرج متوقف، بلغ سريعًا دقة 97-99%. وفي كلتا الحالتين، لم يفقد أخذ العينات ذاتي الانحدار سوى قدر ضئيل من الجودة. وتُظهر الموجّهات المدرّبة أيضًا نمطًا: تشارك بعض الرموز في كل كتلة موجّهة على امتداد عمق النموذج، بينما تتجاوز رموز أخرى الكتل كلما أمكنها ذلك.
MoD والتقنيات ذات الصلة#
- مزيج الخبراء (MoE): يوجّه كل رمز إلى شبكة MLP خبيرة واحدة أو بضع شبكات منها داخل طبقة، مضيفًا معلمات مع إبقاء الحوسبة لكل رمز ثابتة. كما جمع البحث بين التقنيتين في MoDE، حيث يمكن توجيه الرمز إلى خبير أو إلى عملية لا تفعل شيئًا، وتراكمت المكاسب.
- الخروج المبكر: يتوقف الرمز بعد طبقة معينة ويتجاوز كل ما يليها. أما MoD فيمكنه تجاوز كتلة مع الاستمرار في استخدام الكتل اللاحقة.
- دمج الرموز (ToMe): يدمج الرموز المتشابهة في محوّل الرؤية كي تعالجها الطبقات اللاحقة بأعداد أقل، من دون موجّه متعلّم.
- تشذيب النموذج: يزيل الأوزان نهائيًا، بحيث يحصل كل إدخال على الشبكة الأصغر نفسها.
- توجيه النماذج: يرسل طلبًا كاملًا إلى أحد عدة نماذج، وهي الفكرة نفسها على مستوى النماذج الكاملة.
تحدد معظم الشبكات عمقها عند إنشائها. ويحدّد Ultralytics YOLO26 العمق لكل مقياس نموذج: إذ يبلغ معامل العمق في ملف YAML للنموذج مقدار 0.50 للمقاييس n وs وm، و1.00 للمقياسين l وx؛ لذلك تنفّذ مرحلة C3k2 المدرجة بتكرارين كتلة واحدة في YOLO26n وكتلتين في YOLO26x، وتمر كل صورة عبر جميع تلك الكتل.










