تثبيت Open WebUI: ذكاء اصطناعي محلي بواجهة شبيهة بـ ChatGPT
تثبيت Open WebUI عبر Docker، التكامل مع Ollama، إدارة المستخدمين، RAG (استعلام المستندات)، إدارة النماذج ودعم المستخدمين المتعددين.
تثبيت Ollama، تشغيل نماذج LLM المحلية (Llama 3، Mistral، Gemma)، استخدام API، إدارة النماذج، تسريع GPU والنشر عبر Docker.
Ollama هو أداة مفتوحة المصدر تتيح لك تشغيل نماذج اللغة الكبيرة (LLM) بسهولة على خادمك المحلي. يمكنك تنزيل واستخدام Llama 3 وMistral وGemma وPhi-3 والعديد من النماذج الأخرى بأمر واحد. يغطي هذا الدليل تثبيت Ollama وإدارة النماذج واستخدام API وتسريع GPU بالتفصيل.
Ollama هو بيئة تشغيل خفيفة مصممة لتشغيل نماذج LLM محلياً. يتيح لك تنزيل وإدارة النماذج بنهج مشابه لـ Docker. الميزات الرئيسية:
| المكون | الحد الأدنى | الموصى به |
|---|---|---|
| RAM | 8 جيجابايت | 16 جيجابايت+ |
| القرص | 20 جيجابايت | 50 جيجابايت+ |
| GPU (اختياري) | NVIDIA 4 جيجابايت VRAM | NVIDIA 8 جيجابايت+ VRAM |
| نظام التشغيل | Linux، macOS، Windows | Ubuntu 22.04 LTS |
استخدم سكريبت التثبيت الرسمي:
curl -fsSL https://ollama.com/install.sh | sh
بعد التثبيت، تبدأ خدمة Ollama تلقائياً. تحقق من الحالة:
systemctl status ollama
إذا لم يعمل السكريبت:
# تنزيل الملف الثنائي
curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama
# إنشاء مستخدم ollama
useradd -r -s /bin/false -m -d /usr/share/ollama ollama
# ملف خدمة systemd
cat > /etc/systemd/system/ollama.service << 'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="HOME=/usr/share/ollama"
[Install]
WantedBy=default.target
EOF
systemctl daemon-reload
systemctl enable --now ollama
docker run -d \
--name ollama \
-p 11434:11434 \
-v ollama_data:/root/.ollama \
ollama/ollama
docker run -d \
--name ollama \
--gpus all \
-p 11434:11434 \
-v ollama_data:/root/.ollama \
ollama/ollama
version: '3.8'
services:
ollama:
image: ollama/ollama
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
volumes:
ollama_data:
# نموذج Llama 3.1 8B
ollama pull llama3.1
# Mistral 7B
ollama pull mistral
# Google Gemma 2 9B
ollama pull gemma2
# محادثة تفاعلية
ollama run llama3.1
# استعلام واحد
ollama run llama3.1 "كيف أتحقق من استخدام القرص في Linux؟"
# عرض النماذج المثبتة
ollama list
# معلومات النموذج
ollama show llama3.1
# حذف نموذج
ollama rm mistral
# عرض النماذج قيد التشغيل
ollama ps
يوفر Ollama واجهة REST API على المنفذ 11434:
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{"role": "system", "content": "أنت مساعد مفيد."},
{"role": "user", "content": "ما هو Docker؟"}
],
"stream": false
}'
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "اكتب تكوين Nginx reverse proxy",
"stream": false
}'
import requests
def chat_with_ollama(prompt, model="llama3.1"):
response = requests.post(
"http://localhost:11434/api/chat",
json={
"model": model,
"messages": [{"role": "user", "content": prompt}],
"stream": False
}
)
return response.json()["message"]["content"]
result = chat_with_ollama("كيف أرتب قائمة في Python؟")
print(result)
# Modelfile
FROM llama3.1
SYSTEM """أنت مساعد الدعم الفني لـ REXE Technology.
تساعد في إدارة الخوادم وDocker وLinux وموضوعات الشبكات."""
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
إنشاء النموذج:
ollama create rexe-assistant -f Modelfile
ollama run rexe-assistant
# التحقق من تعريف NVIDIA
nvidia-smi
# إصدار CUDA
nvcc --version
curl -fsSL https://ollama.com/install.sh | OLLAMA_ACCELERATION=rocm sh
docker run -d \
--name ollama \
--device /dev/kfd \
--device /dev/dri \
-p 11434:11434 \
-v ollama_data:/root/.ollama \
ollama/ollama:rocm
# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/data/ollama"
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_KEEP_ALIVE=5m"
تطبيق التغييرات:
systemctl daemon-reload
systemctl restart ollama
# توفير RAM مع النماذج المكممة
ollama pull llama3.1:8b-q4_0 # 4-بت (~4.7 جيجابايت)
ollama pull llama3.1:8b-q5_1 # 5-بت (~5.7 جيجابايت)
ollama pull llama3.1:8b-q8_0 # 8-بت (~8.5 جيجابايت)
# إعداد نافذة السياق
ollama run llama3.1 --num-ctx 2048
مع خوادم REXE GPU، يمكنك تشغيل نماذج اللغة الكبيرة بأداء عالٍ عبر Ollama. توفر وحدات NVIDIA A100/H100 GPU استجابات سريعة حتى مع نماذج 70B معلمة.
يدعم Ollama نماذج Llama 3.1 وMistral وGemma 2 وPhi-3 وCodeLlama وQwen 2 وDeepSeek Coder وVicuna وNeural Chat والعديد من النماذج مفتوحة المصدر الأخرى. للقائمة الكاملة، استخدم أمر 'ollama list' أو قم بزيارة ollama.com/library.
نعم، يعمل Ollama في وضع CPU أيضاً. ومع ذلك، ستكون أوقات الاستجابة أبطأ بكثير مقارنة بـ GPU. في وضع CPU، تعمل نماذج 7B معلمة بسرعة مقبولة. يُوصى بـ GPU للنماذج الأكبر.
يوفر Ollama نقاط نهاية /api/chat و/api/generate. كما يتوفر نقطة نهاية /v1/chat/completions المتوافقة مع OpenAI. يتيح ذلك إعادة توجيه التطبيقات التي تستخدم OpenAI SDK إلى Ollama بتغييرات طفيفة.
نعم، يمكنك تعيين عدد النماذج المحتفظ بها في الذاكرة في وقت واحد باستخدام متغير البيئة OLLAMA_MAX_LOADED_MODELS. يمكن لعدة نماذج العمل بالتوازي طالما يتوفر RAM/VRAM كافٍ.
في Linux، يتم تخزين النماذج افتراضياً في /usr/share/ollama/.ollama/models. يمكنك تغيير هذا المجلد باستخدام متغير البيئة OLLAMA_MODELS. عند استخدام Docker، تأكد من التخزين الدائم باستخدام volume mount.
تثبيت Open WebUI عبر Docker، التكامل مع Ollama، إدارة المستخدمين، RAG (استعلام المستندات)، إدارة النماذج ودعم المستخدمين المتعددين.
تثبيت تعريفات NVIDIA، مجموعة أدوات CUDA، nvidia-container-toolkit، خدمة النماذج مع vLLM، مراقبة GPU ونشر نماذج AI مع Docker.
تثبيت Stable Diffusion، واجهات AUTOMATIC1111 و ComfyUI، تنزيل النماذج، تدريب LoRA، استخدام ControlNet وإنتاج صور مستضاف ذاتياً مع Docker.