با گسترش استفاده از مدلهای زبانی در اپلیکیشنهای تجاری، نیاز به یک سرور API پرسرعت و مقیاسپذیر احساس میشود. در این راهنمای تخصصی بررسی میکنیم که vLLM چیست، الگوریتم انقلابی PagedAttention چگونه کار میکند و چطور میتوان یک سرور استنتاج فوقسریع سازگار با پایتون و OpenAI راهاندازی کرد.
فهرست مطالب
vLLM چیست و چه مشکلی را حل میکند؟
فریمورک vLLM یک کتابخانه متنباز پایتونی با هسته پرسرعت C++ و CUDA است که به طور اختصاصی برای سرویسدهی مدلهای هوش مصنوعی با توان عملیاتی بسیار بالا (High Throughput) طراحی شده است. فریمورکهای سنتی هنگام میزبانی مدلها در مواجهه با چند کاربر همزمان دچار افت شدید سرعت و پر شدن سریع حافظه کارت گرافیک (VRAM Out of Memory) میشدند. vLLM این چالش را با بازطراحی ساختار نگهداری حافظه کانتکست حل کرده است.
انقلاب PagedAttention در مدیریت حافظه KV Cache
الگوریتم PagedAttention با الهام از نحوه مدیریت حافظه در سیستمعاملها (Paging)، حافظه موقت توجه (KV Cache) را به بلوکهای غیرپیوسته تقسیم میکند. این نوآوری باعث میشود:
- اتلاف حافظه گرافیکی ناشی از رزرو فضای اضافی به نزدیک صفر درصد برسد.
- امکان اشتراکگذاری حافظه پرامپتها در درخواستهای موازی با ساختار درختی (Parallel Sampling) فراهم شود.
- سیستم بتواند تا ۲ الی ۴ برابر درخواستهای همزمان بیشتری را بدون اضافه کردن سختافزار مدیریت کند.
بررسی توان عملیاتی و بنچمارک مقایسهای
در بنچمارکهای استاندارد، vLLM در مقایسه با ابزارهایی چون Hugging Face TGI و Ollama، در ترافیکهای سنگین تا ۱۰ الی ۲۴ برابر سرعت پردازش توکن بر ثانیه بالاتری ثبت کرده است. برای مقایسه دقیق این ابزارها، مقاله تخصصی Ollama یا vLLM را بخوانید.
راهاندازی سرور API سازگار با OpenAI در چند دقیقه
با اجرای دستور زیر، سرور vLLM بر روی پورت ۸۰۰۰ بالا آمده و یک اندپوینت استاندارد /v1/chat/completions ارائه میدهد:
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-3.1-8B-Instruct --port 8000 --gpu-memory-utilization 0.90 --max-model-len 8192
نحوه ارسال درخواست با پایتون و SDK رسمی OpenAI
کلاینتهای نرمافزاری میتوانند بدون نیاز به بازنویسی کد، تنها با تغییر base_url به سرور شخصی شما متصل شوند:
from openai import OpenAI
client = OpenAI(
base_url="http://your-server-ip:8000/v1",
api_key="token-not-required-or-custom"
)
response = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct",
messages=[
{"role": "system", "content": "پاسخهای دقیق و تخصصی به زبان فارسی ارائه دهید."},
{"role": "user", "content": "معماری PagedAttention را در دو پاراگراف توضیح بده."}
]
)
print(response.choices[0].message.content)
موازیسازی روی چند کارت گرافیک (Tensor Parallelism)
برای مدلهای سنگین نظیر Llama 70B، با استفاده از پارامتر --tensor-parallel-size میتوانید وزنهای مدل را بین چند کارت گرافیک (مثلاً ۲ یا ۴ کارت L40S یا H100) تقسیم نمایید:
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-3.3-70B-Instruct --tensor-parallel-size 2
زیرساخت ابری سرور GPU اختصاصی در تراست هاست
برای دستیابی به حداکثر توان عملیاتی vLLM، به کارتهای گرافیک کلاس دیتاسنتر با پهنای باند حافظه بالا نیاز دارید. پلنهای سرور GPU تراست هاست با گارانتی منابع و پشتیبانی از درایورهای انویدیا بهترین انتخاب برای شرکتهای فناوری محور است.
سوالات متداول
آیا vLLM از مدلهای کوانتایز شده پشتیبانی میکند؟
بله، vLLM از فرمتهای مدرن نظیر AWQ، GPTQ، SqueezeLLM و FP8 به صورت سختافزاری پشتیبانی میکند که مصرف VRAM را نصف مینمایند. برای جزییات بیشتر، مقاله Quantization چیست را مطالعه کنید.
تفاوت اصلی vLLM با Ollama چیست؟
اولاما برای اجرای سریع محلی روی یک سیستم طراحی شده است، در حالی که vLLM یک موتور صنعتی برای سرویسدهی به هزاران کاربر و کلاینت همزمان با بازدهی تجاری است.