Key Takeaways
- بلا واجهة = دون واجهة محادثة، API فقط. يمكن تشغيل Ollama و vLLM و LM Studio في وضع headless.
- Ollama بلا واجهة: `ollama serve` يبدأ API على localhost:11434. دون واجهة مستخدم.
- vLLM بلا واجهة: `vllm serve` يبدأ API على المنفذ 8000. أداء أعلى من Ollama.
- الإنتاج: استخدم vLLM للأداء العالي، و Ollama للبساطة، و nginx لموازنة الحمل والأمان.
- اعتبارًا من أبريل 2026، يُعد vLLM المعيار الإنتاجي للخدمات عالية الأداء.
ماذا يعني headless؟
يعني headless أن البرنامج يعمل كخدمة دون واجهة رسومية للمستخدم. تتفاعل عبر استدعاءات API (REST, gRPC) بدلًا من النقر على الأزرار.
المزايا: استخدام أقل للموارد (دون عبء واجهة المستخدم)، أسهل في الأتمتة، مناسب للخوادم، أبسط في التوسّع.
العيوب: دون تغذية راجعة مرئية، يتطلب معرفة بـ API، أصعب في التصحيح دون سجلات.
كيف تشغّل Ollama في وضع headless؟
يمكن تشغيل Ollama كخدمة API خالصة:
# Run Ollama headless
ollama serve
# This starts the API at http://localhost:11434/v1
# No chat UI, just a background service
# Use the API from Python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
response = client.chat.completions.create(
model="llama3.2:3b",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
# Or from curl
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{{"model": "llama3.2:3b", "messages": [{{"role": "user", "content": "Hello"}}]}}'كيف تشغّل vLLM في وضع headless؟
تم تحسين vLLM لعمليات النشر بلا واجهة عالية الأداء:
# Install vLLM
pip install vllm
# Run headless with API
vllm serve llama-3.1-8b-instruct \
--host 0.0.0.0 \
--port 8000 \
--gpu-memory-utilization 0.9
# Access at http://localhost:8000/v1
# Supports 50+ concurrent requests
# Use from Python (same as Ollama)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="anything")
response = client.chat.completions.create(
model="meta-llama/Llama-2-7b-chat-hf",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)كيف تنشر في الإنتاج؟
1. استخدم vLLM للأداء العالي (50+ مستخدمًا متزامنًا).
2. استخدم Ollama للبساطة (مستخدم واحد أو فرق صغيرة).
3. أضف وكيلًا عكسيًا nginx لموازنة الحمل والمصادقة.
4. راقب ذاكرة GPU -- يجب ألا تتجاوز النماذج 80% من VRAM.
5. هيّئ التسجيل -- سجّل الأخطاء ومقاييس الأداء.
6. استخدم systemd أو Docker لإدارة الخدمة (إعادة تشغيل تلقائية عند الأعطال).
# Example: Deploy vLLM on a server via Docker
docker run --gpus all -p 8000:8000 \
--env VLLM_API_KEY="your-secret-key" \
vllm/vllm-openai:latest \
--model meta-llama/Llama-2-13b-chat-hf \
--tensor-parallel-size 2 # Use 2 GPUs
# Nginx reverse proxy config (optional)
# server {
# listen 80;
# location / {
# proxy_pass http://localhost:8000;
# proxy_set_header Authorization "Bearer $http_authorization";
# }
# }كيف تراقب عمليات النشر بلا واجهة؟
راقب ذاكرة GPU وزمن استجابة الطلبات ومعدلات الأخطاء:
# Monitor GPU usage (nvidia-smi)
watch nvidia-smi # Updates every 2 seconds
# Monitor request latency
# Add logging to your client code
import time
start = time.time()
response = client.chat.completions.create(...)
latency = time.time() - start
print(f"Request took {latency:.2f} seconds")
# Monitor vLLM logs
docker logs -f <container_id>
# Check error rates
# Parse logs for errors or use a monitoring tool (Prometheus + Grafana)أخطاء شائعة في عمليات النشر بلا واجهة
- عدم مراقبة VRAM. قد تنفد ذاكرة النماذج دون سابق إنذار. راقب GPU قبل النشر في الإنتاج.
- كشف API دون مصادقة. كثيرًا ما تُكشف الخدمات بلا واجهة على الشبكات. أضف دائمًا مصادقة (مفتاح API، جدار حماية).
- عدم ضبط حدود الموارد. قد يستهلك نموذج 100% من GPU ويعيق المهام الأخرى. استخدم `--gpu-memory-utilization` في vLLM.
- توقع أن يتوسّع Ollama إلى 100+ مستخدم. استخدم vLLM للتزامن العالي. يستطيع Ollama التعامل مع عدد قليل من المستخدمين المتزامنين.
- عدم اختبار التحويل عند الفشل. إذا تعطّل خادم النموذج، تتعلّق الطلبات. استخدم موازن حمل وفحوص سلامة.
الأسئلة الشائعة حول عمليات النشر بلا واجهة
هل يمكن تشغيل Ollama و vLLM على نفس الـ GPU؟
ليس في آن واحد. سيتنافسان على VRAM. شغّل أحدهما، أو استخدم عدة GPU.
هل من الآمن كشف API على الإنترنت؟
لا، دون مصادقة ليس آمنًا. ضع دائمًا مفتاح API أو جدار حماية أو وكيلًا عكسيًا أمامه. لا تكشف localhost:11434 مباشرةً أبدًا.
كم عدد المستخدمين المتزامنين الذين يستطيع Ollama التعامل معهم؟
عادةً 1-3 دون طابور طلبات. لمزيد من المستخدمين، استخدم vLLM أو أضف نظام طوابير.
ما فرق الأداء بين Ollama و vLLM؟
طلب فردي: سرعة متماثلة. طلبات متعددة متزامنة: vLLM أفضل بـ 5-10× لأنه يجمع الطلبات في دفعات.
المصادر
- Ollama GitHub -- github.com/ollama/ollama
- vLLM GitHub -- github.com/vllm-project/vllm
- vLLM Deployment Guide -- docs.vllm.ai/en/serving/deploying_with_docker.html
- Ollama API Docs -- github.com/ollama/ollama/blob/main/docs/api.md