مجله ایرانیکاسرور آموزش سرور، هاست، وردپرس و شبکه پنل کاربری

آموزش نصب vLLM روی سرور GPU؛ ساخت API اختصاصی شبیه OpenAI برای مدل‌های هوش مصنوعی متن‌باز

اگر قصد دارید یک مدل زبانی بزرگ متن‌باز را روی سرور خودتان اجرا کنید و به‌جای وابستگی به APIهای خارجی، یک API اختصاصی و سازگار با OpenAI در اختیار برنامه‌ها، وب‌سایت‌ها و سرویس‌های خود…

✍ Amir Jabbari 📅 5 مهر 1405 ⏱ 8 دقیقه مطالعه 👁 9 بازدید 💬 0 دیدگاه

اگر قصد دارید یک مدل زبانی بزرگ متن‌باز را روی سرور خودتان اجرا کنید و به‌جای وابستگی به APIهای خارجی، یک API اختصاصی و سازگار با OpenAI در اختیار برنامه‌ها، وب‌سایت‌ها و سرویس‌های خود قرار دهید، vLLM یکی از جدی‌ترین گزینه‌های زیرساختی است. vLLM یک موتور Inference متن‌باز است که برای سرو کردن مدل‌های زبانی در مقیاس واقعی طراحی شده و به‌جای تمرکز بر اجرای تک‌کاربره، روی Throughput بالا، مدیریت هم‌زمان درخواست‌ها و استفاده بهینه از حافظه GPU سرمایه‌گذاری کرده است .

معماری کلی به این شکل است که مدل روی سرور شما قرار می‌گیرد، vLLM درخواست‌های ورودی را مدیریت می‌کند و از طریق یک HTTP API پاسخ مدل را برمی‌گرداند. اگر برنامه‌ای از OpenAI SDK استفاده کند، تنها با تغییر base_url می‌تواند به مدل شما متصل شود .

🔹 OpenAI-Compatible Server یکی از قابلیت‌های رسمی vLLM است که Endpointهای Chat، Completions و Embeddings را با همان پروتکل OpenAI ارائه می‌دهد .

🔹 Continuous Batching و PagedAttention دو مکانیزم اصلی vLLM هستند که در بارهای هم‌زمان، اختلاف معناداری با ابزارهای ساده‌تر ایجاد می‌کنند .

vLLM دقیقاً برای چه سناریوهایی ساخته شده است؟

vLLM ابزاری برای اجرای مدل روی لپ‌تاپ شخصی یا آزمایش‌های تک‌نفره نیست. تفاوت اصلی آن زمانی مشخص می‌شود که چند کاربر یا چند سرویس به‌صورت هم‌زمان درخواست ارسال می‌کنند. در بنچمارک‌های مستقل، vLLM در بارهای ۵۰ کاربر هم‌زمان حدود ۶ برابر Throughput بیشتر و p99 بسیار پایین‌تری نسبت به ابزارهای سبک‌تر ارائه داده است .

کاربردهای رایج آن عبارت‌اند از:

🔹 ساخت Chatbot اختصاصی سازمانی

🔹 ارائه API هوش مصنوعی به تیم توسعه یا مشتریان

🔹 اتصال مدل به وب‌سایت یا اپلیکیشن داخلی

🔹 پیاده‌سازی سیستم RAG و AI Agent

🔹 اجرای مدل‌های متن‌باز بدون ارسال داده به سرویس خارجی

پیش‌نیازهای سرور GPU برای نصب vLLM

مستندات فعلی vLLM برای نصب عمومی، Linux و Python 3.10 تا 3.13 را ذکر می‌کنند . تمرکز این آموزش روی NVIDIA CUDA است، چون رایج‌ترین سناریوی استقرار روی سرور GPU محسوب می‌شود.

بخش پیشنهاد
سیستم‌عامل Ubuntu Server 22.04 یا بالاتر
Python 3.10 تا 3.13
GPU NVIDIA با Compute Capability 7.5 یا بالاتر
VRAM حداقل 16GB برای مدل‌های کوچک؛ برای مدل‌های بزرگ‌تر بسیار بیشتر
RAM حداقل 16GB
Storage SSD/NVMe با فضای کافی برای دانلود مدل

مهم‌ترین عامل در انتخاب سرور GPU، حجم VRAM است. به‌عنوان مرجع تقریبی، یک مدل ۷B در دقت FP16 حدود ۱۴GB VRAM نیاز دارد و مدل ۷۰B روی کارت‌های 80GB یا ترکیب چند GPU قابل اجراست .

نصب vLLM؛ از آماده‌سازی سرور تا اجرای اولین مدل

گام اول؛ اتصال و بررسی GPU

با SSH به سرور متصل شوید و بررسی کنید که GPU به‌درستی شناسایی می‌شود:

nvidia-smi

اگر این دستور اجرا نشود، ابتدا باید Driver یا دسترسی GPU را بررسی کنید. بدون حل این مرحله، نصب vLLM بی‌نتیجه خواهد بود.

گام دوم؛ نصب ابزارهای پایه

apt update
apt install -y python3 python3-pip python3-venv git curl wget

گام سوم؛ ساخت محیط مجازی و نصب vLLM

مستندات رسمی استفاده از یک محیط Python تازه را توصیه می‌کنند، چون ناسازگاری بین نسخه‌های CUDA، PyTorch و Binaryهای vLLM می‌تواند مشکلات جدی ایجاد کند .

python3 -m venv ~/vllm-env
source ~/vllm-env/bin/activate
pip install vllm

برای بررسی نصب:

vllm --version

⚠️ توجه: برای سرورهای Production، حتماً قبل از نصب، سازگاری Driver / CUDA / PyTorch / vLLM را با مستندات همان نسخه بررسی کنید. نصب کورکورانه بر اساس دستورهای قدیمی اینترنتی یکی از رایج‌ترین دلایل شکست استقرار است.

اجرای API و تست با cURL

برای تست اولیه، از یک مدل کوچک استفاده می‌کنیم:

vllm serve Qwen/Qwen3-0.6B

به‌صورت پیش‌فرض سرور روی پورت 8000 اجرا می‌شود. برای بررسی مدل‌های موجود:

curl http://127.0.0.1:8000/v1/models

ارسال اولین درخواست Chat:

curl http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3-0.6B",
    "messages": [{"role": "user", "content": "سلام"}],
    "max_tokens": 100
  }'

اگر پاسخ JSON دریافت کنید، یعنی API شما آماده است.

اتصال با Python؛ استفاده از OpenAI SDK

یکی از مزیت‌های اصلی vLLM این است که برنامه شما نیازی به تغییر ساختار ندارد. فقط base_url را عوض کنید:

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8000/v1",
    api_key="dummy"
)

response = client.chat.completions.create(
    model="Qwen/Qwen3-0.6B",
    messages=[{"role": "user", "content": "یک متن کوتاه بنویس."}]
)

print(response.choices[0].message.content)

زیرساخت GPU برای سرو مدل‌های هوش مصنوعی

اگر برای اجرای مدل‌های متن‌باز، vLLM، RAG یا چت‌بات اختصاصی به یک سرور GPU با منابع پایدار نیاز دارید، ایرانیکاسرور پلن‌های سرور مجازی و اختصاصی را با تمرکز بر آپ‌تایم بالا، پهنای باند مناسب و پشتیبانی فنی ارائه می‌کند.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

اجرای vLLM با Docker

اگر نمی‌خواهید وابستگی‌های Python را مستقیم روی سرور نصب کنید، Docker گزینه مناسب‌تری است. vLLM ایمیج رسمی vllm/vllm-openai را ارائه می‌دهد :

docker run --runtime nvidia --gpus all \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -p 8000:8000 \
  --ipc=host \
  vllm/vllm-openai:latest \
  --model Qwen/Qwen3-0.6B

برای این کار، NVIDIA Container Toolkit باید روی سرور نصب و تنظیم شده باشد. Docker جایگزین بررسی سازگاری Driver و GPU نیست.

مدیریت VRAM، اجرای چند GPU و تنظیمات کاربردی

اگر با خطای CUDA out of memory مواجه شدید، ابتدا با nvidia-smi مصرف فعلی GPU را بررسی کنید. عوامل اصلی: حجم مدل، طول Context، Batch Size و برنامه‌های دیگر در حال استفاده از GPU.

برای کنترل سهم حافظه vLLM از GPU:

vllm serve MODEL_NAME --gpu-memory-utilization 0.90

برای اجرای مدل روی چند GPU (در صورت پشتیبانی مدل و سخت‌افزار):

vllm serve MODEL_NAME --tensor-parallel-size 2

امنیت API؛ نکته‌ای که نباید نادیده گرفت

قرار دادن API مستقیماً روی اینترنت بدون لایه امنیتی، یکی از پرخطرترین کارهاست. ساختار پیشنهادی:

Internet → Nginx / Reverse Proxy → Authentication / HTTPS → vLLM → GPU

vLLM امکان تعیین API Key دارد:

vllm serve MODEL_NAME --api-key YOUR_SECRET_KEY

⚠️ اما API Key به‌تنهایی امنیت کامل ایجاد نمی‌کند. توصیه می‌شود برای Hardening از Reverse Proxy، HTTPS، Firewall، Rate Limiting و محدودسازی IP نیز استفاده شود. حتی در صورت استفاده از Docker، این لایه‌ها ضروری هستند.

اجرای دائمی سرویس با systemd

اگر vLLM را با SSH اجرا کنید، بستن ترمینال سرویس را متوقف می‌کند. برای Production از systemd استفاده کنید:

[Unit]
Description=vLLM API Server
After=network.target

[Service]
User=root
WorkingDirectory=/root
Environment="PATH=/root/vllm-env/bin"
ExecStart=/root/vllm-env/bin/vllm serve Qwen/Qwen3-0.6B --host 127.0.0.1 --port 8000
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable vllm
systemctl start vllm
journalctl -u vllm -f

خطاهای رایج و راه‌حل‌ها

خطا بررسی
CUDA out of memory حجم مدل، Context Length، Batch Size، مصرف GPU دیگر
GPU پیدا نمی‌شود اجرای nvidia-smi و بررسی Driver
ناسازگاری CUDA Driver / CUDA / PyTorch / vLLM با مستندات نسخه
Package Conflict ساخت Virtual Environment کاملاً تازه
مدل دانلود نمی‌شود نام مدل، اینترنت، Token، فضای Storage

vLLM یا Ollama؟ انتخاب بر اساس نوع بار

این دو ابزار برای دو سناریوی متفاوت طراحی شده‌اند. انتخاب اشتباه یعنی پرداخت هزینه‌ای که به آن نیاز ندارید یا رسیدن به سقفی که نباید می‌رسیدید.

معیار vLLM Ollama
Throughput چندکاربره بالا (۶ برابر در ۵۰ کاربر) محدود
p99 Latency پایین (~۲.۸s در ۵۰ کاربر) بالا (~۲۴.۷s)
Startup کند (چند دقیقه) سریع (چند ثانیه)
مناسب برای Production و سرو هم‌زمان توسعه، تست، تک‌کاربره

🔹 اگر تازه شروع کرده‌اید، توسعه محلی با Ollama منطقی است و بعد برای Production به vLLM مهاجرت کنید. خوشبختانه هر دو از OpenAI-compatible API پشتیبانی می‌کنند و تغییر Backend فقط با تغییر base_url انجام می‌شود .

قبل از خرید سرور GPU به چه نکاتی توجه کنیم؟

🔹 VRAM — مهم‌ترین عامل؛ تعیین‌کننده حداکثر اندازه مدل و طول Context

🔹 نسل GPU — تأثیرگذار بر پشتیبانی از قابلیت‌های جدید و بهره‌وری انرژی

🔹 پهنای باند حافظه — در برخی Workloadهای Inference اهمیت مستقیم دارد

🔹 سرعت Storage — بارگذاری مدل‌های چند ده گیگابایتی از دیسک کند، تجربه را خراب می‌کند

🔹 CPU و RAM — برای Pre/Post Processing و سرویس‌های جانبی

🔹 شبکه — اگر API عمومی است، کیفیت شبکه مستقیماً روی تجربه کاربر اثر می‌گذارد

جمع‌بندی

vLLM یکی از جدی‌ترین ابزارها برای تبدیل یک سرور GPU به زیرساخت سرو مدل‌های هوش مصنوعی است. با نصب vLLM می‌توانید مدل‌های متن‌باز را روی سرور خود اجرا کنید، یک API اختصاصی بسازید، آن را به وب‌سایت و اپلیکیشن متصل کنید و از ارسال داده به سرویس‌های خارجی بی‌نیاز شوید.

اگر هدف شما سرو هم‌زمان به چند کاربر یا چند سرویس است، vLLM با Continuous Batching و PagedAttention تفاوت محسوسی در Throughput و پایداری Latency ایجاد می‌کند. اما اگر هنوز در مرحله توسعه و تست تک‌کاربره هستید، شاید شروع با ابزارهای ساده‌تر منطقی‌تر باشد.

برای محیط Production، پیش از انتشار API روی اینترنت، HTTPS، Reverse Proxy، Authentication، Rate Limiting و Firewall را تنظیم کنید و سازگاری نسخه‌های vLLM، CUDA و Driver را با مستندات رسمی بررسی کنید.

مشکل دارید؟ درخواست خود را ارسال کنید

اگر در فرآیند نصب vLLM، تنظیم GPU، ساخت API یا استقرار روی سرور با چالش مواجه شدید، تیم فنی ایرانیکاسرور آماده بررسی و ارائه راه‌حل است.

📞 تماس با پشتیبانی: 021-91302460 | ایرانیکاسرور

این آموزش برایت مفید بود؟ می‌توانی لینک آن را ذخیره یا برای دیگران ارسال کنی.

Amir Jabbari

نویسنده مجله ایرانیکاسرور؛ منتشرکننده آموزش‌ها و راهنماهای کاربردی در حوزه هاست، سرور، وردپرس و شبکه.

برای اجرای آموزش به زیرساخت نیاز داری؟

سرویس مرتبط را ببین؛ معرفی خدمات در این بخش کوتاه نگه داشته شده تا تمرکز اصلی صفحه روی آموزش باقی بماند.

ایرانیکاسرور
گفت‌وگو درباره آموزش

دیدگاه‌ها

0 دیدگاه برای این مطلب ثبت شده است.

هنوز دیدگاهی ثبت نشده است؛ اگر سؤال یا تجربه‌ای درباره این آموزش داری، همین‌جا بنویس. پاسخ‌های مدیریت و کاربران به‌صورت مشخص از هم تفکیک می‌شوند.

دیدگاه یا سؤال خود را بنویسید

ایمیل شما منتشر نمی‌شود. فیلدهای ضروری مشخص شده‌اند.