#!/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