Spaces:
Sleeping
Sleeping
Upload 2 files
Browse files- Dockerfile +36 -0
- run.sh +101 -0
Dockerfile
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ุงุณุชุฎุฏุงู
ุงูุตูุฑุฉ ุงูุฑุณู
ูุฉ ุงูุชู ุชุฏู
ุฌ Open WebUI ู
ุน Ollama
|
| 2 |
+
FROM ghcr.io/open-webui/open-webui:ollama
|
| 3 |
+
|
| 4 |
+
# โโ ุฅุนุฏุงุฏุงุช ุงูู
ุณุงุฑุงุช ุงูุฏุงุฆู
ุฉ (HF Spaces ูุฑุจุท ุงูู
ุฎุฒู ุนูู /data) โโโโโโโโโโโโโโ
|
| 5 |
+
ENV OLLAMA_MODELS=/data/ollama
|
| 6 |
+
ENV DATA_DIR=/data/webui
|
| 7 |
+
ENV PORT=7860
|
| 8 |
+
ENV HOST=0.0.0.0
|
| 9 |
+
|
| 10 |
+
# โโ ุฅุจูุงุก ุงููู
ูุฐุฌ ูู ุงูุฐุงูุฑุฉ ุฅูู ุงูุฃุจุฏ (ูุง ุชูุฑูุบ ุนูุฏ ุงูุฎู
ูู) โโโโโโโโโโโโโโโ
|
| 11 |
+
ENV OLLAMA_KEEP_ALIVE=-1
|
| 12 |
+
|
| 13 |
+
# โโ ุฅุนุฏุงุฏุงุช ุงููู
ูุฐุฌ ุงูู
ุฑุงุฏ ุชุญู
ููู ู
ู Hugging Face โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 14 |
+
# ุบููุฑ ูุฐู ุงูููู
ููุท ูุชุดุบูู ุฃู ูู
ูุฐุฌ GGUF ู
ู HF ุฏูู ุชุนุฏูู ุฃู ุดูุก ุขุฎุฑ:
|
| 15 |
+
#
|
| 16 |
+
# HF_REPO : ู
ุณุงุฑ ุงูู
ุณุชูุฏุน ุนูู HF (ู
ุซุงู: unsloth/gemma-4-E2B-it-GGUF)
|
| 17 |
+
# HF_FILE : ุงุณู
ู
ูู GGUF ุจุฏูุฉ ูู
ุง ูุธูุฑ ูู ุงูู
ุณุชูุฏุน
|
| 18 |
+
# MODEL_NAME: ุงูุงุณู
ุงูุฐู ุณูุธูุฑ ุจู ุงููู
ูุฐุฌ ูู ูุงุฌูุฉ Open WebUI
|
| 19 |
+
# HF_TOKEN : (ุงุฎุชูุงุฑู) ู
ุทููุจ ููุท ูููู
ุงุฐุฌ ุงูุฎุงุตุฉ/ุงูู
ุญู
ูุฉ (gated models)
|
| 20 |
+
ENV HF_REPO="unsloth/gemma-4-E2B-it-GGUF"
|
| 21 |
+
ENV HF_FILE="gemma-4-E2B-it-UD-Q5_K_XL.gguf"
|
| 22 |
+
ENV MODEL_NAME="my-gemma"
|
| 23 |
+
ENV HF_TOKEN=""
|
| 24 |
+
|
| 25 |
+
# โโ ู
ุนุงู
ูุงุช ุชุดุบูู ุงููู
ูุฐุฌ (ูู
ูู ุชุนุฏูููุง ุญุณุจ ุญุฌู
ุงููู
ูุฐุฌ ูุงูุฐุงูุฑุฉ ุงูู
ุชุงุญุฉ) โโ
|
| 26 |
+
ENV MODEL_CTX=128000
|
| 27 |
+
ENV MODEL_THREADS=2
|
| 28 |
+
|
| 29 |
+
# ุชุซุจูุช ุฃุฏุงุฉ Hugging Face
|
| 30 |
+
RUN pip install -U huggingface_hub
|
| 31 |
+
|
| 32 |
+
# ูุณุฎ ุณูุฑูุจุช ุงูุชุดุบูู
|
| 33 |
+
COPY run.sh /app/run.sh
|
| 34 |
+
RUN chmod +x /app/run.sh
|
| 35 |
+
|
| 36 |
+
CMD ["/app/run.sh"]
|
run.sh
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
set -e
|
| 3 |
+
|
| 4 |
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 5 |
+
# ุงูููู
ุชุฃุชู ู
ู ู
ุชุบูุฑุงุช ุงูุจูุฆุฉ ุงูู
ุนุฑููุฉ ูู Dockerfile (ุฃู ู
ู HF Spaces Secrets)
|
| 6 |
+
# ูู
ููู ุชุฌุงูุฒูุง ูู ูุงุฌูุฉ HF Spaces ุชุญุช ูุณู
"Repository secrets" ุฏูู ุชุนุฏูู ุงูููุฏ
|
| 7 |
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 8 |
+
MODELS_DIR="/data/models"
|
| 9 |
+
MODEL_PATH="$MODELS_DIR/$HF_FILE"
|
| 10 |
+
|
| 11 |
+
# โโ ุงูุชุญูู ู
ู ุงูู
ุชุบูุฑุงุช ุงูุฃุณุงุณูุฉ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 12 |
+
if [ -z "$HF_REPO" ] || [ -z "$HF_FILE" ] || [ -z "$MODEL_NAME" ]; then
|
| 13 |
+
echo "ERROR: HF_REPO, HF_FILE, and MODEL_NAME must all be set."
|
| 14 |
+
exit 1
|
| 15 |
+
fi
|
| 16 |
+
|
| 17 |
+
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
| 18 |
+
echo " Repo : $HF_REPO"
|
| 19 |
+
echo " File : $HF_FILE"
|
| 20 |
+
echo " Name : $MODEL_NAME"
|
| 21 |
+
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
| 22 |
+
|
| 23 |
+
# ุฅูุดุงุก ุงูู
ุฌูุฏุงุช ุงูู
ุทููุจุฉ
|
| 24 |
+
mkdir -p "$MODELS_DIR" /data/ollama /data/webui
|
| 25 |
+
|
| 26 |
+
# โโ ุชุญู
ูู ุงูู
ูู ู
ู Hugging Face (ูุชุฎุทู ุงูุชุญู
ูู ุฅู ูุงู ุงูู
ูู ู
ูุฌูุฏุงู ุจุงููุนู) โโ
|
| 27 |
+
if [ -f "$MODEL_PATH" ]; then
|
| 28 |
+
echo "Model file already exists at $MODEL_PATH โ skipping download."
|
| 29 |
+
else
|
| 30 |
+
echo "Downloading $HF_FILE from $HF_REPO ..."
|
| 31 |
+
|
| 32 |
+
# ุชู
ุฑูุฑ ุงูุชููู ููุท ุฅู ูุงู ู
ุถุจูุทุงู (ูููู
ุงุฐุฌ ุงูู
ุญู
ูุฉ)
|
| 33 |
+
HF_CLI_ARGS="--repo-type model --local-dir $MODELS_DIR"
|
| 34 |
+
if [ -n "$HF_TOKEN" ]; then
|
| 35 |
+
HF_CLI_ARGS="$HF_CLI_ARGS --token $HF_TOKEN"
|
| 36 |
+
fi
|
| 37 |
+
|
| 38 |
+
huggingface-cli download "$HF_REPO" "$HF_FILE" $HF_CLI_ARGS
|
| 39 |
+
|
| 40 |
+
if [ ! -f "$MODEL_PATH" ]; then
|
| 41 |
+
echo "ERROR: Download finished but file not found at $MODEL_PATH"
|
| 42 |
+
exit 1
|
| 43 |
+
fi
|
| 44 |
+
echo "Download complete: $MODEL_PATH"
|
| 45 |
+
fi
|
| 46 |
+
|
| 47 |
+
# โโ ุชุดุบูู ุฎุงุฏู
Ollama ูู ุงูุฎูููุฉ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 48 |
+
echo "Starting Ollama server..."
|
| 49 |
+
OLLAMA_MODELS=/data/ollama ollama serve &
|
| 50 |
+
|
| 51 |
+
# โโ ุงูุชุธุงุฑ ุญุชู ูููู Ollama ุฌุงูุฒุงู ูุนูุงู (ุจุฏูุงู ู
ู sleep ุซุงุจุช) โโโโโโโโโโโโโโโโ
|
| 52 |
+
echo "Waiting for Ollama to be ready..."
|
| 53 |
+
MAX_WAIT=60
|
| 54 |
+
WAITED=0
|
| 55 |
+
until curl -s http://localhost:11434/api/tags > /dev/null 2>&1; do
|
| 56 |
+
if [ "$WAITED" -ge "$MAX_WAIT" ]; then
|
| 57 |
+
echo "ERROR: Ollama did not respond within ${MAX_WAIT}s."
|
| 58 |
+
exit 1
|
| 59 |
+
fi
|
| 60 |
+
sleep 1
|
| 61 |
+
WAITED=$((WAITED + 1))
|
| 62 |
+
done
|
| 63 |
+
echo "Ollama is ready (after ${WAITED}s)."
|
| 64 |
+
|
| 65 |
+
# โโ ุฅูุดุงุก Modelfile ูุดูุฑ ุฅูู ุงูู
ูู ุงูู
ุญูู ูู ุงูู
ุฎุฒู โโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 66 |
+
echo "Creating Modelfile..."
|
| 67 |
+
cat <<EOF > "$MODELS_DIR/Modelfile"
|
| 68 |
+
FROM $MODEL_PATH
|
| 69 |
+
|
| 70 |
+
PARAMETER num_ctx $MODEL_CTX
|
| 71 |
+
PARAMETER num_thread $MODEL_THREADS
|
| 72 |
+
EOF
|
| 73 |
+
|
| 74 |
+
# โโ ุชุณุฌูู ุงููู
ูุฐุฌ ูู Ollama ุฅู ูู
ููู ู
ุณุฌูุงู ุจุนุฏ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 75 |
+
if OLLAMA_MODELS=/data/ollama ollama list | grep -q "^$MODEL_NAME"; then
|
| 76 |
+
echo "Model '$MODEL_NAME' already registered โ skipping creation."
|
| 77 |
+
else
|
| 78 |
+
echo "Registering model '$MODEL_NAME' in Ollama..."
|
| 79 |
+
OLLAMA_MODELS=/data/ollama ollama create "$MODEL_NAME" -f "$MODELS_DIR/Modelfile"
|
| 80 |
+
echo "Model registered successfully."
|
| 81 |
+
fi
|
| 82 |
+
|
| 83 |
+
# โโ ุชุญู
ูู ุงููู
ูุฐุฌ ู
ุณุจูุงู ูู ุงูุฐุงูุฑุฉ (Warmup) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 84 |
+
# ูุฑุณู ุทูุจุงู ูุงุฑุบุงู ุจู keep_alive: -1 ูููุญู
ููู ุงููู
ูุฐุฌ ุงูุขู ููุจูู ูู ุงูุฐุงูุฑุฉ
|
| 85 |
+
# ุญุชู ุฅุนุงุฏุฉ ุงูุชุดุบููุ ููุง ููุฌุฏ ุฃู ุชุฃุฎูุฑ ุนูุฏ ุฃูู ุฑุณุงูุฉ ู
ู ุงูู
ุณุชุฎุฏู
|
| 86 |
+
echo "Pre-loading '$MODEL_NAME' into memory..."
|
| 87 |
+
curl -s -X POST http://localhost:11434/api/generate \
|
| 88 |
+
-H "Content-Type: application/json" \
|
| 89 |
+
-d "{\"model\": \"$MODEL_NAME\", \"prompt\": \"\", \"keep_alive\": -1}" \
|
| 90 |
+
> /dev/null
|
| 91 |
+
|
| 92 |
+
if [ $? -eq 0 ]; then
|
| 93 |
+
echo "Model '$MODEL_NAME' is loaded and ready in memory."
|
| 94 |
+
else
|
| 95 |
+
echo "WARNING: Pre-load request failed. Model will load on first use instead."
|
| 96 |
+
fi
|
| 97 |
+
|
| 98 |
+
# โโ ุชุดุบูู ูุงุฌูุฉ Open WebUI โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 99 |
+
echo "Starting Open WebUI..."
|
| 100 |
+
cd /app/backend
|
| 101 |
+
exec bash start.sh
|