#!/bin/bash # Serve this checkpoint on a Mac: the MLX engine on :8000, then the structured decision # server on :8011. The DJEV_* defaults are the published deployment's, so answers match the # hosted API's. # # MODEL=$(pwd) ./runtime/run.sh # from a downloaded snapshot set -euo pipefail cd "$(dirname "$0")/.." PY=${PY:-python3} MODEL=${MODEL:-$(pwd)} CANVAS=${CANVAS:-128} export DJEV_DOC_FIRST=${DJEV_DOC_FIRST:-1} DJEV_BIDIR=${DJEV_BIDIR:-qsep} DJEV_BIDIR_MAXPROMPT=${DJEV_BIDIR_MAXPROMPT:-8192} export DJEV_NOUL_COMMIT=${DJEV_NOUL_COMMIT:-0.8} DJEV_TEMPS=${DJEV_TEMPS:-score=0.375} export DJEV_ADAPTIVE_THINK=${DJEV_ADAPTIVE_THINK:-choice=0.7,score=0.7,noul=0.85,budget=512,min_tokens=0,max_inflight=2,max_questions=2} export DJEV_THINK_STEPS=${DJEV_THINK_STEPS:-8} DJEV_MANY_OPTIONS=${DJEV_MANY_OPTIONS:-chunk=20,top=3,think1=0,think2=0} export DEFAULT_SAMPLES=${DEFAULT_SAMPLES:-1} SERVER_EXTRA_ARGS=${SERVER_EXTRA_ARGS:---constrained --engine-samples} # Memory floor: the weights are ~19 GB active and an 8k-token prefill peaks around 21 GB. $PY -m superdecider.server --model "$MODEL" --canvas "$CANVAS" --port 8000 --max-prompt "${MAX_PROMPT:-12288}" & ENGINE_PID=$! trap 'kill $ENGINE_PID 2>/dev/null || true' EXIT until curl -sf 127.0.0.1:8000/v1/models >/dev/null; do kill -0 $ENGINE_PID 2>/dev/null || { echo "engine exited"; exit 1; } sleep 1 done echo "engine ready on :8000" exec $PY runtime/structured_server.py --upstream http://127.0.0.1:8000 --model super-decider \ --tokenizer "$MODEL" --canvas "$CANVAS" --host "${HOST:-127.0.0.1}" --port "${PORT:-8011}" $SERVER_EXTRA_ARGS