#!/bin/bash
# ============================================================
# Deploy Qwen3.6-35B-A3B-abliterated Q8 → llama.cpp OpenAI API
# รันบน instance vast.ai (H100 SXM 80GB) · port 8000
# ============================================================
set -e

MODEL_DIR=/workspace/models
GGUF=Huihui-Qwen3.6-35B-A3B-abliterated.Q8_0.gguf

echo "========== [1/4] ติดตั้ง tools + download GGUF Q8 (~37.8GB) =========="
pip install -q huggingface-hub
mkdir -p "$MODEL_DIR"
huggingface-cli download mradermacher/Huihui-Qwen3.6-35B-A3B-abliterated-GGUF \
  "$GGUF" --local-dir "$MODEL_DIR"

echo "========== [2/4] build llama.cpp (CUDA) =========="
apt-get update -qq
apt-get install -y -qq build-essential cmake git libcurl4-openssl-dev
if [ ! -d /workspace/llama.cpp ]; then
  git clone --depth 1 https://github.com/ggml-org/llama.cpp /workspace/llama.cpp
fi
cd /workspace/llama.cpp
cmake -B build -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build build --config Release -j"$(nproc)"

echo "========== [3/4] ตรวจ GGUF arch (ควรเป็น qwen3moe/qwen35moe) =========="
./build/bin/llama-gguf "$MODEL_DIR/$GGUF" 2>/dev/null | grep -i "arch\|general.name" | head -5 || true

echo "========== [4/4] start llama-server (OpenAI API port 8000) =========="
# -ngl 99 = offload ทุก layer/expert ขึ้น GPU · ctx 16384 conservative (เพิ่มได้ทีหลัง)
nohup ./build/bin/llama-server \
  -m "$MODEL_DIR/$GGUF" \
  --host 0.0.0.0 --port 8000 \
  -ngl 99 \
  --ctx-size 16384 \
  --alias qwen3.6-35b-abliterated \
  > /workspace/llama-server.log 2>&1 &

echo "รอ server พร้อม (โหลด model ขึ้น GPU ~1-2 นาที)..."
for i in $(seq 1 60); do
  if curl -s http://localhost:8000/v1/models >/dev/null 2>&1; then
    echo "✓ SERVER READY"
    break
  fi
  sleep 3
done

echo "========== SMOKE TEST =========="
echo "--- /v1/models ---"
curl -s http://localhost:8000/v1/models | head -c 500
echo ""
echo "--- chat 1 request ---"
curl -s http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3.6-35b-abliterated","messages":[{"role":"user","content":"สวัสดี ตอบสั้นๆ ว่าพร้อมทำงานไหม"}],"max_tokens":50}' \
  | head -c 800
echo ""
echo "========== เสร็จ! endpoint พร้อมที่ port 8000 (external: IP:6083) =========="
echo "log: tail -f /workspace/llama-server.log"
