يحتوي هذا المستودع على تطبيق لنموذج LLaMA 2 (نموذج اللغة الكبير Meta AI)، وهو متغير المحول التوليدي المُدرب مسبقًا (GPT). يركز التنفيذ على بنية النموذج وعملية الاستدلال. تمت إعادة هيكلة الكود والتعليق عليه بشدة لتسهيل الفهم السهل للأجزاء الرئيسية من البنية.
RMS-Normalization: RMSNorm هو تبسيط لتطبيع الطبقة الأصلية (LayerNorm). LayerNorm هي تقنية تنظيم قد تتعامل مع مشكلة إزاحة المتغير المشترك الداخلي وذلك لتحقيق الاستقرار في عمليات تنشيط الطبقة وتحسين تقارب النموذج. لقد ثبت نجاحه الكبير في LLaMA 2.
وظيفة التنشيط: يستخدم LLaMA 2 وظيفة تنشيط SwiGLU بدلاً من ReLU، مما يؤدي إلى تحسين أداء التدريب.
التضمينات الموضعية الدوارة (RoPE): مستوحاة من مشروع GPT-Neo-X، تشتمل LLaMA 2 على التضمينات الموضعية الدوارة في كل طبقة، مما يعزز الفهم الموضعي للنموذج.
زيادة طول السياق وانتباه الاستعلام المجمع (GQA): يحتوي نموذج LLaMA 2 على نافذة سياق مضاعفة (من 2048 إلى 4096 رمزًا) ويستخدم اهتمام الاستعلام المجمع. يتيح ذلك معالجة أفضل للمستندات الطويلة وتاريخ الدردشة ومهام التلخيص.
يعد التخزين المؤقت لـ KV أحد تقنيات التحسين المهمة المستخدمة في هذا التنفيذ لتسريع عملية الاستدلال لفك تشفير نموذج اللغة (LM). أثناء فك تشفير الانحدار الذاتي، حيث يتم التنبؤ بكل رمز مميز بناءً على الرموز المميزة السابقة، يكون الاهتمام الذاتي داخل النموذج سببيًا. وهذا يعني أن تمثيل الرمز المميز يتم حسابه بناءً على نفسه وعلى الرموز المميزة السابقة فقط، وليس على الرموز المستقبلية.
في الاهتمام الذاتي، يتم عرض تسلسل الإدخال باستخدام إسقاطات المفتاح والقيمة والاستعلام. تقوم ذاكرة التخزين المؤقت KV بتخزين نتائج توقعات المفتاح والقيمة بكفاءة، مما يلغي الحاجة إلى حسابات زائدة عن الحاجة في تكرارات فك التشفير المستقبلية. ونتيجة لذلك، يمكن استرجاع تمثيلات الرموز المميزة التي تظل ثابتة أثناء فك تشفير الانحدار الذاتي من ذاكرة التخزين المؤقت، مما يعزز سرعة الاستدلال بشكل كبير.
تعد تقنية التخزين المؤقت لـ KV ميزة معمارية رئيسية تعمل على تحسين كفاءة وسرعة نموذج LLaMA أثناء فك التشفير.
يتضمن نموذج LLaMA 2 اختلافًا في مفهوم الانتباه متعدد الاستعلامات (MQA) الذي اقترحه شازير (2019)، وهو تحسين لخوارزمية الانتباه متعدد الرؤوس (MHA). تعمل MQA على تحسين كفاءة آليات الانتباه مع الحفاظ على الحد الأدنى من تدهور الدقة.
في الانتباه التقليدي متعدد الرؤوس، يتم تكرار حساب الانتباه بالكامل h مرات، حيث h هو عدد رؤوس الانتباه. ومع ذلك، تعمل GQA على تقليل التكرار الحسابي عن طريق إزالة أبعاد الرؤوس (h) أو تقليلها بشكل كبير من قيمتي K وV. في MQA، يخضع كل "رأس" لقيمة الاستعلام (Q) لنفس تحويل K وV، مما يؤدي إلى تحسين حساب الانتباه.
يؤدي هذا التحسين إلى أداء حسابي مماثل لأداء MHA ولكنه يقلل بشكل كبير من كمية البيانات المقروءة/المكتوبة من الذاكرة. ونتيجة لذلك، يعمل GQA على تحسين الأداء (من خلال زيادة الكثافة الحسابية) وكفاءة مساحة الذاكرة (من خلال تقليل كمية بيانات ذاكرة التخزين المؤقت KV المخزنة)، مما يجعله إضافة قيمة إلى بنية LLaMA.
في نموذج LLaMA 2، تلعب التضمينات الموضعية الدوارة (RoPE) دورًا حاسمًا في تعزيز آليات الانتباه من خلال دمج المعلومات الموضعية في تمثيلات الرمز المميز. إن مفهوم "الانتباه" قوي، ولكن للتأكد من أن الاهتمام المحسوب ذو معنى، يجب أن يكون لدى الرموز المميزة فكرة عن الموضع.
تأتي عمليات تضمين الموضع في نوعين رئيسيين: مطلق ونسبي. تعمل عمليات تضمين الموضع المطلق على تشفير الموضع المطلق للكلمة في عبارة الإدخال، بينما تعمل عمليات تضمين الموضع النسبي على تشفير الموضع النسبي بين كلمتين. توفر هذه التضمينات معلومات موضعية حيوية تساعد الرموز المميزة على فهم سياقها بالتسلسل.
تتخذ التضمينات الموضعية الدوارة نهجًا فريدًا من خلال الاستفادة من مصفوفات التدوير لتضمين المعلومات الموضعية. الهدف هو التأكد من أن المنتج الداخلي للمتجهين q وk، في الموضعين m وn، يعتمد فقط على q وk والمسافة النسبية بينهما (m - n). يتم تضمين مصفوفة التدوير، حيث الزاوية هي موضع المتجه، في المتجه الأصلي من خلال ضرب المصفوفة، بما يتماشى مع هذا المعيار.
يعزز هذا النهج المبتكر لدمج المعلومات الموضعية قدرة النموذج على فهم العلاقات والسياق المميزين، مما يساهم في تحسين آليات الاهتمام.
model.py
: يحتوي على تنفيذ نموذج محول LLaMA مع تعليقات تفصيلية تشرح كل مكون ووظيفة.
inference.py
: يوضح كيفية استخدام نموذج LLaMA المدرب للاستدلال، مما يوفر رؤى حول معالجة المدخلات والمخرجات.
لا تتردد في استكشاف الكود، وتصحيح الأخطاء إن وجدت، وتجربة نموذج LLaMA 2!