Connect with us

تحسين نشر النماذج اللغوية الكبيرة: vLLM PagedAttention ومستقبل الخدمة الكفؤة للذكاء الاصطناعي

الذكاء الاصطناعي

تحسين نشر النماذج اللغوية الكبيرة: vLLM PagedAttention ومستقبل الخدمة الكفؤة للذكاء الاصطناعي

mm
Deploy the vLLM Inference Engine to Run Large Language Models

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

تحديات خدمة النماذج اللغوية الكبيرة

قبل الغوص في الحلول المحددة، دعونا نبحث في التحديات الرئيسية التي تجعل خدمة LLM مهمة معقدة:

الموارد الحاسوبية

تتميز النماذج اللغوية الكبيرة بوجود عدد هائل من المعاملات، تتراوح من مليارات إلى مئات مليارات المعاملات. على سبيل المثال، يحتوي GPT-3 على 175 مليار معامل، في حين أن النماذج الأحدث مثل GPT-4 يُقدر أن يكون لها عدد أكبر من المعاملات. يترجم هذا الحجم الهائل إلى متطلبات حسابية كبيرة للاستدلال.
أمثلة:
افترض نموذج LLM متواضع مع 13 مليار معامل، مثل LLaMA-13B. حتى هذا النموذج يتطلب:
– ما يقرب من 26 جيجابايت من الذاكرة فقط لتخزين معاملات النموذج (افتراض دقة 16 بت)
– ذاكرة إضافية للتنشيط وآليات الانتباه والعمليات الحسابية المتوسطة
– قدرة حسابية كبيرة للاستدلال في الوقت الفعلي

التأخير

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

التكلفة

يمكن أن تكون الأجهزة المطلوبة لتشغيل النماذج اللغوية الكبيرة بمقاييس كبيرة باهظة الثمن. غالبًا ما تكون بطاقات الرسومات أو وحدات المعالجة التензورية عالية النهاية ضرورية، وتكون استهلاك الطاقة لهذه الأنظمة كبيرًا.
أمثلة:
تشغيل مجموعة من بطاقات الرسومات A100 من NVIDIA (غالبًا ما يتم استخدامها لاستدلال LLM) يمكن أن يكلف آلاف الدولارات في اليوم من رسوم الحوسبة السحابية.

المنهجيات التقليدية لخدمة LLM

قبل استكشاف الحلول المتقدمة، دعونا نلقي نظرة سريعة على بعض المنهجيات التقليدية لخدمة النماذج اللغوية الكبيرة:

التحديث البسيط باستخدام تحويلات Hugging Face

توفر مكتبة تحويلات Hugging Face طريقة مباشرة لنشر النماذج اللغوية الكبيرة، ولكنها ليست مُحسنة لخدمة الإنتاجية العالية.
أمثلة على الشفرة:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "meta-llama/Llama-2-13b-hf"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)

def generate_text(prompt, max_length=100):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_length=max_length)
return tokenizer.decode(outputs[0], skip_special_tokens=True)

print(generate_text("مستقبل الذكاء الاصطناعي هو"))

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

استخدام TorchServe أو إطارات مشابهة

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

فهم إدارة الذاكرة في خدمة LLM

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

الذاكرة المقسّمة مقابل الذاكرة المُصفّفة

تُقارن هذه الشريحتان بين تقنيات إدارة الذاكرة المقسّمة والذاكرة المُصفّفة، التي يتم استخدامها بشكل شائع في أنظمة التشغيل (OS).

  • الذاكرة المقسّمة: تقسم هذه التقنية الذاكرة إلى مقاطع مختلفة، كل منها يتوافق مع برنامج أو عملية مختلفة. على سبيل المثال، في سياق خدمة LLM، قد يتم تخصيص مقاطع مختلفة لمكونات النموذج المختلفة، مثل التokenization وترميز التضمين وآليات الانتباه. يمكن أن تنمو أو تقلل كل مقطع بشكل مستقل، مما يوفر مرونة ولكن قد يؤدي إلى تفتيت إذا لم يتم إدارة المقاطع بشكل صحيح.
  • الذاكرة المُصفّفة: هنا، يتم تقسيم الذاكرة إلى صفحات ثابتة الحجم، والتي يتم ánhارها إلى الذاكرة الفيزيائية. يمكن تبادل الصفحات عند الحاجة، مما يسمح بالاستخدام الفعال للموارد الذاكرة. في خدمة LLM، يمكن أن يكون هذا حاسمًا لإدارة الكميات الكبيرة من الذاكرة المطلوبة لتخزين أوزان النموذج والعمليات الحسابية المتوسطة.

إدارة الذاكرة في نظام التشغيل مقابل vLLM

تُظهر هذه الصورة التباين بين إدارة الذاكرة التقليدية في نظام التشغيل وإدارة الذاكرة المستخدمة في vLLM.

  • إدارة الذاكرة في نظام التشغيل: في الأنظمة التقليدية، يتم تخصيص صفحات الذاكرة (صفحة 0، صفحة 1، إلخ) للعمليات (مثل عملية A وعميلة B) في الذاكرة الفيزيائية. يمكن أن يؤدي هذا التخصيص إلى تفتيت مع مرور الوقت مع طلبات وإصدارات الذاكرة.
  • إدارة الذاكرة في vLLM: يستخدم إطار vLLM ذاكرة التخزين المؤقت Key-Value (KV) لإدارة الذاكرة بشكل أكثر كفاءة. يتم تخصيص الطلبات (مثل الطلب A والطلب B) كتلة من ذاكرة التخزين المؤقت Key-Value (KV Block 0، KV Block 1، إلخ). يساعد هذا النهج في تقليل التفتيت ويوفر استخدام الذاكرة، مما يسمح بخدمة النموذج بشكل أسرع وأكثر كفاءة.

آلية الانتباه في LLM

آلية الانتباه في LLM

آلية الانتباه في LLM


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