Spaces:
Running
Running
| # Launch the demo locally: llama-server (Q4_0 GGUF, Metal) + FastAPI backend. | |
| # Ctrl-C stops both. | |
| set -euo pipefail | |
| cd "$(dirname "$0")/.." | |
| PY="${PY:-$HOME/miniforge3/bin/python3}" | |
| GGUF="${MAMAI_GGUF_MODEL:-assets/gemma-4-E4B-it-Q4_0.gguf}" | |
| LLAMA_PORT="${LLAMA_PORT:-8080}" | |
| APP_PORT="${APP_PORT:-8000}" | |
| N_CTX="${MAMAI_N_CTX:-4096}" | |
| NGL="${NGL:-999}" # offload all layers to Metal GPU; set 0 for CPU-only | |
| if [ ! -f "$GGUF" ]; then echo "Missing $GGUF — run scripts/fetch_assets.sh first."; exit 1; fi | |
| echo "==> starting llama-server on :$LLAMA_PORT" | |
| llama-server -m "$GGUF" --host 127.0.0.1 --port "$LLAMA_PORT" \ | |
| -c "$N_CTX" -ngl "$NGL" --no-webui > /tmp/mamai_llama.log 2>&1 & | |
| LLAMA_PID=$! | |
| trap 'kill $LLAMA_PID 2>/dev/null || true' EXIT | |
| echo "==> waiting for llama-server health…" | |
| for i in $(seq 1 120); do | |
| if curl -sf "http://127.0.0.1:$LLAMA_PORT/health" >/dev/null 2>&1; then echo "llama-server ready."; break; fi | |
| if ! kill -0 $LLAMA_PID 2>/dev/null; then echo "llama-server died — see /tmp/mamai_llama.log"; tail -20 /tmp/mamai_llama.log; exit 1; fi | |
| sleep 1 | |
| done | |
| export MAMAI_LLAMA_URL="http://127.0.0.1:$LLAMA_PORT" | |
| echo "==> starting FastAPI on :$APP_PORT → http://127.0.0.1:$APP_PORT" | |
| "$PY" -m uvicorn backend.app:app --host 0.0.0.0 --port "$APP_PORT" | |