AI

تحسين نماذج اللغات الكبيرة للأجهزة الطرفية المعتمدة على المعالج فقط: دليل للضغط وتقليد المعرفة

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

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

الحالة لصالح الضغط على المعالج

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

محركات الاستدلال الحديثة مثل ONNX Runtime و llama.cpp لديها نوى محسنة لاستدلال INT8/INT4. من خلال تقليل نوع البيانات، فإنك تقلل من استخدام النطاق الترددي بين ذاكرة التخزين المؤقت للمعالج والنوى، مما يسمح بزيادة كبيرة في الإنتاجية لكل واط.

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

قد لا يكون الضغط وحده كافياً إذا كان النموذج الأصلي كبيراً جداً أو بطيئاً. يسمح تقليد المعرفة بتدريب نموذج "طالب" أصغر لمحاكاة سلوك نموذج "معلم" أكبر. يتعلم الطالب ليس فقط من التسميات الصلبة (الإجابة الصحيحة) ولكن من "المعرفة المظلمة" الموجودة في احتمالات سوفتماكس الخاصة بالمعلم.

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

تنفيذ خط الأنابيب

لننظر في سير عمل عملي باستخدام مكتبة Hugging Face `transformers`. سنقوم بعرض إعداد بسيط لتقليد المعرفة متبوعاً بملاحظة حول تنفيذ الضغط.

الخطوة 1: إعداد حلقة التقليد


from transformers import AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments
import torch

# تحميل نموذج معلم كبير
teacher_model = AutoModelForCausalLM.from_pretrained("facebook/opt-1.3b")
teacher_model.eval()

# تحميل نموذج طالب أصغر
student_model = AutoModelForCausalLM.from_pretrained("facebook/opt-125m")
tokenizer = AutoTokenizer.from_pretrained("facebook/opt-125m")

# تحديد دالة خسارة بسيطة للتقليد
def distillation_loss(student_logits, teacher_logits, temperature=2.0):
    teacher_probs = torch.softmax(teacher_logits / temperature, dim=-1)
    student_probs = torch.log_softmax(student_logits / temperature, dim=-1)
    return torch.nn.functional.kl_div(student_probs, teacher_probs, reduction='batchmean') * (temperature ** 2)

# أثناء التدريب، قم بتجميد المعلم وتحديث الطالب
# ملاحظة: في الممارسة العملية، استخدم وحدة 'distillation' الخاصة بـ HuggingFace للسهولة

الخطوة 2: الضغط بعد التدريب

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


import onnxruntime as ort
from onnxruntime.quantization import quantize_dynamic, QuantType

# ضغط نموذج ONNX المستخلص
quantize_dynamic(
    "model.onnx", 
    "model_quantized.onnx", 
    weight_type=QuantType.QUInt8
)

# تحميل وتشغيل الاستدلال
session = ort.InferenceSession("model_quantized.onnx")

الخاتمة

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

Share: