نماذج اللغة2023متوسط11 دقيقة قراءة
LLaMA: نماذج أساسية مفتوحة وعالية الكفاءة للغة
LLaMA: Open and Efficient Foundation Language Models
Touvron, H. · Lavril, T. · Izacard, G. · Martinet, X. · Lachaux, M.-A. · Lacroix, T. · Rozière, B. · Goyal, N. · Hambro, E. · Azhar, F. · Rodriguez, A. · Joulin, A. · Grave, E. · Lample, G. — arXiv
المشكلة
بحلول مطلع 2023 كانت أقوى النماذج اللغوية مثل GPT-3 بـ175 مليار معامل وChinchilla بـ70 مليار وPaLM بـ540 مليار تُدرَّب على بيانات مغلقة لا يطّلع عليها أحد. وصفة التوسعة التي أرساها Chinchilla ركّزت على تقليل تكلفة : اختر حجم النموذج وعدد الرموز بحيث تحصل على أقل خسارة ضمن ميزانية حوسبة محددة. لكن هذا تجاهل تماماً، فالنموذج الأمثل من حيث التدريب قد يكون أكبر من أن يُشغَّل بتكلفة معقولة. وفوق ذلك، لم يكن هناك نموذج مفتوح الأوزان بأداء تنافسي يستطيع الباحثون دراسته أو ضبطه أو نشره.
الإسهام
LLaMA: عائلة من النماذج الأساسية بأربعة أحجام (7 و13 و33 و65 مليار معامل) دُرِّبت بالكامل على بيانات متاحة للعموم. الفكرة الجوهرية: إذا كانت ميزانيتك محدودة عند ، درِّب نموذجاً أصغر على رموز أكثر بكثير مما تقترحه قوانين Chinchilla. النتيجة أنّ LLaMA-13B يتفوق على GPT-3 ذي الـ175 مليار معامل في معظم المعايير رغم أنه أصغر بعشر مرات، وLLaMA-65B ينافس Chinchilla-70B وPaLM-540B. معمارياً، يُحسِّن LLaMA محوِّل فكّ الترميز بثلاثة تعديلات مُثبتة: بـ RMSNorm، ، RoPE. وأُتيحت جميع الأوزان لمجتمع البحث.
الأثر
فتح LLaMA الباب لعصر النماذج اللغوية الكبيرة مفتوحة الأوزان. خلال أسابيع من إطلاقه، بنى مجتمع البحث Alpaca وVicuna وعشرات النماذج المضبوطة، مُثبتاً أنّ نموذجاً أساسياً قوياً مع جهد جماعي يستطيع منافسة الأنظمة المغلقة. خيارات LLaMA المعمارية (RMSNorm وSwiGLU وRoPE) أصبحت المعيار الفعلي للنماذج المفتوحة اللاحقة كـ LLaMA 2 وMistral وQwen. وفلسفته في التوسعة — أولويّة كفاءة الاستدلال عبر تدريب نماذج أصغر لفترة أطول — غيّرت طريقة تفكير الميدان في المفاضلة بين الحوسبة والأداء.
تخيّل طالبَيْن يستعدّان لامتحان الطب. الأول يملك دماغاً ضخماً لكنه يحشو من كتاب واحد باهظ الثمن ليلة الامتحان. والثاني يملك دماغاً عادياً لكنه يقرأ كل كتاب مجاني في المكتبة على مدار أشهر.
يوم الامتحان، يتفوّق الثاني — ويستطيع مشاركة كل كتبه مع زملائه.
LLaMA هو الطالب الثاني. أثبت أنّ أصغر يتدرّب على بيانات عامة أكثر يستطيع التفوّق على نماذج أكبر منه بعشر مرات — ثم شارك أوزانه مع الجميع.
الفكرة الجوهرية: درِّب نموذجاً أصغر لفترة أطول
في عام 2022 كشفت ورقة Chinchilla أنّ معظم لم تتدرّب بالقدر الكافي، وأنّ الوصفة المثلى هي أن توسّع البيانات وحجم النموذج بالتساوي للوصول إلى أقل تدريبية. لكنّ Chinchilla حسّنت لميزانية تدريب ثابتة وتجاهلت تكلفة الاستدلال.
LLaMA طرح سؤالاً مختلفاً: لمستوى أداء مستهدف، ما النموذج الأرخص في التشغيل الفعلي؟ الجواب: نموذج أصغر يتدرّب على بيانات أكثر بكثير. نموذج بـ7 مليارات مُدرَّب على تريليون يُضاهي نموذجاً بـ10 مليارات مُدرَّباً على 200 مليار رمز، لكنّه أسرع بـ1.4 مرة عند الاستدلال. ونموذج بـ13 مليار معامل مُدرَّب على تريليون رمز يتفوّق على GPT-3 ذي الـ175 مليار في أغلب المقاييس.
هذا التحوّل في التفكير — حسِّن للنموذج الذي سيُنشر فعلاً وليس الذي ينتهي تدريبه أسرع — غيّر اقتصاديات بحوث الذكاء الاصطناعي المفتوح.
بيانات التدريب: متاحة للعموم بالكامل
مبدأ أساسي في LLaMA: كل بايت من بيانات التدريب مصدره متاح للعموم. كان هذا قراراً مقصوداً، أراد من خلاله المؤلفون إثبات أنّ الأداء التنافسي لا يحتاج إلى بيانات مغلقة. مزيج التدريب يمتد على 1.4 تريليون رمز من سبعة مصادر، لكلٍّ منها دور محدد: CommonCrawl بنسبة 67% للتغطية الواسعة على الويب، وC4 بنسبة 15% لنصوص ويب مُنقّحة ومُزالة التكرار، وGitHub بنسبة 4.5% للكود البرمجي، وويكيبيديا بنسبة 4.5% للمعرفة الموسوعية المُهيكلة بعشرين لغة، والكتب بنسبة 4.5% للنصوص الطويلة والتفكير المعمّق، وArXiv بنسبة 2.5% للكتابة العلمية، وStackExchange بنسبة 2% لأزواج السؤال والجواب المُهيكلة.
يستخدم LLaMA SentencePiece القائم على . ومن اللافت أنّه يقسم كل الأرقام إلى خانات مفردة — فـ«2023» تصبح أربعة رموز — مما يُحسّن قدرة النموذج على الحساب.
البنية المعمارية: محوِّل فكّ ترميز مُحسَّن
لا يبتكر LLaMA بنية جديدة من الصفر، بل يجمع أفضل التحسينات المُثبتة ويُطبّقها على المعياري في المحوِّلات. فكّر في الأمر كترقية محرك السيارة ونظام التعليق والإطارات بدلاً من تصميم سيارة جديدة كلياً. ثلاثة تعديلات محددة تصنع الفارق:
1. التسوية المسبقة بـ . بدلاً من تسوية المخرجات بعد كل طبقة فرعية، يُسوّي LLaMA مدخلات كل طبقة فرعية. وبدلاً من التي تُمركِز المتجه ثم تُعيد قياسه، يستخدم RMSNorm التي تكتفي بإعادة القياس عبر الجذر التربيعي لمتوسط المربعات وتتخطّى خطوة المركزة. النتيجة: عملية أبسط وأسرع وفعّالة تجريبياً بالقدر ذاته في تثبيت التدريب.
2. دالة التنشيط SwiGLU. داخل كل كتلة محوِّل تستبدل بـ SwiGLU — دالة تنشيط مبوَّبة تجمع بين دالة الناعمة وبوابة مُتعلَّمة. البوابة تمنح الشبكة تحكّماً في المعلومات التي تمرّ، والمنحنى الناعم يتفادى مشكلة التي تعاني منها ReLU. وللحفاظ على عدد المعاملات ثابتاً، يُعدَّل البُعد المخفي إلى ⅔ × 4d بدلاً من 4d المعتادة.
3. (RoPE). بدلاً من إضافة متجهات موضعية مطلقة مرة واحدة عند المدخل كما في الأصلي، يُطبّق LLaMA دوراناً على متجهات و في كل طبقة. زاوية الدوران تتناسب مع الموضع، فعند حساب بين رمزين تعتمد الزاوية بينهما فقط على بُعدهما النسبي لا المطلق. هذا يعني أنّ النموذج لا يحتاج لتعلّم الموضع من الصفر — الموضع النسبي مُدمَج في هندسة حساب ذاته.
RMSNorm: تسوية أبسط بالاستقرار نفسه
تسوية الطبقة تُنفّذ أمرين: أولاً تُمركِز المتجه بطرح المتوسط، ثم تُعيد قياسه بالقسمة على الانحراف المعياري. RMSNorm تطرح سؤالاً بسيطاً: هل نحتاج فعلاً للخطوة الأولى؟ تجريبياً الجواب لا — إعادة القياس وحدها تكفي لإبقاء التنشيطات مستقرة. بإسقاط طرح المتوسط، يوفّر RMSNorm حوسبة ويُبسّط مسار .
SwiGLU: تنشيط أذكى ببوابة مُتعلَّمة
في المُحوِّل المعياري، تُطبّق كل كتلة تغذية أمامية العملية: FFN(x) = ReLU(xW₁)W₂. دالة ReLU تُصفِّر كل القيم السالبة — بسيطة لكن قاسية. أي تقع في المنطقة السالبة أثناء التدريب تصبح ميتة — لا تُنتج أيّ متدرِّج ولا تتعافى أبداً.
SwiGLU يستبدل ذلك بآلية مبوَّبة: SwiGLU(x) = (Swish(xW₁) ⊙ xV)W₂. يُسقَط المدخل مرتين — مرة عبر دالة Swish الناعمة التي تسمح بقيم سالبة صغيرة، ومرة عبر مصفوفة بوابة V. الضرب العنصري (⊙) يتيح للبوابة تحديد المعلومات التي تمرّ. المنحنى الناعم لـ Swish والبوابة المُتعلَّمة معاً يمنحان الشبكة تحكّماً أدقّ في لاخطّيّاتها.
RoPE: ترميز الموضع بالدوران
المُحوِّل الأصلي كان يُضيف متجهاً جيبياً ثابتاً لكل — وهو ما يُعرف بـ المطلق. هذا الأسلوب يُخبر النموذج «أنا في الموضع 5» لكنه لا يقول مباشرة «أنا أبعد عنك بثلاثة مواضع».
RoPE يتّبع نهجاً مختلفاً: بدلاً من إضافة معلومات الموضع، يُدير متجهات الاستعلام والمفتاح بزاوية تتناسب مع موضعها. حين يحسب رمزان الضرب النقطي بينهما في الانتباه، تعتمد الزاوية بين متجهيهما المُدارَين فقط على بُعدهما النسبي لا المطلق. تخيّل أنّ كل رمز يقف على عجلة دوّارة: درجة الانتباه تعتمد على المسافة بين الرمزين على العجلة، لا على نقطة بدايتها.
لهذا ميزة عملية واضحة: النموذج يُعمِّم بشكل أفضل على أطوال تسلسلات لم يرَها أثناء التدريب، لأنّ الموضع النسبي خاصية هندسية ذاتية لا تتغيّر.
عائلة LLaMA: أربعة أحجام ووصفة واحدة
يأتي LLaMA بأربعة نماذج تتشارك البنية ذاتها وتختلف فقط في الحجم. جميعها تستخدم بطول 2048 رمزاً، و AdamW مع ، وتطبيقات مثل الانتباه الموفِّر للذاكرة و لتقليل استهلاك الذاكرة وتسريع التشغيل.
النموذجان 7B و13B يتدرّبان على تريليون رمز، بينما 33B و65B يتدرّبان على 1.4 تريليون رمز — أبعد بكثير من نقطة Chinchilla المُثلى، بإنفاق حوسبة إضافي مُتعمَّد لاستخلاص أداء أعلى من كل معامل. واللافت أنّ خسارة التدريب ظلّت تنخفض حتى بعد تريليون رمز، مما يُشير إلى أنّ مزيداً من البيانات كان سيُفيد أكثر.
تدريب فعّال على نطاق واسع
تدريب نموذج بـ65 مليار معامل على 1.4 تريليون رمز يتطلّب هندسة جادّة. يعتمد LLaMA على عدة تحسينات لتحقيق ذلك:
- انتباه عالي الكفاءة. تطبيق السببي يتجنّب تخزين مصفوفة الانتباه الكاملة n × n، فينخفض استهلاك الذاكرة من O(n²) إلى O(n). وبدمجه مع FlashAttention يتقلّص كلٌّ من الذاكرة ووقت التشغيل.
- . بدلاً من الاحتفاظ بجميع التنشيطات الوسيطة للتمرير العكسي، تُعيد الشبكة حسابها أثناء . هذا يُقايض الحوسبة بالذاكرة ويُتيح استخدام أكبر.
- و. يُقسَّم النموذج على عدة معالجات GPU، ويُوزَّع مسار البيانات الدُّفعات على العُقد المختلفة. النموذج ذو الـ65 مليار تدرّب على 2048 معالج A100 لمدة 21 يوماً تقريباً.
بلغت التكلفة الإجمالية لتدريب LLaMA-65B نحو 1,022,362 ساعة GPU على عتاد A100-80GB. للمقارنة، استخدم Chinchilla-70B ميزانية حوسبة مماثلة لكنه أنتج نموذجاً أصعب في النشر والتشغيل بسبب اعتماده على بيانات وبنية تحتية مغلقة.
كتلة LLaMA في الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def rms_norm(x, gamma, eps=1e-6):
"""RMSNorm: إعادة قياس بدون مركزة."""
rms = np.sqrt(np.mean(x ** 2, axis=-1, keepdims=True) + eps)
return (x / rms) * gamma
def swish(x):
"""Swish: دالة تنشيط ناعمة ذاتية البوابة."""
return x * (1 / (1 + np.exp(-x))) # x · σ(x)
def swiglu_ffn(x, W1, V, W2):
"""SwiGLU: تغذية أمامية مبوّبة بمنحنى ناعم."""
return (swish(x @ W1) * (x @ V)) @ W2
def rope(x, positions, d, base=10000):
"""التضمين الموضعي الدوّار: تدوير Q/K بزوايا تعتمد على الموضع."""
freqs = 1.0 / (base ** (np.arange(0, d, 2) / d))
angles = np.outer(positions, freqs)
cos_a, sin_a = np.cos(angles), np.sin(angles)
x1, x2 = x[..., ::2], x[..., 1::2]
return np.stack([x1 * cos_a - x2 * sin_a,
x1 * sin_a + x2 * cos_a], axis=-1).reshape(x.shape)
def llama_block(x, attn_weights, ffn_weights, gamma1, gamma2):
"""كتلة LLaMA واحدة:
تسوية مسبقة ← انتباه ← اتصال تجاوزي ← تسوية مسبقة ← SwiGLU ← اتصال تجاوزي
"""
# 1. تسوية مسبقة + انتباه متعدد الرؤوس + اتصال تجاوزي
h = rms_norm(x, gamma1)
h = multi_head_attention(h, **attn_weights) # مع RoPE بالداخل
x = x + h # اتصال تجاوزي
# 2. تسوية مسبقة + SwiGLU + اتصال تجاوزي
h = rms_norm(x, gamma2)
h = swiglu_ffn(h, **ffn_weights)
x = x + h # اتصال تجاوزي
return x
# كدِّس N من هذه الكتل (N = 32 لـ 7B أو 80 لـ 65B)
# وتحصل على LLaMA. هذه هي البنية بأكملها.النتائج: الأصغر يتفوّق على الأكبر
أبرز النتائج على المعايير المرجعية:
- الاستدلال المنطقي العام (BoolQ وPIQA وSIQA وHellaSwag وWinoGrande وARC وOBQA): LLaMA-13B يتفوّق على GPT-3 ذي الـ175 مليار في جميع المعايير عدا BoolQ. وLLaMA-65B يتفوّق على أحدث النماذج المماثلة في الحجم.
- الإجابة على الأسئلة بدون مراجع (NaturalQuestions وTriviaQA): يحقّق LLaMA-65B أفضل النتائج بين النماذج الموجودة رغم تدريبه على رموز أقل.
- توليد الكود (HumanEval وMBPP): LLaMA-13B يتفوّق على أغلب النماذج غير المتخصصة برمجياً، رغم أنّ 4.5% فقط من بيانات تدريبه كود برمجي.
- الاستدلال الرياضي (MATH وGSM8k): LLaMA-65B يتفوّق على Minerva-62B في GSM8k رغم أنه لم يُضبط على بيانات رياضية.
- (الفهم اللغوي متعدد المهام): LLaMA-65B يتأخر عن Chinchilla-70B وPaLM-540B — المجال الوحيد الذي لا تزال فيه زيادة المعاملات تُحدث فرقاً. لكن بعد يصل LLaMA-65B إلى 63.4% ويُقلّص الفجوة بشكل ملحوظ.
لماذا كان مهماً — فتح الباب
2020
GPT-3 — 175 مليار معامل، واجهة برمجية فقط
أظهر قدرات ناشئة عند التوسعة لكنه ظلّ محصوراً خلف واجهة برمجية مدفوعة ولم تُطلَق أوزانه أبداً. لم يملك الباحثون سوى هندسة المحثّات للتعامل معه.
2022
Chinchilla — إعادة النظر في قوانين التوسعة
كشف أنّ النماذج السابقة لم تتدرّب بالقدر الكافي. الوصفة المثلى: وسِّع البيانات وحجم النموذج بالتساوي. لكنه حسّن لتكلفة التدريب لا تكلفة التشغيل.
2023
LLaMA — مفتوح وكفء ومنافس
أثبت أنّ نماذج أصغر مُدرَّبة على بيانات عامة أكثر تتفوّق على نماذج مغلقة أكبر. أطلق الأوزان لمجتمع البحث وأشعل حركة النماذج المفتوحة.
2023
Alpaca وVicuna — الضبط المجتمعي
أثبت Alpaca من ستانفورد أنّ ضبط LLaMA-7B بالتعليمات يكلّف 600 دولار فقط ويُنتج محادثة بمستوى GPT-3.5. واستخدم Vicuna محادثات ShareGPT. المنظومة المفتوحة انطلقت بسرعة.
2023
LLaMA 2 — إصدار مفتوح كامل
أصدرت Meta نموذج LLaMA 2 برخصة متساهلة بأحجام 7B و13B و70B مُدرَّبة على تريليونَي رمز. أُضيف الانتباه بالاستعلامات المُجمَّعة ونافذة سياق بـ4096 رمزاً مع إصدارات محادثة.
2024
Mistral وQwen والأفق المفتوح
أصبحت وصفة LLaMA المعمارية (RMSNorm + SwiGLU + RoPE) هي المعيار للنماذج المفتوحة. ودفع Mistral-7B وQwen وغيرهما حدود الأداء أبعد.
المساهمة الأعمق لـ LLaMA ليست أيّ تحسين معماري بعينه، بل البرهنة على أنّ الانفتاح والتنافسية يُعزّزان بعضهما. حين درّبت Meta نموذجها على بيانات عامة وأطلقت ، أشعلت موجة بحثية لم تكن أيّ شركة منفردة لتُنتجها وحدها.
المرجعTouvron, Lavril, Izacard, Martinet, Lachaux, Lacroix, Rozière, Goyal, Hambro, Azhar, Rodriguez, Joulin, Grave, Lample. LLaMA: Open and Efficient Foundation Language Models. arXiv, 2023.
مصطلحات هذه الورقة
- تسوية الجذر التربيعي للمتوسطRMSNorm
- SwiGLUSwiGLU
- التضمينات الموضعية الدوّارةRotary Position Embeddings
- قانون التحجيمScaling Law
- نموذج أساسيFoundation Model
- تكلفة الاستدلالInference Cost
- التسوية المسبقةPre-Norm
- الأوزان المفتوحةOpen Weights
- FlashAttentionFlashAttention
- ترميز أزواج البايتByte-Pair Encoding
- نقاط فحص التنشيطاتActivation Checkpointing
- جدول معدل التعلم الجيب تماميCosine Learning Rate Schedule
- SwishSwish
- الخلايا العصبية الميتةDead Neuron
- الانتباه عالي الكفاءةEfficient Attention