pyclaw3 / entrypoint.sh
rahul7star's picture
Update entrypoint.sh
7e18d89 verified
Raw
History Blame Contribute Delete
2.19 kB
#!/bin/bash
set -e
echo "=================================="
echo "Starting HF Space with llama.cpp"
echo "=================================="
if [ ! -d /data ]; then
export HF_HOME=/workspace/data/.cache/huggingface
export HUGGINGFACE_HUB_CACHE=/workspace/data/.cache/huggingface
export MODEL_CACHE_DIR=/workspace/data/models
else
export HF_HOME=/data/.cache/huggingface
export HUGGINGFACE_HUB_CACHE=/data/.cache/huggingface
export MODEL_CACHE_DIR=/data/models
fi
mkdir -p "${HF_HOME}" "${HUGGINGFACE_HUB_CACHE}" "${MODEL_CACHE_DIR}"
echo "MODEL_REPO_ID=${MODEL_REPO_ID}"
echo "MODEL_FILENAME=${MODEL_FILENAME}"
echo "PORT=${PORT}"
echo "HF_HOME=${HF_HOME}"
echo "MODEL_CACHE_DIR=${MODEL_CACHE_DIR}"
# Download GGUF if missing
if [ ! -f "${MODEL_CACHE_DIR}/${MODEL_FILENAME}" ]; then
echo "Downloading GGUF from Hugging Face..."
python3 - <<'PY'
import os
from huggingface_hub import hf_hub_download
repo = os.environ["MODEL_REPO_ID"]
filename = os.environ["MODEL_FILENAME"]
local_dir = os.environ["MODEL_CACHE_DIR"]
path = hf_hub_download(
repo_id=repo,
filename=filename,
local_dir=local_dir,
)
print(f"Downloaded model to: {path}")
PY
else
echo "Model already present: ${MODEL_CACHE_DIR}/${MODEL_FILENAME}"
fi
echo "Starting llama.cpp server..."
export LD_LIBRARY_PATH="/app:/app/build/bin:/app/build/lib:/usr/local/lib:${LD_LIBRARY_PATH}"
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
# Optional debug
find /app -name "libmtmd.so*" -o -name "libllama.so*" -o -name "libggml*.so*" || true
ldd /app/llama-server || true
ldconfig || true
/app/llama-server \
-m "${MODEL_CACHE_DIR}/${MODEL_FILENAME}" \
--host 127.0.0.1 \
--port 8000 \
> /tmp/llama.log 2>&1 &
LLAMA_PID=$!
echo "llama.cpp PID: ${LLAMA_PID}"
echo "Waiting for llama.cpp server..."
for i in $(seq 1 60); do
if curl -sf http://127.0.0.1:8000/v1/models >/dev/null; then
echo "llama.cpp is ready"
break
fi
echo "waiting... ($i/60)"
sleep 2
done
if ! curl -sf http://127.0.0.1:8000/v1/models >/dev/null; then
echo "llama.cpp failed to start"
echo "==== llama.cpp logs ===="
cat /tmp/llama.log || true
exit 1
fi
cd /workspace
exec python3 app_gradio.py