#!/usr/bin/env bash # Launch the two surrogate VLM servers on klaus-3 via llama.cpp (OpenAI-compatible). # # Prereqs on klaus-3: # - a CUDA build of llama.cpp with the server binary (llama-server) # - GGUF weights for qwen-3.5-4b and gemma-4-4b (multimodal / vision projector) # # VRAM budget (8GB): two Q4_K_M 4B models (~2.6GB each) + CLIP (~1GB) fit under 8GB. # Adjust --n-gpu-layers / --ctx-size if you hit OOM. set -euo pipefail LLAMA_SERVER="${LLAMA_SERVER:-$HOME/llama.cpp/build/bin/llama-server}" MODEL_DIR="${MODEL_DIR:-$HOME/workspace/veil-pgd/models}" QWEN_GGUF="${QWEN_GGUF:-$MODEL_DIR/qwen-3.5-4b-instruct-q4_k_m.gguf}" QWEN_MMPROJ="${QWEN_MMPROJ:-$MODEL_DIR/qwen-3.5-4b-mmproj.gguf}" GEMMA_GGUF="${GEMMA_GGUF:-$MODEL_DIR/gemma-4-4b-it-q4_k_m.gguf}" GEMMA_MMPROJ="${GEMMA_MMPROJ:-$MODEL_DIR/gemma-4-4b-mmproj.gguf}" mkdir -p "$HOME/workspace/veil-pgd/logs" LOG="$HOME/workspace/veil-pgd/logs" echo "Starting qwen-3.5-4b on :8081" nohup "$LLAMA_SERVER" \ --model "$QWEN_GGUF" --mmproj "$QWEN_MMPROJ" \ --host 0.0.0.0 --port 8081 --ctx-size 4096 --n-gpu-layers 99 \ --alias qwen-3.5-4b > "$LOG/qwen.log" 2>&1 & echo "Starting gemma-4-4b on :8082" nohup "$LLAMA_SERVER" \ --model "$GEMMA_GGUF" --mmproj "$GEMMA_MMPROJ" \ --host 0.0.0.0 --port 8082 --ctx-size 4096 --n-gpu-layers 99 \ --alias gemma-4-4b > "$LOG/gemma.log" 2>&1 & echo "Launched. Tail logs in $LOG. Verify: curl localhost:8081/v1/models"