رطم تسريع استدلال نماذج اللغات الكبيرة: تقنيات النشر الفعال - Unite.AI
اتصل بنا للحصول على مزيد من المعلومات

موجه الهندسة

تسريع استنتاج نماذج اللغة الكبيرة: تقنيات النشر الفعال

mm

تم النشر

 on

تسريع الاستدلال LLM

نماذج اللغات الكبيرة (LLMs) مثل GPT-4، المكالمات، وPaLM يدفعان حدود ما هو ممكن من خلال معالجة اللغة الطبيعية. ومع ذلك، فإن نشر هذه النماذج الضخمة في بيئات الإنتاج يمثل تحديات كبيرة من حيث المتطلبات الحسابية، واستخدام الذاكرة، وزمن الوصول، والتكلفة. مع استمرار طلاب LLM في النمو بشكل أكبر وأكثر قدرة، يعد تحسين أداء الاستدلال الخاص بهم أمرًا بالغ الأهمية لتطبيقات العالم الحقيقي.

في هذا الغوص التقني العميق، سنستكشف أحدث التقنيات لتسريع استدلال LLM، مما يتيح أوقات استجابة أسرع وإنتاجية أعلى واستخدام أكثر كفاءة لموارد الأجهزة. سنغطي طرقًا تتراوح من تقنيات الدقة العددية وآليات الانتباه الجديدة إلى الابتكارات المعمارية المصممة بشكل واضح لإنشاء نص فعال.

لنبدأ بفهم سبب صعوبة استنتاج LLM مقارنة بنماذج البرمجة اللغوية العصبية التقليدية.

تحدي الاستدلال مع نماذج اللغات الكبيرة

قبل ظهور ماجستير إدارة الأعمال، اعتمدت معالجة اللغة الطبيعية على نماذج أصغر تركز على مهام محددة مثل تصنيف النص، والتعرف على الكيانات المسماة، وتحليل المشاعر. على الرغم من أن هذه النماذج لا تزال تتطلب الكثير من العمليات الحسابية، إلا أنه يمكن نشرها على أجهزة متواضعة واتباع عمليات استدلال واضحة نسبيًا.

من ناحية أخرى، تمثل LLMs نقلة نوعية. يتم تدريب هذه النماذج على مجموعات بيانات ضخمة باستخدام مليارات المعلمات، مما يمكنها من أداء مجموعة واسعة من المهام اللغوية بكفاءة ملحوظة. ومع ذلك، فإن هذه القوة تأتي بتكلفة - زيادة كبيرة في المتطلبات الحسابية أثناء التدريب والاستدلال.

أحد التحديات الرئيسية هو طبيعة الانحدار الذاتي لإنشاء النص باستخدام LLMs. لإنتاج نص يشبه الإنسان، تتنبأ هذه النماذج برمز مميز واحد (كلمة أو كلمة فرعية) في المرة الواحدة، حيث يعتمد كل رمز مميز جديد على المخرجات التي تم إنشاؤها مسبقًا. تمنع هذه التبعية التسلسلية الموازاة الفعالة وتؤدي إلى متطلبات حسابية تتوسع متعدد الحدود بطول التسلسل.

بالإضافة إلى ذلك، غالبًا ما تتطلب دورات LLM تسلسلات إدخال طويلة (مطالبات) لإنشاء السياق اللازم لإنشاء نص عالي الجودة. تتطلب أطوال الإدخال الأطول المزيد من الذاكرة لتخزين الحالات المتوسطة ومصفوفات الانتباه، مما يزيد من إجهاد موارد الأجهزة.

مع هذه التحديات الفريدة، يمكن أن تفشل تقنيات التحسين التقليدية مثل الرسم البياني الكمي والحسابي الثابت، وتكافح للحفاظ على أداء LLM مع تقديم عمليات تسريع ذات معنى. دعونا نتعمق في بعض الاستراتيجيات الأساسية المصممة بشكل واضح لتسريع استدلال LLM.

تقنيات الدقة العددية

من دقة 32 بت إلى 16 بت

من دقة 32 بت إلى 16 بت

سبيل واحد للتسريع LLM الاستدلال هو الاستفادة من الدقة العددية المنخفضة لأوزان النماذج وعمليات التنشيط. تستخدم أطر التعلم العميق الحديثة مثل PyTorch وTensorFlow عادةً دقة النقطة العائمة 32 بت (FP32) بشكل افتراضي. ومع ذلك، أظهرت الأبحاث أن LLMs يمكنها في كثير من الأحيان الحفاظ على دقة عالية حتى عند العمل بدقة أقل، مثل 16 بت (FP16)، أو أعداد صحيحة 8 بت (INT8)، أو حتى أعداد صحيحة 4 بت (INT4).

يوفر تقليل الدقة الرقمية العديد من الفوائد:

  • انخفاض بصمة الذاكرة: تتطلب التمثيلات ذات الدقة المنخفضة ذاكرة أقل، مما يسمح للنماذج الأكبر أو أحجام الدُفعات بالتوافق مع نفس قيود الأجهزة.
  • حساب أسرع: توفر العديد من وحدات المعالجة المركزية (CPU) ووحدات معالجة الرسومات (GPU) الحديثة تعليمات متخصصة وتسريعًا للأجهزة لإجراء عمليات حسابية ذات دقة أقل، مما يتيح عمليات تسريع كبيرة.
  • تحسين كفاءة الطاقة: مع متطلبات الذاكرة الأصغر والحسابات الأسرع، يمكن أن يؤدي الاستدلال الأقل دقة إلى انخفاض استهلاك الطاقة - وهي ميزة بالغة الأهمية لعمليات نشر الحافة والأجهزة المحمولة.

في حين أن تقنيات الدقة العددية القوية تؤدي إلى فقدان بعض الدقة مقارنة بعملية FP32. المفتاح هو تقييم هذه المفاضلة بعناية بين المكاسب الحسابية وتدهور الأداء المحتمل لحالة الاستخدام المحددة الخاصة بك.

هناك طريقتان رئيسيتان للتكميم مع LLMs:

التكميم بعد التدريب (PTQ): في هذه الطريقة، يتم تدريب LLM أولاً باستخدام دقة FP32 القياسية. بعد التدريب، يتم قياس (تحويل) أوزان النموذج إلى تنسيق أقل دقة مثل INT8 أو INT4. يعد PTQ سهل التنفيذ ولكنه قد يؤدي إلى انخفاض أكبر في الدقة.

التدريب المدرك للكمية (QAT): مع QAT، تتم محاكاة عملية التكميم خلال مرحلة التدريب نفسها. يتيح ذلك للنموذج أن يتعلم كيفية التعويض عن أخطاء القياس الكمي، مما يقلل من تدهور الدقة عند نشر النموذج الكمي النهائي. إن QAT أكثر مشاركة ولكنها غالبًا ما تؤدي إلى نتائج أفضل مقارنةً بـ PTQ.

بالنسبة للتطبيق العملي، يمكن للمرء الاستفادة من النماذج الكمية مسبقًا المتوفرة على منصات مثل وجه يعانق، والتي تستضيف مجموعة متنوعة من النماذج المحسنة من خلال طرق التكميم المختلفة. على سبيل المثال، إذا كان النموذج الكمي باستخدام Auto-GPTQ مرغوبًا، فيمكن للمستخدمين تحميله بسهولة باستخدام مكتبة محولات Hugging Face. بالإضافة إلى ذلك، لتحديد حجم النموذج، يمكن استخدام أدوات مثل AutoGPTQ، والتي تتكامل بسلاسة مع المكتبات الموجودة لضغط النموذج بكفاءة.

فيما يلي مثال لتحميل نموذج Llama-2-7b المُكمَّم مسبقًا باستخدام مكتبة محولات Hugging Face:

from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "TheBloke/Llama-2-7b-Chat-GPTQ"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
And for custom quantization, one might follow these steps using the AutoGPTQ toolkit:
from transformers import AutoModelForCausalLM, AutoTokenizer, GPTQConfig
model_id = "llama-2-7b-original"
tokenizer = AutoTokenizer.from_pretrained(model_id)
quantization_config = GPTQConfig(bits=4, dataset="your-dataset", tokenizer=tokenizer)
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=quantization_config)

تذكر أن التكميم قد يتطلب ضبطًا دقيقًا بعد التكميم أو هندسة سريعة للحفاظ على جودة النموذج. للحصول على تقدير كمي جديد، يمكنك المساهمة مرة أخرى في المجتمع من خلال دفع نماذجك الكمية إلى منصات مثل Hugging Face.

تأكد دائمًا من تحقيق التوازن بين حجم النموذج والمتطلبات الحسابية والأداء عند تحديد استراتيجية التكميم لحالة الاستخدام المحددة الخاصة بك.

 

خوارزمية انتباه الفلاش

تعد آلية الاهتمام متعدد الرؤوس مكونًا أساسيًا في LLMs المستندة إلى المحولات، مما يمكّن النموذج من التقاط التبعيات طويلة المدى والتمثيلات السياقية. ومع ذلك، فإن عملية الانتباه هذه غير فعالة من الناحية الحسابية لإنشاء نص الانحدار التلقائي، لأنها تتطلب إعادة حساب العديد من نفس القيم لكل رمز مميز جديد.

خوارزمية فلاش الانتباه، الذي تم تقديمه في ورقة FlashAttention، يوفر أسلوبًا أكثر كفاءة في الذاكرة وملاءمة للتوازي في عملية الانتباه. بدلاً من إعادة حساب قيم الاهتمام لكل رمز مميز، يقوم Flash Attention بتخزين مؤقت وإعادة استخدام مصفوفات المفتاح/القيمة المتوسطة، مع تجنب الحسابات الزائدة عن الحاجة.

لا يؤدي هذا التحسين إلى تقليل الحمل الحسابي فحسب، بل يعمل أيضًا على تحسين أنماط الوصول إلى الذاكرة، مما يؤدي إلى استخدام أفضل لعرض النطاق الترددي لذاكرة وحدة معالجة الرسومات والتوازي.

في حين أن تفاصيل Flash Attention متضمنة تمامًا، فإن الفكرة عالية المستوى هي تحليل عملية الانتباه إلى مرحلتين:

  1. تضمين مجموع البادئة: تقوم هذه المرحلة بحساب وتخزين تضمينات المفتاح/القيمة لجميع رموز الإدخال، مما يتيح إعادة الاستخدام بكفاءة أثناء الإنشاء.
  2. الاهتمام السببي: عملية الاهتمام الفعلية، تم تحسينها الآن للاستفادة من تضمينات المفتاح/القيمة المخزنة مؤقتًا من المرحلة الأولى.

من خلال فصل هذه المراحل، يمكن لـ Flash Attention الاستفادة من عمليات GPU المتوازية للغاية، مما يؤدي إلى تسريع عنق الزجاجة في الانتباه بشكل كبير في استنتاج LLM.

فيما يلي توضيح مفاهيمي موجز لتطبيق Flash Attention مع LLM:

from transformers import AutoModelForCausalLM
import torch
from flash_attention import flash_attention
# Load an LLM like OctoCoder
model = AutoModelForCausalLM.from_pretrained("bigcode/octocoder")
# Sample system prompt that guides the model towards being a better coding assistant
system_prompt = """... (system prompt details) ..."""
# Preparing a longer input with the system prompt
long_prompt = system_prompt + "Question: Please write a function in Python that transforms bytes to Gigabytes."
# Converting the model for Flash Attention optimization
model.to_bettertransformer()
# Running the model with Flash Attention
start_time = time.time()
with torch.backends.cuda.sdp_kernel(enable_flash=True):
result = model.generate(long_prompt, max_new_tokens=60)
print(f"Generated in {time.time() - start_time} seconds.")

في حين أن Flash Attention يوفر مكاسب أداء مذهلة، إلا أنه يعمل ضمن بنية المحولات الحالية. لإطلاق العنان لإمكانات الاستدلال المتسارع لماجستير القانون بشكل كامل، نحتاج إلى استكشاف الابتكارات المعمارية المصممة خصيصًا لهذه المهمة.

تشذيب LLMs

يعد Pruning LLMs أسلوبًا لتقليل حجم النموذج مع الحفاظ على الوظيفة. ويستخدم مُقدِّرًا يعتمد على البيانات لأهمية الوزن استنادًا إلى تقريبيات مصفوفة هسه. أثناء التقليم، تتم إزالة مجموعات الوزن الأقل أهمية، ثم يتم ضبط النموذج بدقة لاستعادة الدقة. توفر حزمة LLM-Pruner نصوصًا للتقليم مع دعم العديد من الاستراتيجيات. يتضمن التقليم اكتشاف التبعيات، وتقدير مساهمات المجموعة، ومرحلة التعافي التي تتضمن تدريبًا قصيرًا بعد التدريب.

فيما يلي مثال مبسط لرمز بايثون يوضح استخدام ماجستير في القانون-المقلم لنموذج LLaMa:

from transformers import AutoModelForSequenceClassification
from pruning import LLMPruner
# Load pre-trained LLaMa model
model = AutoModelForSequenceClassification.from_pretrained("llama-base")
# Initialize the pruner with desired configuration
pruner = LLMPruner(
model,
pruning_ratio=0.25,
block_mlp_layers=(4, 30),
block_attention_layers=(4, 30),
pruner_type='taylor'
)
# Execute pruning
pruned_model = pruner.prune()
# Fine-tune the pruned model
pruned_model.fine_tune(training_data)

يمثل رسم الكود هذا تحميل نموذج LLaMa مُدرب مسبقًا، وإعداد المقلم بتكوينات محددة (مثل الطبقات التي سيتم تقليمها ونوع المقلم)، وتنفيذ عملية التقليم، وأخيرًا، ضبط النموذج الذي تم تقليمه بشكل دقيق.

لاحظ أنه بالنسبة للتنفيذ الفعلي، ستحتاج إلى ملء التفاصيل مثل اسم النموذج المحدد، والمسارات إلى البيانات، والمعلمات الإضافية لعملية الضبط الدقيق. انتبه أيضًا إلى أن هذا الرمز هو تمثيل مفاهيمي، وقد يختلف بناء الجملة الفعلي اعتمادًا على المكتبة والإصدارات المستخدمة.

الابتكارات المعمارية لإنشاء نص فعال

تم تصميم بنية المحولات، على الرغم من فعاليتها العالية في مهام نمذجة اللغة، كنموذج تسلسل إلى تسلسل للأغراض العامة. عند نشر LLMs لمهام إنشاء النص ذات سياقات الإدخال الطويلة، وجد الباحثون أن البنى الأكثر تخصصًا يمكنها تحسين كفاءة الاستدلال بشكل كبير دون التضحية بالجودة.

فيما يلي بعض الابتكارات المعمارية الرئيسية التي تتيح استنتاجًا أسرع لماجستير في القانون:

عذر: تفصل بنية Alibi، التي تم تقديمها في ورقة تعليمات PAL، بين نمذجة سياق الإدخال الطويل وبين عملية إنشاء النص نفسها. ويستخدم تمثيلاً مضغوطًا لسياق الإدخال ("العذر") لتهيئة عملية التوليد، وتجنب الحاجة إلى معالجة تسلسل الإدخال الكامل بشكل متكرر أثناء التوليد التلقائي.

التضمينات الدوارة: بدلاً من استخدام التضمين الموضعي القياسي، تستخدم تقنية التضمين الدوار مصفوفات الدوران لتشفير المعلومات الموضعية بشكل أكثر كفاءة. لقد ثبت أن هذا النهج يعمل على تحسين الأداء وتمكين معالجة تسلسلات الإدخال الأطول.

الاهتمام بالاستعلام المتعدد (MQA): في الاهتمام التقليدي، يعتني كل رمز مميز للإخراج بتسلسل الإدخال بأكمله، مما يؤدي إلى عمليات حسابية زائدة عن الحاجة. MQA يعيد صياغة عملية الانتباه لمشاركة العمليات الحسابية عبر رموز المخرجات المتعددة، مما يقلل من التعقيد العام.

الاهتمام بالاستعلام المتعدد

الاهتمام بالاستعلام المتعدد

الاهتمام بالاستعلام المجمع (GQA): بناءً على MQA، تقوم GQA بتجميع الرموز المميزة في مجموعات وتحسب الاهتمام بشكل مشترك لكل مجموعة. يقلل هذا الأسلوب من المتطلبات الحسابية مع الحفاظ على إنشاء نص عالي الجودة.

بينما لا تزال هذه الابتكارات المعمارية قيد البحث والتطوير النشط، فقد أظهرت تسريعًا مذهلاً لمهام الاستدلال في LLM، خاصة عند دمجها مع تقنيات مثل Flash Attention وتحسين الدقة العددية.

اعتبارات النشر في العالم الحقيقي

بعيدًا عن الخوارزميات والبنيات الأساسية، هناك العديد من الاعتبارات العملية والمقايضات التي يجب التنقل فيها عند نشر LLMs في بيئات الإنتاج:

تسريع الأجهزة: في حين أن وحدات المعالجة المركزية يمكنها التعامل مع استدلال LLM، فإن وحدات معالجة الرسومات والمسرعات الأخرى مثل وحدات TPU من Google ضرورية لتحقيق إنتاجية عالية وزمن وصول منخفض. يعد اختيار الأجهزة المناسبة وتحسين استخدام الذاكرة أمرًا بالغ الأهمية.

الخلط والتوازي: للاستفادة الكاملة من توازي الأجهزة، يمكن لاستراتيجيات مثل الاستدلال المجمع (معالجة مدخلات متعددة في وقت واحد) وتوازي النماذج (توزيع LLM عبر أجهزة متعددة) أن تعزز الإنتاجية بشكل كبير.

التكميم مقابل الجودة المقايضة: ستؤثر درجة التكميم (8 بت، 4 بت، وما إلى ذلك) بشكل مباشر على سرعة الاستدلال واستخدام الذاكرة، ولكنها تؤثر أيضًا على جودة الإخراج. ويجب تقييم هذه المقايضة بعناية لكل حالة استخدام.

تقطير نموذجي: كبديل للتكميم، يمكن لتقنيات التقطير النموذجية ضغط ماجستير إدارة الأعمال الكبيرة إلى نماذج طلابية أصغر وأكثر كفاءة مع الحفاظ على الدقة العالية.

التخزين المؤقت وأوقات التشغيل الأمثل: يمكن أن توفر أوقات تشغيل التعلم العميق المحسنة مثل TensorRT من NVIDIA والأطر المصممة لخدمة LLM (على سبيل المثال، MosaicML's Composable Inference Suite) تعزيزات كبيرة في الأداء من خلال تقنيات مثل دمج المشغلين وتحسين النواة واستراتيجيات التخزين المؤقت الذكية.

غالبًا ما يتضمن المسار إلى النشر الأمثل لـ LLM الجمع بين تقنيات متعددة مع مراعاة المتطلبات المحددة لتطبيقك وقيود البنية التحتية وأهداف الأداء بعناية.

وفي الختام

مع استمرار نماذج اللغات الكبيرة في تطورها السريع، أصبح تسريع أداء الاستدلال الخاص بها أمرًا بالغ الأهمية بشكل متزايد لتمكين تطبيقات العالم الحقيقي وإضفاء الطابع الديمقراطي على الوصول إلى قدرات الذكاء الاصطناعي القوية هذه.

في هذا الدليل الفني، استكشفنا التقنيات المتطورة التي تشمل تحسين الدقة العددية، وخوارزميات الانتباه الجديدة مثل Flash Attention، والابتكارات المعمارية المصممة لإنشاء نص فعال. في حين أن كل نهج يقدم مزاياه الخاصة، فإن القوة الحقيقية غالبًا ما تكمن في الجمع بين استراتيجيات متعددة أثناء التنقل في المفاضلات المعقدة بين السرعة واستخدام الذاكرة وجودة الإخراج.

وبالنظر إلى المستقبل، يمكننا أن نتوقع استمرار البحث والتطوير في هذا المجال، يغذيه الطلب النهم على ماجستير إدارة الأعمال الأكثر قدرة وسهولة في الوصول إليه. بدءًا من تسريع الأجهزة وضغط النماذج وحتى البنى الجديدة تمامًا، يظل السعي للحصول على استنتاج LLM فعال يمثل حدودًا مثيرة في عالم معالجة اللغة الطبيعية والذكاء الاصطناعي.

لقد أمضيت السنوات الخمس الماضية منغمسًا في عالم رائع من التعلم الآلي والتعلم العميق. قادني شغفي وخبرتي إلى المساهمة في أكثر من 50 مشروعًا متنوعًا لهندسة البرمجيات ، مع التركيز بشكل خاص على الذكاء الاصطناعي / التعلم الآلي. جذبني فضولي المستمر أيضًا نحو معالجة اللغة الطبيعية ، وهو مجال أتوق لاستكشافه بشكل أكبر.