ما هو vLLM؟ كيفية تثبيت واستخدام vLLM، الشرح

@apidog

@apidog

14 أبريل 2025

ما هو vLLM؟ كيفية تثبيت واستخدام vLLM، الشرح

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

ما هو vLLM بالضبط؟

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

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

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

لماذا تختار vLLM لاستدلال LLM؟

هناك عدة أسباب مقنعة تجعل vLLM خيارًا مفضلًا للمطورين والمنظمات التي تعمل مع LLMs:

  1. أداء رائد في هذا المجال: يوفر vLLM إنتاجية أعلى بكثير مقارنة بالعديد من تنفيذات الأساس. وهذا يعني أنه يمكنك التعامل مع المزيد من طلبات المستخدمين في وقت واحد أو معالجة مجموعات بيانات كبيرة بشكل أسرع بنفس الأجهزة.
  2. إدارة الذاكرة بكفاءة: يعمل الابتكار الرئيسي، PagedAttention، على تقليل الفاقد من الذاكرة بشكل كبير من خلال إدارة ذاكرة KV بشكل أكثر فعالية. وهذا يسمح لك بتناسب نماذج أكبر على وحدات معالجة الرسومات الخاصة بك أو خدمة النماذج الحالية مع وجود حمل ذاكرة أقل، مما قد يقلل من تكاليف الأجهزة.
  3. التجميع المستمر: على عكس التجميع الثابت (حيث ينتظر الخادم مجموعة كاملة قبل المعالجة)، يستخدم vLLM التجميع المستمر. يعالج الطلبات ديناميكيًا عند وصولها، مما يحسن بشكل كبير استغلال وحدة معالجة الرسومات ويقلل من الكمون للطلبات الفردية.
  4. خادم متوافق مع OpenAI: يشمل vLLM خادمًا مدمجًا يحاكي واجهة برمجة التطبيقات OpenAI. وهذا يجعل من السهل جدًا استخدام vLLM كبديل مباشر للتطبيقات التي تم بناؤها بالفعل باستخدام عميل OpenAI Python أو الأدوات المتوافقة. يمكنك غالبًا تغيير عنوان URL الخاص بنقطة النهاية ومفتاح واجهة برمجة التطبيقات، وسينجح الكود الحالي الخاص بك مع مثيل vLLM المستضاف ذاتيًا.
  5. سهولة الاستخدام: على الرغم من تعقيداته الداخلية، يوفر vLLM واجهة برمجة تطبيقات بسيطة نسبيًا لكل من الاستدلال في وضع عدم الاتصال (LLM class) وخدمة الإنترنت (vllm serve command).
  6. توافق واسع مع النماذج: يدعم vLLM مجموعة واسعة من نماذج LLM مفتوحة المصدر الشهيرة المتاحة على Hugging Face Hub (وربما ModelScope).
  7. تطوير نشط ومجتمع: يعد vLLM مشروعًا مفتوح المصدر يتم صيانته بنشاط مع مجتمع متنامٍ، مما يضمن تحسينات مستمرة، وإصلاحات للأخطاء، ويدعم نماذج وميزات جديدة.
  8. نوى محسنة: يستخدم vLLM نوى CUDA المحسنة للغاية لمجموعة متنوعة من العمليات، مما يعزز الأداء على وحدات معالجة الرسومات NVIDIA.

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

ما النماذج التي يدعمها vLLM؟

يدعم vLLM مجموعة واسعة من النماذج المعتمدة على المحولات والتي تستضيفها Hugging Face Hub. يشمل ذلك العديد من المتغيرات:

القائمة تنمو باستمرار. للحصول على أحدث وأكمل قائمة للنماذج المدعومة رسميًا، يرجى دائمًا الرجوع إلى الوثائق الرسمية لـ vLLM:

قائمة النماذج المدعومة في vLLM

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

بعض المصطلحات الرئيسية في vLLM:

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

تعمل هاتان التقنيتان معًا بشكل متكامل لتوفير خصائص الأداء المذهلة لـ vLLM.

قبل البدء باستخدام vLLM، عليك التحقق من:

قبل أن تتمكن من تثبيت وتشغيل vLLM، تأكد من أن نظامك يلبي المتطلبات التالية:

  1. نظام التشغيل: Linux هو نظام التشغيل المدعوم الرئيسي. رغم أنه قد توجد جهود مجتمعية لأنظمة التشغيل الأخرى (مثل WSL2 على Windows أو macOS)، إلا أن Linux يوفر التجربة الأكثر بساطة ودعماً رسمياً.
  2. إصدار Python: يتطلب vLLM Python 3.9 أو 3.10 أو 3.11 أو 3.12. يوصى بشدة باستخدام بيئة افتراضية لإدارة تبعيات Python الخاصة بك.
  3. وحدة معالجة الرسومات NVIDIA مع CUDA: للحصول على أداء مثالي والوصول إلى الميزات الأساسية، تحتاج إلى وحدة معالجة الرسومات NVIDIA مع قدرة حسابية مدعومة بواسطة PyTorch ووجود مجموعة أدوات CUDA اللازمة مثبتة. يعتمد vLLM بشكل كبير على CUDA لنقاطه المحسنة. بينما تتوفر الاستدلال بالمعالج المركزي فقط ودعم لمسرعات أخرى (مثل وحدات معالجة الرسومات AMD أو AWS Inferentia/Trainium) أو قيد التطوير، فإن المسار الرئيسي يتضمن الأجهزة من NVIDIA. تحقق من الموقع الرسمي لـ PyTorch للتأكد من توافق CUDA مع إصدار برنامج تشغيل GPU المحدد لديك.
  4. PyTorch: تم بناء vLLM على PyTorch. عادةً ما تتولى عملية التثبيت تثبيت إصدار متوافق، ولكن تأكد من أن لديك تثبيتًا عمليًا لجهاز PyTorch متوافق مع إصدار CUDA الخاص بك إذا واجهت أي مشكلات.

دليل خطوة بخطوة لتثبيت vLLM

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

استخدام pip مع vLLM

pip هو المثبت القياسي لحزم Python.

إنشاء وتفعيل بيئة افتراضية (موصى بها):

python -m venv vllm-env
source vllm-env/bin/activate
# على Windows استخدم: vllm-env\\\\Scripts\\\\activate

تثبيت vLLM:

pip install vllm

سيعمل هذا الأمر على تنزيل وتثبيت الإصدار الثابت الأحدث من vLLM وتبعيّاته الأساسية، بما في ذلك إصدار متوافق من PyTorch لإعداد CUDA الذي تم اكتشافه لديك (إذا كان ذلك ممكنًا).

استخدام Conda مع vLLM

Conda هو مدير بيئة وحزم شهير آخر، خاصة في مجتمع علوم البيانات.

إنشاء وتفعيل بيئة Conda:

conda create -n vllm-env python=3.11 -y # أو استخدم 3.9، 3.10، 3.12
conda activate vllm-env

تثبيت vLLM باستخدام pip داخل Conda: يُوصى عمومًا باستخدام pip لتثبيت vLLM حتى داخل بيئة Conda لضمان الحصول على أحدث إصدار متوافق بسهولة.

pip install vllm

قد تحتاج إلى تثبيت PyTorch بشكل منفصل عبر Conda أولاً إذا كنت تفضل إدارة ذلك بهذه الطريقة، مما يضمن التوافق: conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia (عدل إصدار CUDA حسب الحاجة). ثم قم بتشغيل pip install vllm.

استخدام uv مع vLLM

uv هو مثبت حزم بايثون جديد وسريع للغاية.

تثبيت uv (إذا لم يكن مثبتًا بالفعل): اتبع التعليمات في الوثائق الرسمية لـ uv.

إنشاء وتفعيل بيئة باستخدام uv:

uv venv vllm-env --python 3.12 --seed # أو استخدم 3.9، 3.10، 3.11
source vllm-env/bin/activate
# على Windows استخدم: vllm-env\\\\Scripts\\\\activate

تثبيت vLLM باستخدام uv:

uv pip install vllm

التحقق من تثبيت vLLM الخاص بك

بعد التثبيت، يمكنك التحقق منه بسرعة من خلال محاولة استيراد vLLM في مترجم بايثون أو تشغيل أمر أساسي:

# قم بتنشيط بيئتك الافتراضية أولاً (مثل source vllm-env/bin/activate)
python -c "import vllm; print(vllm.__version__)"

يجب أن يطبع ذلك إصدار vLLM المثبت دون أخطاء.

بدلاً من ذلك، حاول أمر المساعدة للخادم (يتطلب التثبيت الناجح):

vllm --help

أداء الاستدلال المجمّع في وضع عدم الاتصال باستخدام vLLM

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

فهم فئة LLM في vLLM

فئة vllm.LLM هي نقطة الدخول الرئيسية للاستدلال في وضع عدم الاتصال. يمكنك تهيئتها من خلال تحديد النموذج الذي تريد استخدامه.

from vllm import LLM

# قم بتهيئة محرك LLM باستخدام نموذج من Hugging Face Hub
# تأكد من أن لديك ذاكرة GPU كافية للنموذج المختار!
# مثال: استخدام نموذج أصغر مثل OPT-125m
llm = LLM(model="facebook/opt-125m")

# مثال: استخدام نموذج أكبر مثل Llama-3-8B-Instruct (يتطلب ذاكرة GPU كبيرة)
# llm = LLM(model="meta-llama/Meta-Llama-3-8B-Instruct")

print("تم تهيئة محرك vLLM.")

بشكل افتراضي، يقوم vLLM بتنزيل النماذج من Hugging Face Hub. إذا كان نموذجك مستضافًا على ModelScope، تحتاج إلى ضبط متغير بيئة VLLM_USE_MODELSCOPE=1 قبل تشغيل سكربت بايثون الخاص بك.

تهيئة معلمات أخذ العينات في vLLM

للتحكم في كيفية إنشاء النص، يمكنك استخدام فئة vllm.SamplingParams. يتيح لك ذلك ضبط معلمات مثل:

from vllm import SamplingParams

# تعريف معلمات أخذ العينات
# إذا لم يتم تحديدها، فقد يستخدم vLLM الافتراضية من ملف generation_config.json الخاص بالنموذج
sampling_params = SamplingParams(
    temperature=0.7,
    top_p=0.9,
    max_tokens=100, # تحديد طول النص الناتج
    stop=["\\\\n", " الإنسان:", " المساعد:"] # توقف عن الإنشاء إذا ظهرت هذه الرموز
)

print("تم تكوين معلمات أخذ العينات.")

ملاحظة مهمة: بشكل افتراضي، يحاول vLLM تحميل واستخدام الإعدادات من ملف generation_config.json المرتبط بالنموذج على Hugging Face Hub. إذا كنت ترغب في تجاهل ذلك واستخدام معلمات أخذ العينات الافتراضية في vLLM ما لم يتم تجاوزها بواسطة كائن SamplingParams الخاص بك، قم بتهيئة فئة LLM مثل هذا: llm = LLM(model="...", generation_config="vllm"). إذا قدمت كائن SamplingParams لطريقة generate، فإن تلك المعلمات ستأخذ دائمًا الأولوية على تكوين النموذج وافتراضات vLLM.

تشغيل أول وظيفة vLLM المجمعة لك

الآن، دعنا نجمع كائن LLM، وSamplingParams، وقائمة من المطالبات لإنشاء النص.

from vllm import LLM, SamplingParams

# 1. تحديد مطالبات الإدخال الخاصة بك
prompts = [
    "عاصمة فرنسا هي",
    "اشرح نظرية النسبية بمصطلحات بسيطة:",
    "اكتب قصيدة قصيرة عن يوم ممطر:",
    "ترجم 'مرحبًا، عالم!' إلى الألمانية:",
]

# 2. تهيئة معلمات أخذ العينات
sampling_params = SamplingParams(temperature=0.7, top_p=0.95, max_tokens=150)

# 3. تهيئة محرك vLLM (استخدم نموذج مناسب للأجهزة الخاصة بك)
try:
    # استخدام نموذج صغير وقابل
    llm = LLM(model="mistralai/Mistral-7B-Instruct-v0.1")
    # أو للأجهزة الصغيرة:
    # llm = LLM(model="facebook/opt-1.3b")
    # llm = LLM(model="facebook/opt-125m")
except Exception as e:
    print(f"خطأ أثناء تهيئة LLM: {e}")
    print("يرجى التأكد من أن لديك ذاكرة GPU كافية وأن CUDA مهيأة بشكل صحيح.")
    exit()

# 4. إنشاء نص للمطالبات
# تأخذ طريقة generate قائمة من المطالبات ومعلمات أخذ العينات
print("إنشاء استجابات...")
outputs = llm.generate(prompts, sampling_params)
print("اكتمل الإنشاء.")

# 5. طباعة النتائج
# الإخراج هو قائمة من كائنات RequestOutput
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text # الحصول على النص من أول تسلسل منشأ
    print("-" * 20)
    print(f"المطالبة: {prompt!r}")
    print(f"النص الناتج: {generated_text!r}")
    print("-" * 20)

هذا السكربت يهيئ vLLM، ويحدد المطالبات والمعلمات، ويجري عملية الإنشاء بكفاءة في مجموعة، ثم يطبع الإخراج لكل مطالة. يقوم استدعاء llm.generate() بإدارة تعقيدات التجميع والتنفيذ على GPU داخليًا.

إعداد خادم vLLM المتوافق مع OpenAI

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

بدء خادم vLLM

بدء الخادم بسيط باستخدام أمر vllm serve في الطرفية لديك.

قم بتفعيل بيئتك الافتراضية حيث تم تثبيت vLLM.

source vllm-env/bin/activate

قم بتشغيل أمر vllm serve: تحتاج إلى تحديد النموذج الذي تريد خدمته.

# مثال باستخدام Mistral-7B-Instruct
vllm serve mistralai/Mistral-7B-Instruct-v0.1

# مثال باستخدام نموذج أصغر مثل Qwen2-1.5B-Instruct
# vllm serve Qwen/Qwen2-1.5B-Instruct

سيعمل هذا الأمر على:

خيارات شائعة:

سيقوم الخادم بإخراج سجلات تشير إلى أنه يعمل وجاهز لاستقبال الطلبات.

التفاعل مع خادم vLLM: واجهة برمجة التطبيقات للاستكمالات

بمجرد تشغيل الخادم، يمكنك إرسال الطلبات إلى نقطة النهاية /v1/completions الخاصة به، تمامًا كما تفعل مع واجهة برمجة التطبيقات للاستكمالات الأقدم من OpenAI.

باستخدام curl:

curl <http://localhost:8000/v1/completions> \\\\
    -H "Content-Type: application/json" \\\\
    -d '{
        "model": "mistralai/Mistral-7B-Instruct-v0.1",
        "prompt": "سان فرانسيسكو هي مدينة في",
        "max_tokens": 50,
        "temperature": 0.7
    }'

(استبدل "mistralai/Mistral-7B-Instruct-v0.1" بالنموذج الفعلي الذي تقوم بخدمته)

باستخدام مكتبة openai بايثون:

from openai import OpenAI

# وجه العميل إلى نقطة نهاية خادم vLLM الخاصة بك
client = OpenAI(
    api_key="EMPTY", # استخدم "EMPTY" أو مفتاحك الفعلي إذا قمت بتعيين واحد مع --api-key
    base_url="<http://localhost:8000/v1>"
)

print("إرسال طلب إلى خادم vLLM (استكمالات)...")

try:
    completion = client.completions.create(
        model="mistralai/Mistral-7B-Instruct-v0.1", # يجب أن يتطابق اسم النموذج مع ما يتم خدمته
        prompt="اشرح فوائد استخدام vLLM:",
        max_tokens=150,
        temperature=0.5
    )

    print("الاستجابة:")
    print(completion.choices[0].text)

except Exception as e:
    print(f"حدث خطأ: {e}")

(تذكر استبدال اسم النموذج إذا كنت تخدم نموذجًا مختلفًا)

التفاعل مع خادم vLLM: واجهة برمجة التطبيقات لاستكمالات الدردشة

يدعم vLLM أيضًا نقطة النهاية الأكثر حداثة /v1/chat/completions، المناسبة للنماذج المحادثة وهيكل الرسائل المنسقة (دور النظام، المستخدم، المساعد).

باستخدام curl:

curl <http://localhost:8000/v1/chat/completions> \\\\
    -H "Content-Type: application/json" \\\\
    -d '{
        "model": "mistralai/Mistral-7B-Instruct-v0.1",
        "messages": [
            {"role": "system", "content": "أنت مساعد مفيد."},
            {"role": "user", "content": "ما هي الميزة الرئيسية لـ PagedAttention في vLLM؟"}
        ],
        "max_tokens": 100,
        "temperature": 0.7
    }'

(استبدل اسم النموذج حسب الحاجة)

باستخدام مكتبة openai بايثون:

from openai import OpenAI

# وجه العميل إلى نقطة نهاية خادم vLLM الخاصة بك
client = OpenAI(
    api_key="EMPTY", # استخدم "EMPTY" أو مفتاحك الفعلي
    base_url="<http://localhost:8000/v1>"
)

print("إرسال طلب إلى خادم vLLM (استكمالات الدردشة)...")

try:
    chat_response = client.chat.completions.create(
        model="mistralai/Mistral-7B-Instruct-v0.1", # يجب أن يتطابق اسم النموذج مع ما يتم خدمته
        messages=[
            {"role": "system", "content": "أنت مساعد برمجي مفيد."},
            {"role": "user", "content": "اكتب دالة بايثون بسيطة لحساب العوامل."}
        ],
        max_tokens=200,
        temperature=0.5
    )

    print("الاستجابة:")
    print(chat_response.choices[0].message.content)

except Exception as e:
    print(f"حدث خطأ: {e}")

(تذكر استبدال اسم النموذج إذا لزم الأمر)

يعد استخدام الخادم المتوافق مع OpenAI طريقة قوية لنشر نقاط الاستدلال عالية الأداء لـ LLM مع تغييرات ضئيلة في منطق تطبيقك الحالي.

دعنا نتحدث عن خلفيات الانتباه في vLLM

يستخدم vLLM "خلفيات" متخصصة لحساب آلية الانتباه بكفاءة. تمثل هذه الخلفيات تنفيذات محسنة تعتمد على مكتبات أو تقنيات مختلفة، تستهدف بشكل أساسي وحدات معالجة الرسومات NVIDIA. يمكن أن تؤثر الاختيارات بين الخلفيات على الأداء واستخدام الذاكرة. تشمل الخلفيات الرئيسية:

  1. FlashAttention: يستخدم مكتبة FlashAttention (الإصدارات 1 و 2). FlashAttention هو خوارزمية انتباه محسنة للغاية تسرع بشكل كبير الحساب وتقلل من استخدام الذاكرة من خلال تجنب الحاجة إلى تشكيل مصفوفة الانتباه الكبيرة الوسيطة في ذاكرة وحدة معالجة الرسومات عالية النطاق الترددي (HBM). غالبًا ما تكون الخيار الأسرع لكثير من وحدات معالجة الرسومات الحديثة (مثل معماريات Ampere، Hopper) وأطوال التسلسل. يتضمن vLLM عادةً عجلات مسبقة البناء مع دعم FlashAttention.
  2. Xformers: يستفيد من مكتبة xFormers، التي طورتها Meta AI. يوفر xFormers أيضًا تنفيذات انتباه محسنة وفعالة من حيث الذاكرة (مثل MemoryEfficientAttention). تقدم توافقًا واسعًا عبر مختلف معماريات وحدات معالجة الرسومات ويمكن أن تكون بديلاً جيدًا أو وسيلة للتراجع إذا لم يكن FlashAttention متاحًا أو جذابًا لسيناريو محدد. في الغالب تشمل التثبيتات القياسية لـ vLLM دعم لـ xFormers.
  3. FlashInfer: خيار جديد أكثر حداثة يستخدم مكتبة FlashInfer. يوفر FlashInfer نوى محسنة بشكل كبير مصممة خصيصًا لنشر LLMs، مع التركيز على سيناريوهات الملء المسبق وفك التشفير، بما في ذلك ميزات مثل فك التشفير الاستباقي والتعامل الفعال مع ذاكرات KV المصفحة. عادةً لا تحتوي عجلات vLLM المسبقة البناء على FlashInfer، مما يعني أنك يجب أن تثبته بشكل منفصل في بيئتك قبل أن يتمكن vLLM من استخدامه. راجع الوثائق الرسمية لـ FlashInfer أو ملفات Docker الخاصة بـ vLLM للحصول على تعليمات التثبيت إذا كنت تنوي استخدام هذه الخلفية.

اختيار الخلفية التلقائي: بشكل افتراضي، يكتشف vLLM تلقائيًا أكثر الخلفيات فعالية وملاءمة للاستخدام بناءً على معداتك (معمارية GPU)، والمكتبات المثبتة (هل FlashAttention/xFormers/FlashInfer متاحة؟)، والنموذج المحدد قيد الاستخدام. يقوم بإجراء فحوصات لضمان التوافق ويهدف إلى توفير أفضل أداء جاهز للاستخدام بدون تكوين يدوي.

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

# مثال: فرض استخدام FlashAttention (إذا تم تثبيته ومتوافق) export VLLM_ATTENTION_BACKEND=FLASH_ATTN python your_offline_script.py # أو # export VLLM_ATTENTION_BACKEND=FLASH_ATTN # vllm serve your_model ... # مثال: فرض استخدام xFormers export VLLM_ATTENTION_BACKEND=XFORMERS python your_offline_script.py # مثال: فرض استخدام FlashInfer (يتطلب تثبيتًا مسبقًا) export VLLM_ATTENTION_BACKEND=FLASHINFER python your_offline_script.py

ينصح معظم المبتدئين بالاعتماد على اختيار vLLM التلقائي للخلفية. يرتبط ضبط الخلفية يدويًا عادةً بالتجريب أو حل مشكلات الأداء المحددة.

تحري مشاكل التثبيت والاستخدام الشائعة في vLLM

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

  1. أخطاء نفاد الذاكرة من CUDA (OOM):
  1. أخطاء التثبيت (توافق CUDA/PyTorch):
  1. فشل تحميل النموذج:
  1. أداء بطيء:
  1. الإخراج غير صحيح أو غير مفهوم:

من المفيد استشارة

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات