#!/bin/bash # تأكد من تحميل النموذج الخاص بك هنا (إذا لم يكن محملاً مسبقاً في /data) # huggingface-cli download ... # تشغيل خادم llama-cpp المتوافق تماماً مع واجهات المحادثة (OpenAI Compatible API) python3 -m llama_cpp.server \ --model /data/models/your-model-name.gguf \ --host 0.0.0.0 \ --port 7860 \ --n_ctx 4096 \ # تحديد مسارات المخزن الدائم (في مساحات HF عادة يكون /data) MODELS_DIR="/data/models" MODEL_FILE="gemma-4-E2B-it-UD-Q5_K_XL.gguf" OLLAMA_MODEL_NAME="my-gemma" # إنشاء المجلدات المطلوبة في المخزن إن لم تكن موجودة mkdir -p $MODELS_DIR mkdir -p /data/ollama mkdir -p /data/webui # تشغيل خادم Ollama في الخلفية echo "Starting Ollama server..." OLLAMA_MODELS=/data/ollama ollama serve & # الانتظار بضع ثوانٍ للتأكد من أن Ollama يعمل ومستعد لتلقي الطلبات sleep 4 # التحقق من وجود النموذج في المخزن؛ إذا لم يكن موجوداً، قم بتنزيله if [ ! -f "$MODELS_DIR/$MODEL_FILE" ]; then echo "Model not found in storage. Downloading..." # نستخدم local-dir-use-symlinks False لضمان تحميل الملف الفعلي وليس اختصاراً (symlink) huggingface-cli download gijl/gemma-4-E2B-it-GGUF $MODEL_FILE \ --local-dir $MODELS_DIR \ --local-dir-use-symlinks False # تنزيل ملف الرؤية (mmproj) إن كنت تحتاجه (انظر الملاحظة أسفل حول توافقه) huggingface-cli download gijl/gemma-4-E2B-it-GGUF mmproj-BF16.gguf \ --local-dir $MODELS_DIR \ --local-dir-use-symlinks False else echo "Model already exists in storage. Skipping download." fi # إنشاء ملف إعدادات النموذج لـ Ollama (Modelfile) echo "Creating Modelfile..." cat < $MODELS_DIR/Modelfile FROM $MODELS_DIR/$MODEL_FILE # إعدادات مشابهة لما طلبته في llama.cpp PARAMETER num_ctx 8162 PARAMETER num_thread 2 EOF # تسجيل النموذج داخل Ollama echo "Registering model with Ollama..." ollama create $OLLAMA_MODEL_NAME -f $MODELS_DIR/Modelfile # تشغيل واجهة Open WebUI (الأمر الافتراضي للصورة الأساسية) echo "Starting Open WebUI..." cd /app/backend exec bash start.sh