إسماعيل بن علا

Tiny LLM

إعادة بناء GPT-2 من الصفر

الذكاء الاصطناعي التوليدي · غشت 2023 · مكتمل

نموذج لغوي على نمط GPT-2 أعدت بناءه سطرًا بسطر لفهم كيفية عمله

التقنياتPyTorchLoRAOpenWebTexttiktokenHugging Face TransformersNumPyKaggle

Tiny LLM — نظرة عامة

نظرة عامة

النماذج اللغوية الكبيرة (Large Language Models) سهلة الاستدعاء وصعبة الفهم. خلال تدريبي في 3D Smart Factory أردت أن أعرف بالضبط ما يجري داخل GPT-2، فأعدت بناء نموذج على نمط GPT-2 من الصفر في PyTorch مع فريق صغير من زملائي المتدربين.

نفّذت الانتباه الذاتي السببي (causal self-attention) يدويًا مع مسار سريع عبر نواة Flash Attention في PyTorch، وكتل مُفكِّك pre-LayerNorm، وتضمينات دخل وخرج مربوطة الأوزان، وطبقات LoRA خاصة بي للضبط الدقيق الموفّر للمعاملات. يستطيع النموذج أيضًا تحميل أوزان GPT-2 الرسمية في البنية نفسها.

قطّعت نحو 5 ملايين ملف من OpenWebText، أي قرابة ربع المدوّنة، بمُقطِّع GPT-2 r50k، ونشرت مجموعة البيانات هذه على Kaggle، ودرّبت النموذج على وحدات GPU في Kaggle. انخفضت خسارتا التدريب والتحقق معًا من نحو 6.4 إلى ما دون 4. إنه مستودعي الأكثر حصولًا على النجوم، وقد بُني للفهم لا لبلوغ حيرة (perplexity) بمستوى أحدث النتائج.

السؤال

هل أستطيع إعادة تنفيذ بنية GPT-2 الداخلية من الصفر مع تحسينات حديثة (Flash Attention وpre-LN) وتدريب نموذج متماسك فعلًا؟

أهم الميزات

كيف يعمل

  1. تحضير البيانات

    يُقطَّع نحو ربع OpenWebText بمُقطِّع GPT-2 r50k ويُخزَّن كتدفقات رموز ثنائية ممهّدة في الذاكرة (memory-mapped) للتدريب والتحقق.

  2. تضمين الرموز

    تُجمع تضمينات الرموز والمواضع؛ ويتشارك تضمين الرموز أوزانه مع طبقة الخرج.

  3. تكديس كتل المُفكِّك

    تطبّق كل كتلة pre-LayerNorm انتباهًا ذاتيًا سببيًا ثم MLP، ولكل منهما وصلة متبقية.

  4. التدريب

    إنتروبيا متقاطعة للتنبؤ بالرمز التالي مع AdamW، وإحماء وتناقص لمعدل التعلم، وتراكم التدرّج، ودقة مختلطة على وحدات GPU في Kaggle.

  5. الضبط الدقيق بـ LoRA

    تُجمَّد الأوزان الأساسية وتُدرَّب فقط مصفوفات صغيرة منخفضة الرتبة، ثم تُدمج مجددًا في الأوزان.

أمثلة

خسارة التدريب والتحقق على المجموعة الجزئية من OpenWebText: تنخفض كلتاهما من نحو 6.4 إلى ما دون 4 خلال قرابة 2,250 تكرارًا، وتبقيان متقاربتين.
خسارة التدريب والتحقق على المجموعة الجزئية من OpenWebText: تنخفض كلتاهما من نحو 6.4 إلى ما دون 4 خلال قرابة 2,250 تكرارًا، وتبقيان متقاربتين.

التقنيات المستخدمة

ما تعلمته

الحدود