ما بعد الانتباه الذاتي: ماذا يأتي بعد المحولات
التكلفة التربيعية للانتباه الذاتي في المحولات عائق حقيقي. كيف تشير أفكار الانتباه الخطي وبقايا الانتباه والبنى الهجينة إلى ما سيأتي بعدها؟

تعمل بنية المحوِّل (Transformer) منذ ثماني سنوات تقريبًا. كل نموذج لغوي كبير تقريبًا، ومعظم أنظمة توليد الصور، وعدد متزايد من نماذج الصوت والفيديو مبني على آلية الانتباه الذاتي (self-attention) التي قدّمتها ورقة «Attention Is All You Need». لكن للانتباه الذاتي مشكلة جوهرية: تكلفته الحسابية والذاكرية تنمو تربيعيًا مع طول التسلسل. ضاعِف طول المدخل، وتتضاعف التكلفة أربع مرات.
مع التسلسلات القصيرة لا يكون هذا مشكلة. أما مع نوافذ السياق بحجم 128 ألف توكن التي نتجه إليها، ونوافذ المليون توكن التي يريدها الناس، فهو عنق زجاجة حقيقي. هناك موجة من الأبحاث تستكشف بدائل: بقايا الانتباه (attention residuals) التي تعيد استخدام الحسابات بين الطبقات، وأنواع الانتباه الخطي التي تتخلص من التكلفة التربيعية، والبنى الهجينة التي تمزج الانتباه بآليات أرخص. المحوِّل لن يختفي، لكنه يُعاد تشكيله.
لماذا يكلّف الانتباه الذاتي كثيرًا
لفهم البدائل تحتاج أولًا إلى فهم ما يحسبه الانتباه الذاتي فعلًا. لنفترض تسلسلًا من N توكن: يحسب الانتباه الذاتي درجة ارتباط بين كل زوج من التوكنات. التوكن 1 مع التوكن 2، والتوكن 1 مع التوكن 3، وهكذا حتى التوكن 1 مع التوكن N، ثم التوكن 2 مع كل التوكنات الأخرى، وهكذا دواليك. أي أن العدد N² من الأزواج.
import torch
import torch.nn.functional as F
def self_attention(Q, K, V):
"""
Standard self-attention.
Q, K, V: (batch, seq_len, d_model)
The attention matrix is seq_len × seq_len.
For seq_len = 1024: ~1M entries (manageable)
For seq_len = 32768: ~1B entries (expensive)
For seq_len = 131072: ~17B entries (very expensive)
"""
d_k = Q.size(-1)
# This matmul creates the N×N attention matrix
scores = torch.matmul(Q, K.transpose(-2, -1)) / (d_k ** 0.5)
weights = F.softmax(scores, dim=-1)
return torch.matmul(weights, V)
عند 4 آلاف توكن تحتوي مصفوفة الانتباه على 16 مليون عنصر، وهذا لا يمثل مشكلة للمعالجات الرسومية الحديثة. عند 128 ألف توكن تصبح 16 مليار عنصر. وعند مليون توكن تتجاوز التريليون. حتى مع Flash Attention، الذي لا يقلل الحساب نفسه لكنه يحسّن نمط الوصول إلى الذاكرة بشكل كبير، يفرض التوسع التربيعي كلمته في النهاية.
لهذا كانت المحوِّلات الأولى محدودة بـ512 أو 1024 توكن. كل جيل جديد من العتاد والتحسينات رفع هذا السقف، لكننا نصطدم بجدار رياضي. التوسع الخطي (O(N)) أفضل بطبيعته من التوسع التربيعي (O(N²))، وهذا ما تسعى إليه معظم البنى البديلة.
بقايا الانتباه: إعادة استخدام ما سبق حسابه
من أكثر الأساليب عمليةً لخفض تكلفة الانتباه أنه لا يستبدل الانتباه، بل يجعل كل طبقة انتباه أرخص من خلال إعادة استخدام حسابات الطبقات السابقة.
الملاحظة هي أن أنماط الانتباه في الطبقات المتجاورة متشابهة كثيرًا في الغالب داخل المحوِّل العميق (لنقل 32 طبقة). الطبقة 15 والطبقة 16 تميلان إلى الانتباه إلى مواضع متشابهة، مع تعديلات صغيرة. حساب مصفوفة N² الكاملة من الصفر في كل طبقة عمل مكرر، لأن جزءًا كبيرًا منه أُنجز قبل طبقة واحدة.
تستغل بقايا الانتباه هذه الملاحظة بحساب «بقية» (residual) للانتباه: الفرق بين ما تريد هذه الطبقة الانتباه إليه وما حسبته الطبقة السابقة. إذا كان الفرق صغيرًا، وهو غالبًا كذلك في الطبقات الوسطى، فالحساب أرخص. نمط الانتباه الكامل يساوي نمط الطبقة السابقة مضافًا إليه بقية الطبقة الحالية.
وهذا يشبه طريقة عمل ضغط الفيديو: بدلًا من تخزين كل إطار على حدة، تخزّن إطارًا مفتاحيًا (keyframe) ثم سلسلة من الفروقات (البقايا) عنه. الفروقات عادةً أصغر بكثير من الإطار الكامل، ولذلك يكون الضغط أفضل بكثير.
عمليًا، تخفض بقايا الانتباه تكلفة الحساب بنسبة 30 إلى 50% في الطبقات الوسطى من النماذج العميقة، مع أثر ضئيل على الجودة. الطبقات الأولى والأخيرة القليلة ما زالت تحتاج إلى انتباه كامل لأن أنماطها أكثر تميزًا، أما الطبقات الوسطى، وهي الأغلبية، فتحصل على تسريع ملموس.
الانتباه الخطي: التخلص من التكلفة التربيعية
تحاول أنواع الانتباه الخطي إعادة صياغة الانتباه بحيث يتوسع بمقدار O(N) بدلًا من O(N²). الفكرة العامة: بدلًا من حساب مصفوفة الانتباه N×N بشكل صريح، نجد طريقة لحساب المخرجات نفسها (أو ما يقاربها) باستخدام عمليات خطية.
تعتمد الحيلة الرياضية على تفكيك الـ softmax إلى دالة نواة (kernel). يحسب الانتباه القياسي softmax(QK^T)V. إذا استبدلنا الـ softmax بدالة نواة مختلفة يمكن تفكيكها إلى φ(Q) · φ(K)^T، يمكننا إعادة ترتيب ترتيب الحساب: بدلًا من (φ(Q) · φ(K)^T) · V، الذي يحتوي على وسيط بحجم N×N، نحسب φ(Q) · (φ(K)^T · V)، الذي يحتوي على وسيط بحجم d×d، حيث d هو بُعد النموذج. وبما أن d أصغر بكثير من N في التسلسلات الطويلة، فالفرق في التكلفة كبير جدًا.
def linear_attention(Q, K, V, feature_map=None):
"""
Linear attention via kernel feature maps.
Cost: O(N * d^2) instead of O(N^2 * d)
"""
if feature_map is None:
# ELU+1 is a common choice (from Katharopoulos et al.)
feature_map = lambda x: F.elu(x) + 1
Q = feature_map(Q) # (batch, seq_len, d)
K = feature_map(K) # (batch, seq_len, d)
# Key insight: compute K^T @ V first (d × d matrix)
# instead of Q @ K^T first (N × N matrix)
KV = torch.einsum('bnd,bnm->bdm', K, V) # (batch, d, d)
# Then multiply by Q
output = torch.einsum('bnd,bdm->bnm', Q, KV) # (batch, N, d)
# Normalize
Z = torch.einsum('bnd,bd->bn', Q, K.sum(dim=1)) # normalization
output = output / Z.unsqueeze(-1)
return output
المشكلة أن استبدال الـ softmax بدالة نواة أخرى يغيّر توزيع الانتباه، والنماذج المدرّبة بالانتباه القياسي لا تنتقل بالضرورة بسلاسة إلى الانتباه الخطي. فجوة الجودة تقلصت بشكل ملحوظ، إذ تصل أحدث متغيرات الانتباه الخطي إلى 95 إلى 98% من جودة الانتباه القياسي، لكن الفجوة لم تختفِ، خاصةً في المهام التي تتطلب استرجاعًا دقيقًا لمعلومات بعيدة في السياق.
نماذج الحالة الفضائية: نموذج مختلف تمامًا
تتبنى نماذج الحالة الفضائية (SSMs) مثل Mamba نهجًا مختلفًا جوهريًا. بدلًا من حساب العلاقات الثنائية بين التوكنات، تعالج التسلسل عبر عملية تكرارية (recurrence)، تحافظ على حالة مخفية بحجم ثابت تُحدَّث مع كل توكن. وهذا خطي بطبيعته: معالجة ضعف عدد التوكنات تستغرق ضعف الوقت، لا أربعة أضعافه.
الابتكار في نماذج الحالة الفضائية الحديثة هو جعل معاملات التكرار تعتمد على المدخل (selective state spaces). يمنح هذا النموذج شكلًا من الانتباه القائم على المحتوى، فيستطيع أن «يختار» المعلومات التي يتذكرها وتلك التي ينساها، دون تكلفة تربيعية. نماذج على طراز Mamba تضاهي جودة المحوِّلات في كثير من الاختبارات، وتكون أسرع بكثير مع التسلسلات الطويلة.
المقايضة هنا أن هذه النماذج تعالج التوكنات بالتتابع، ما يجعل تشغيلها على التوازي أصعب أثناء التدريب مقارنةً بالمحوِّلات التي تعالج كل التوكنات في وقت واحد. كفاءة التدريب مهمة، فالنموذج الذي يكون أسرع بمرتين في الاستدلال لكنه أبطأ بثلاث مرات في التدريب ليس بالضرورة مكسبًا، لأن معظم الحوسبة الإجمالية تذهب إلى التدريب.
البنى الهجينة: المسار العملي
الاتجاه السائد حاليًا في النماذج الإنتاجية هو البنى الهجينة التي تجمع بين آليات انتباه مختلفة. المنطق بسيط: أجزاء مختلفة من النموذج تستفيد من أنواع مختلفة من الحوسبة.
- الانتباه الكامل للاستدلال الشامل. بعض الطبقات تحتاج إلى النظر في التسلسل كله، مثل إيجاد سياق ذي صلة يبعد آلاف التوكنات. هذه الطبقات تستخدم الانتباه الذاتي القياسي (وربما المحسّن بـ Flash).
- الانتباه المحلي للسياق القريب. كثير من الطبقات تنتبه أساسًا إلى التوكنات القريبة (انتباه بنافذة منزلقة). استخدام نافذة ثابتة من 256 إلى 1024 توكن يخفض التكلفة إلى O(N·W)، حيث W حجم النافذة.
- الانتباه الخطي للسياق الواسع. بعض الطبقات تحتاج إلى تجميع المعلومات عبر التسلسل دون الحاجة إلى أوزان انتباه دقيقة. الانتباه الخطي يوفر ذلك بتكلفة O(N).
- طبقات الحالة الفضائية للمعالجة التتابعية. طبقات على طراز Mamba تعالج الاعتماديات التتابعية بكفاءة دون أي حساب انتباه.
نماذج مثل Jamba من AI21 وعدد من البنى البحثية تتناوب بين هذه الآليات حسب دور الطبقة. الطبقات الأولى تستخدم الانتباه المحلي (لمعالجة النحو والأنماط المحلية). الطبقات الوسطى تستخدم الانتباه الخطي أو نماذج الحالة الفضائية (لبناء تمثيلات أوسع). وعدد قليل من الطبقات الاستراتيجية يستخدم الانتباه الكامل (للاستدلال الشامل والاسترجاع). النتيجة توسع شبه خطي للنموذج ككل، مع الحفاظ على الجودة التي تتطلب قدرًا من الانتباه الكامل.
ما الذي ينبغي للمطورين مراقبته
إذا كنت تبني تطبيقات فوق النماذج اللغوية، فالتغيرات المعمارية التي تحدث تحت السطح تؤثر في عملك بطرق ملموسة.
- ستستمر نوافذ السياق في الاتساع. مع انخفاض تكلفة الانتباه تتوسع نوافذ السياق، وهذا يغيّر معمارية التطبيقات: بدلًا من بناء خطوط RAG معقدة لإدخال السياق ذي الصلة في نافذة 4 آلاف توكن، قد تحشر كل شيء في موجه بحجم مليون توكن. البساطة مغرية، لكن آثار زمن الاستجابة والتكلفة تختلف بين المعماريات.
- تتغير أنماط زمن الاستجابة. المحوِّلات لها زمن استجابة مستقر نسبيًا حتى نقطة معينة، ثم يرتفع بشكل تربيعي. أما نماذج الانتباه الخطي ونماذج الحالة الفضائية فزيادتها في زمن الاستجابة أكثر تدرجًا وخطية. بالنسبة للتطبيقات التي يهم فيها وقت الاستجابة، فهم سلوك التوسع في نموذجك أمر مهم.
- فروق الجودة تعتمد على المهمة. نماذج الانتباه الخطي قد تتراجع قليلًا في المهام التي تتطلب استرجاعًا دقيقًا من مواضع محددة في السياقات الطويلة (مثل «ما العنصر الثالث في القائمة الموجودة في الصفحة 47؟»). أما في مهام الفهم العام فأدائها مماثل. اعرف حالة الاستخدام الخاصة بك.
- تحسين الاستدلال صار أهم. مع زيادة تعقيد النماذج معماريًا وخلط أنواع الانتباه المختلفة، تحتاج محركات الاستدلال إلى التعامل مع حوسبة غير متجانسة بكفاءة. أطر مثل vLLM وTensorRT-LLM وغيرها تتكيف مع ذلك، لكن المعماريات المخصصة قد لا تُدعم فورًا.
المحوِّل لا يُستبدل، بل يتطور. الانتباه الذاتي ما زال أقوى آلية متاحة لنمذجة العلاقات بين التوكنات. لكنه لا يحتاج إلى أن يُستخدم في كل مكان، ولكل طبقة، بتكلفة N² الكاملة. النماذج في السنوات القليلة القادمة ستستخدم الانتباه بدقة جراحية: دقة كاملة حيث تكون الأهمية الأكبر، وبدائل أرخص في كل مكان آخر. والنتيجة نماذج أسرع، وتتعامل مع سياقات أطول، وتكلف أقل في التشغيل، مع الحفاظ على الجودة الحالية أو تجاوزها. وهذا يستحق الانتباه فعلًا.


