أظهرت نماذج اللغات الكبيرة (LLMs)، وخاصة نماذج المحولات التوليدية المدربة مسبقًا (GPT)، أداءً ممتازًا في العديد من المهام اللغوية المعقدة. وقد أدى هذا الاختراق إلى الرغبة في تشغيل برامج LLM هذه أصلاً على الأجهزة المحمولة لحماية خصوصية المستخدم. ومع ذلك، فحتى برامج LLM الصغيرة تكون كبيرة جدًا بحيث لا يمكن تشغيلها على هذه الأجهزة.
على سبيل المثال، يحتوي LLaMA الصغير على معلمات 7B ويبلغ حجم إصدار FP16 الخاص به 14 جيجابايت، بينما تحتوي الأجهزة المحمولة على 18 جيجابايت فقط من ذاكرة الوصول العشوائي الديناميكية (DRAM). لذلك، يعد ضغط LLM من خلال تحسين وقت التدريب (مثل التشتت أو التكميم أو تجميع الوزن) خطوة أساسية لنشر LLM على الجهاز. ومع ذلك، يعد تحسين وقت التدريب في LLM مكلفًا للغاية نظرًا لحجم النموذج والنفقات العامة للموارد الحسابية. تتطلب DKM، إحدى خوارزميات SOTA لتجميع الأوزان، وقتًا تدريبًا زائدًا لتجميع الأوزان المتغيرة نظرًا للحاجة إلى تحليل التفاعلات بين جميع الأوزان وجميع خيارات التجميع الممكنة.
ولذلك، فإن العديد من تقنيات ضغط LLM الحالية، مثل GTPQ وAWQ، تعتمد على تحسين ما بعد التدريب. في هذه الورقة، يقترح الباحثون تقنيات تحسين الذاكرة لتحقيق التجميع الموزون لوقت التدريب وتطبيقه في DKM، المعروف أيضًا باسم eDKM.
تتضمن التقنيات المستخدمة في هذه المقالة تنسيق الموتر عبر الأجهزة وتفرد مصفوفة الوزن وتقسيمها. عند استخدام eDKM لضبط نموذج LLaMA 7B وضغطه إلى 3 بتات لكل عامل وزن، حقق الباحثون انخفاضًا بمقدار 130 ضعفًا في بصمة الذاكرة لمكدس وحدة فك التشفير، وهو أفضل من تقنية الضغط 3 بت الحالية.
تحسين كفاءة ذاكرة DKM
كما هو موضح في الشكل 1، فإن التقليم والتكميم والتطبيع كلها تقنيات شائعة لتحسين الوزن. تعمل هذه الطرق على تحسين الوزن الأصلي W والحصول على الوزن
، لتحسين زمن الوصول للاستدلال أو الدقة أو حجم النموذج. ومن بين هذه التقنيات، يركز الباحثون في هذه المقالة بشكل أساسي على التجميع الموزون، وخاصة خوارزمية التجميع الموزونة DKM.
تجميع الوزن هو عملية تقدير غير خطية للوزن يتم فيها ضغط مصفوفة الوزن في جدول بحث وقائمة من الفهارس منخفضة الدقة لجدول البحث والتي يمكن معالجتها بواسطة مسرعات الاستدلال الحديثة. يقوم DKM بتجميع الأوزان القابلة للتمييز من خلال تحليل التفاعل بين الأوزان (المشار إليها بالرمز W) والنقاط المركزية (المشار إليها بالرمز C)، وإجراء مفاضلة بين نسبة الضغط والدقة.
ولذلك، فإن استخدام DKM لضغط LLM ينتج عنه نتائج عالية الجودة. ومع ذلك، فإن خريطة الانتباه التي تم إنشاؤها أثناء عملية حساب DKM كبيرة، وتعقيد الذاكرة للتمرير الأمامي/الخلفي هو O (|W||C|) (أي المصفوفة في الشكل 1)، وهو أمر صعب بشكل خاص بالنسبة لـ LLM ضغط . . على سبيل المثال، يتطلب نموذج LLaMA 7B الذي يحسب فقط خرائط الانتباه لتجميع الوزن 4 بت، 224 جيجابايت على الأقل من الذاكرة.
*الشكل 1: نظرة عامة على نظام تحسين الوزن. في DKM، يقوم النظام داخليًا بإنشاء خريطة انتباه يمكن تجميعها بواسطة أوزان مختلفة. *
لذلك، يحتاج الباحثون إلى استخدام ذاكرة وحدة المعالجة المركزية للتعامل مع متطلبات الذاكرة الكبيرة هذه، أي تخزين المعلومات أولاً في ذاكرة وحدة المعالجة المركزية ثم نسخها مرة أخرى إلى وحدة معالجة الرسومات عند الحاجة. ومع ذلك، سيؤدي هذا إلى توليد الكثير من حركة المرور بين وحدة معالجة الرسومات ووحدة المعالجة المركزية (وبالتالي إبطاء التدريب) ويتطلب سعة ذاكرة كبيرة لوحدة المعالجة المركزية. وهذا يعني أنه من الضروري تقليل عدد المعاملات بين وحدة المعالجة المركزية ووحدة معالجة الرسومات وتقليل حركة المرور لكل معاملة. ومن أجل التعامل مع هذه المشاكل، قدم الباحثون تقنيتين جديدتين لتحسين الذاكرة في PyTorch.
تنسيق الموتر عبر الأجهزة: تتبع الموترات المنسوخة عبر الأجهزة لتجنب النسخ الزائد، وبالتالي تقليل استخدام الذاكرة وتسريع التدريب.
تفرد الوزن ومعالجة التجزئة: استفد من حقيقة أن الوزن 16 بت يحتوي على 216 قيمة فريدة فقط لتقليل تمثيل خريطة الانتباه (كما هو موضح في الشكل 1) وتقسيمها إلى نماذج تعليمية متعددة.
تنسيق الموتر عبر الأجهزة
تستخدم PyTorch مخزن بيانات لتمثيل الموترات، والتي ترتبط بتخطيط البيانات الفعلي والبيانات الوصفية، والتي تُستخدم لحفظ شكل الموتر ونوعه وما إلى ذلك. تسمح بنية الموتر هذه لـ PyTorch بإعادة استخدام تخزين البيانات قدر الإمكان وتقليل استخدام الذاكرة بشكل فعال. ومع ذلك، عند نقل موتر إلى جهاز آخر (مثل وحدة معالجة الرسومات إلى وحدة المعالجة المركزية)، لا يمكن إعادة استخدام مخزن البيانات ويجب إنشاء موتر جديد.
يوضح الجدول 1 استخدام الذاكرة للموترات عند التنقل بين أجهزة PyTorch. يستهلك الموتر x0 المخصص في السطر 0 4 ميجابايت من وحدة معالجة الرسومات. عندما يتغير عرضه في السطر 1، لا تكون هناك حاجة إلى ذاكرة GPU إضافية حيث يمكن إعادة استخدام مخزن البيانات الأساسي (على سبيل المثال، x0 وx1 متماثلان بالفعل). ومع ذلك، عندما يتم نقل x0 وx1 إلى وحدة المعالجة المركزية كما في السطرين 2 و3، على الرغم من أن y0 وy1 يمكنهما مشاركة نفس تخزين البيانات على وحدة المعالجة المركزية، فإن استهلاك ذاكرة وحدة المعالجة المركزية يصبح 8 ميجابايت، مما يؤدي إلى تكرار ذاكرة وحدة المعالجة المركزية، ويزيد من وحدة معالجة الرسومات. حركة المرور إلى وحدة المعالجة المركزية.
*الجدول 1: قد يتطلب الضبط الدقيق لـ LLM استخدام ذاكرة وحدة المعالجة المركزية لتفريغ أثر الذاكرة على وحدة معالجة الرسومات. يمكن أن يؤدي الافتقار إلى إدارة الموتر عبر الأجهزة إلى نسخ زائدة عن الحاجة عبر الأجهزة (خاصة عندما يكون الرسم البياني الحسابي معقدًا)، وهو ما يضر بشكل خاص بتحسين وقت تدريب LLM. على سبيل المثال، على الرغم من أن x0 وx1 هما نفس الموتر مع طرق عرض مختلفة، إلا أن الموترين الناتجين y0 وy1 لا يشاركان في تخزين البيانات عند نسخهما إلى وحدة المعالجة المركزية، بينما يفعلان ذلك في وحدة معالجة الرسومات x0 وx1. *
ولمعالجة عدم الكفاءة هذا، وضع الباحثون طبقة تنسيق في الشكل 2 (ب)، حيث يمثل اللون الأسود تخزين البيانات الفعلي والبيانات الوصفية، ويمثل اللون الرمادي البيانات الوصفية فقط. يوضح الشكل 2 (أ) المثال من الجدول 1، حيث يشارك x1 تخطيط البيانات مع x0، لكن y0 وy1 لديهما مخزن بيانات مكرر على وحدة المعالجة المركزية. كما هو موضح في الشكل 2 (ب)، من خلال إدخال طبقة تنسيق، يتجنب الباحثون هذا التكرار ويقللون حركة مرور وحدة معالجة الرسومات إلى وحدة المعالجة المركزية. استخدم الباحثون خطاف الحفظ الموتر في PyTorch لتنفيذ مخطط المبادلة هذا، والتحقق مما إذا كان قد تم نسخ مخزن البيانات نفسه.
ومع ذلك، فإن استخدام مثل هذا المخطط للتحقق من وجود نفس الموتر على الجهاز المستهدف أمر مكلف. في المثال الموضح في الشكل 2(ب)، لم يقم الباحث بنسخ x1 إلى وحدة المعالجة المركزية، ولكنه قام ببساطة بإرجاع مرجع إلى y0 وعملية العرض بين x1 وy0.
*الشكل 2: عند تطبيق تزامن الموتر عبر الأجهزة على الموقف في الجدول 1، يمكن تجنب الازدواجية على جانب وحدة المعالجة المركزية، وبالتالي توفير الذاكرة وحركة المرور. *
يؤدي تصفح الرسم البياني الحسابي إلى إضافة دورات حسابية إضافية، ويمكن أن يؤدي حفظ النسخ غير الضرورية إلى تعويض هذه النفقات العامة. وجد الباحثون أن البحث خلال 4 قفزات كان كافيًا للكشف عن جميع الحالات المؤهلة في الرسم البياني الحسابي لتطبيق DKM الأصلي.
تفرد الوزن وتقسيمه
في معظم تدريبات LLM، تستخدم الأوزان عمومًا تخزين 16 بت (مثل BF16 أو FP16)، مما يعني أنه على الرغم من وجود مليارات المعلمات في LLM، إلا أن هناك 216 معاملًا فريدًا فقط بسبب عرض البتات. وهذا يوفر الفرصة لضغط خريطة الانتباه بشكل كبير بين الأوزان ونقاط المركز، كما هو موضح في الشكل 3.
الشكل 3: تمييز الوزن وتقسيمه
نتائج تجريبية
** دقة LLM **
تقارن هذه المقالة eDKM بأنظمة الضغط الأخرى القائمة على القياس الكمي، بما في ذلك: RTN وSmoothQuant وGPTQ وAWQ وLLM-QAT. بالنسبة لـ eDKM، أجرى الباحثون أيضًا ضغطًا بمقدار 8 بت على طبقة التضمين. وأخيرا تم التوصل إلى الاستنتاجات التالية:
يمكّن eDKM نموذج LLaMA 7B المضغوط ذو 3 بت من التفوق على جميع أنظمة الضغط ذات 3 بت الأخرى.
يتمتع eDKM بأفضل دقة مقارنة بمعيار ARC-e في تكوينات 3 بت و4 بت.
أداء eDKM تنافسي للغاية وفقًا لمعايير PIQA وMMLU باستخدام نموذج ضغط 4 بت.
تجربة الاستئصال
في تجارب الاستئصال، قام الباحثون بقياس المفاضلة بين بصمة الذاكرة والسرعة الأمامية والخلفية لضغط 3 بت باستخدام طبقة الانتباه في حزمة فك التشفير LLaMA 7B كمثال. يؤدي تزامن الموتر عبر الأجهزة وحده إلى تقليل أثر الذاكرة بمقدار 2.9 مرة مع القليل جدًا من وقت التشغيل، بينما توفر وحدات التجزئة والتفرد 23.5 مرة و16.4 مرة على التوالي. عندما يتم الجمع بين جميع التقنيات، يؤدي eDKM إلى توفير ما يقرب من 130 مرة. على الرغم من أن هذه الخطوات تتطلب حسابًا إضافيًا ونفقات اتصال إضافية، إلا أن الحمل الزائد في وقت التشغيل لا يكاد يذكر حيث يتم تقليل حركة المرور بين وحدة معالجة الرسومات ووحدة المعالجة المركزية بشكل كبير.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تبتكر تقنية الضغط مرة أخرى، مما يمنح النماذج الكبيرة فرصة لتناسب الهواتف المحمولة
أظهرت نماذج اللغات الكبيرة (LLMs)، وخاصة نماذج المحولات التوليدية المدربة مسبقًا (GPT)، أداءً ممتازًا في العديد من المهام اللغوية المعقدة. وقد أدى هذا الاختراق إلى الرغبة في تشغيل برامج LLM هذه أصلاً على الأجهزة المحمولة لحماية خصوصية المستخدم. ومع ذلك، فحتى برامج LLM الصغيرة تكون كبيرة جدًا بحيث لا يمكن تشغيلها على هذه الأجهزة.
على سبيل المثال، يحتوي LLaMA الصغير على معلمات 7B ويبلغ حجم إصدار FP16 الخاص به 14 جيجابايت، بينما تحتوي الأجهزة المحمولة على 18 جيجابايت فقط من ذاكرة الوصول العشوائي الديناميكية (DRAM). لذلك، يعد ضغط LLM من خلال تحسين وقت التدريب (مثل التشتت أو التكميم أو تجميع الوزن) خطوة أساسية لنشر LLM على الجهاز. ومع ذلك، يعد تحسين وقت التدريب في LLM مكلفًا للغاية نظرًا لحجم النموذج والنفقات العامة للموارد الحسابية. تتطلب DKM، إحدى خوارزميات SOTA لتجميع الأوزان، وقتًا تدريبًا زائدًا لتجميع الأوزان المتغيرة نظرًا للحاجة إلى تحليل التفاعلات بين جميع الأوزان وجميع خيارات التجميع الممكنة.
ولذلك، فإن العديد من تقنيات ضغط LLM الحالية، مثل GTPQ وAWQ، تعتمد على تحسين ما بعد التدريب. في هذه الورقة، يقترح الباحثون تقنيات تحسين الذاكرة لتحقيق التجميع الموزون لوقت التدريب وتطبيقه في DKM، المعروف أيضًا باسم eDKM.
تتضمن التقنيات المستخدمة في هذه المقالة تنسيق الموتر عبر الأجهزة وتفرد مصفوفة الوزن وتقسيمها. عند استخدام eDKM لضبط نموذج LLaMA 7B وضغطه إلى 3 بتات لكل عامل وزن، حقق الباحثون انخفاضًا بمقدار 130 ضعفًا في بصمة الذاكرة لمكدس وحدة فك التشفير، وهو أفضل من تقنية الضغط 3 بت الحالية.
تحسين كفاءة ذاكرة DKM
كما هو موضح في الشكل 1، فإن التقليم والتكميم والتطبيع كلها تقنيات شائعة لتحسين الوزن. تعمل هذه الطرق على تحسين الوزن الأصلي W والحصول على الوزن
تجميع الوزن هو عملية تقدير غير خطية للوزن يتم فيها ضغط مصفوفة الوزن في جدول بحث وقائمة من الفهارس منخفضة الدقة لجدول البحث والتي يمكن معالجتها بواسطة مسرعات الاستدلال الحديثة. يقوم DKM بتجميع الأوزان القابلة للتمييز من خلال تحليل التفاعل بين الأوزان (المشار إليها بالرمز W) والنقاط المركزية (المشار إليها بالرمز C)، وإجراء مفاضلة بين نسبة الضغط والدقة.
ولذلك، فإن استخدام DKM لضغط LLM ينتج عنه نتائج عالية الجودة. ومع ذلك، فإن خريطة الانتباه التي تم إنشاؤها أثناء عملية حساب DKM كبيرة، وتعقيد الذاكرة للتمرير الأمامي/الخلفي هو O (|W||C|) (أي المصفوفة في الشكل 1)، وهو أمر صعب بشكل خاص بالنسبة لـ LLM ضغط . . على سبيل المثال، يتطلب نموذج LLaMA 7B الذي يحسب فقط خرائط الانتباه لتجميع الوزن 4 بت، 224 جيجابايت على الأقل من الذاكرة.
لذلك، يحتاج الباحثون إلى استخدام ذاكرة وحدة المعالجة المركزية للتعامل مع متطلبات الذاكرة الكبيرة هذه، أي تخزين المعلومات أولاً في ذاكرة وحدة المعالجة المركزية ثم نسخها مرة أخرى إلى وحدة معالجة الرسومات عند الحاجة. ومع ذلك، سيؤدي هذا إلى توليد الكثير من حركة المرور بين وحدة معالجة الرسومات ووحدة المعالجة المركزية (وبالتالي إبطاء التدريب) ويتطلب سعة ذاكرة كبيرة لوحدة المعالجة المركزية. وهذا يعني أنه من الضروري تقليل عدد المعاملات بين وحدة المعالجة المركزية ووحدة معالجة الرسومات وتقليل حركة المرور لكل معاملة. ومن أجل التعامل مع هذه المشاكل، قدم الباحثون تقنيتين جديدتين لتحسين الذاكرة في PyTorch.
تنسيق الموتر عبر الأجهزة
تستخدم PyTorch مخزن بيانات لتمثيل الموترات، والتي ترتبط بتخطيط البيانات الفعلي والبيانات الوصفية، والتي تُستخدم لحفظ شكل الموتر ونوعه وما إلى ذلك. تسمح بنية الموتر هذه لـ PyTorch بإعادة استخدام تخزين البيانات قدر الإمكان وتقليل استخدام الذاكرة بشكل فعال. ومع ذلك، عند نقل موتر إلى جهاز آخر (مثل وحدة معالجة الرسومات إلى وحدة المعالجة المركزية)، لا يمكن إعادة استخدام مخزن البيانات ويجب إنشاء موتر جديد.
يوضح الجدول 1 استخدام الذاكرة للموترات عند التنقل بين أجهزة PyTorch. يستهلك الموتر x0 المخصص في السطر 0 4 ميجابايت من وحدة معالجة الرسومات. عندما يتغير عرضه في السطر 1، لا تكون هناك حاجة إلى ذاكرة GPU إضافية حيث يمكن إعادة استخدام مخزن البيانات الأساسي (على سبيل المثال، x0 وx1 متماثلان بالفعل). ومع ذلك، عندما يتم نقل x0 وx1 إلى وحدة المعالجة المركزية كما في السطرين 2 و3، على الرغم من أن y0 وy1 يمكنهما مشاركة نفس تخزين البيانات على وحدة المعالجة المركزية، فإن استهلاك ذاكرة وحدة المعالجة المركزية يصبح 8 ميجابايت، مما يؤدي إلى تكرار ذاكرة وحدة المعالجة المركزية، ويزيد من وحدة معالجة الرسومات. حركة المرور إلى وحدة المعالجة المركزية.
ولمعالجة عدم الكفاءة هذا، وضع الباحثون طبقة تنسيق في الشكل 2 (ب)، حيث يمثل اللون الأسود تخزين البيانات الفعلي والبيانات الوصفية، ويمثل اللون الرمادي البيانات الوصفية فقط. يوضح الشكل 2 (أ) المثال من الجدول 1، حيث يشارك x1 تخطيط البيانات مع x0، لكن y0 وy1 لديهما مخزن بيانات مكرر على وحدة المعالجة المركزية. كما هو موضح في الشكل 2 (ب)، من خلال إدخال طبقة تنسيق، يتجنب الباحثون هذا التكرار ويقللون حركة مرور وحدة معالجة الرسومات إلى وحدة المعالجة المركزية. استخدم الباحثون خطاف الحفظ الموتر في PyTorch لتنفيذ مخطط المبادلة هذا، والتحقق مما إذا كان قد تم نسخ مخزن البيانات نفسه.
ومع ذلك، فإن استخدام مثل هذا المخطط للتحقق من وجود نفس الموتر على الجهاز المستهدف أمر مكلف. في المثال الموضح في الشكل 2(ب)، لم يقم الباحث بنسخ x1 إلى وحدة المعالجة المركزية، ولكنه قام ببساطة بإرجاع مرجع إلى y0 وعملية العرض بين x1 وy0.
يؤدي تصفح الرسم البياني الحسابي إلى إضافة دورات حسابية إضافية، ويمكن أن يؤدي حفظ النسخ غير الضرورية إلى تعويض هذه النفقات العامة. وجد الباحثون أن البحث خلال 4 قفزات كان كافيًا للكشف عن جميع الحالات المؤهلة في الرسم البياني الحسابي لتطبيق DKM الأصلي.
تفرد الوزن وتقسيمه
في معظم تدريبات LLM، تستخدم الأوزان عمومًا تخزين 16 بت (مثل BF16 أو FP16)، مما يعني أنه على الرغم من وجود مليارات المعلمات في LLM، إلا أن هناك 216 معاملًا فريدًا فقط بسبب عرض البتات. وهذا يوفر الفرصة لضغط خريطة الانتباه بشكل كبير بين الأوزان ونقاط المركز، كما هو موضح في الشكل 3.
نتائج تجريبية
** دقة LLM **
تقارن هذه المقالة eDKM بأنظمة الضغط الأخرى القائمة على القياس الكمي، بما في ذلك: RTN وSmoothQuant وGPTQ وAWQ وLLM-QAT. بالنسبة لـ eDKM، أجرى الباحثون أيضًا ضغطًا بمقدار 8 بت على طبقة التضمين. وأخيرا تم التوصل إلى الاستنتاجات التالية:
في تجارب الاستئصال، قام الباحثون بقياس المفاضلة بين بصمة الذاكرة والسرعة الأمامية والخلفية لضغط 3 بت باستخدام طبقة الانتباه في حزمة فك التشفير LLaMA 7B كمثال. يؤدي تزامن الموتر عبر الأجهزة وحده إلى تقليل أثر الذاكرة بمقدار 2.9 مرة مع القليل جدًا من وقت التشغيل، بينما توفر وحدات التجزئة والتفرد 23.5 مرة و16.4 مرة على التوالي. عندما يتم الجمع بين جميع التقنيات، يؤدي eDKM إلى توفير ما يقرب من 130 مرة. على الرغم من أن هذه الخطوات تتطلب حسابًا إضافيًا ونفقات اتصال إضافية، إلا أن الحمل الزائد في وقت التشغيل لا يكاد يذكر حيث يتم تقليل حركة المرور بين وحدة معالجة الرسومات ووحدة المعالجة المركزية بشكل كبير.