#!/usr/bin/env bash # Serve kingjones777/Qwen3.8-27B-Uncensored-ROCmFP4-STRIX-MTP (dense) as # frank-default-large via the CIRU ROCmFPX llama.cpp runtime on Dankclaw # (Strix Halo gfx1151). # # Runtime: the PromptForge llama-server built from ciru-ai/ROCmFPX tag # qwen3.8-activefpx-promptforge-v2.3 (commit 103af8b41) plus the v3 output-K8 # runtime patch (commit af0eac6), against the private TheRock ROCm 7.15 SDK # (kept in the retired ling3-ciru venv). The model is the plain ROCmFP4 # Q6 AGENT GGUF (no PromptForge .pfs sidecars) with the standalone MTP draft # head mtp-Qwen3.8-27B-Q4_0.gguf. The Qwen-Sharp chat template is applied at # runtime. # # Spec: dense model -> native MTP draft at n_max 4 (the knee, per the model # card). The draft head is a separate Q4_0 GGUF loaded via --model-draft. # # The model card requires ROCm 7.15 (not the system ROCm 7.2.4) for the # advertised Strix Halo performance. LD_LIBRARY_PATH therefore points at the # 7.15 SDK libraries first. # # Tunables come from frank-default-large.env in this directory unless # FRANK_LARGE_ENV_FILE overrides that path. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ENV_FILE="${FRANK_LARGE_ENV_FILE:-$SCRIPT_DIR/frank-default-large.env}" if [[ -f "$ENV_FILE" ]]; then set -a # shellcheck disable=SC1090 source "$ENV_FILE" set +a fi # --- defaults (used when the env file does not set them) ------------------- : "${LLAMA_BIN:=/home/dank/ciru-qwen38/ROCmFPX/build-promptforge/bin/llama-server}" : "${MODEL_DIR:=/home/dank/models/kingjones-Qwen3.8-27B-STRIX-MTP}" : "${MODEL_FILE:=Qwen3.8-27B-Uncensored-Q6_0_ROCMFPX_AGENT.gguf}" : "${MTP_DRAFT_FILE:=mtp-Qwen3.8-27B-Q4_0.gguf}" : "${MMPROJ_FILE:=mmproj-Qwen3.8-27B-Q8_0.gguf}" : "${CHAT_TEMPLATE_FILE:=$SCRIPT_DIR/chat-template.jinja}" : "${ROCM_DEVEL:=/home/dank/ling3-ciru/Ling-3.0-Flash-CIRU-int4-Strix-native/.venv/lib/python3.12/site-packages/_rocm_sdk_devel}" : "${ROCM_LIB:=/home/dank/ling3-ciru/Ling-3.0-Flash-CIRU-int4-Strix-native/.venv/lib/python3.12/site-packages/_rocm_sdk_libraries}" : "${ROCM_CORE:=/home/dank/ling3-ciru/Ling-3.0-Flash-CIRU-int4-Strix-native/.venv/lib/python3.12/site-packages/_rocm_sdk_core}" : "${ALIAS:=frank-default-large}" : "${BIND_ADDR:=0.0.0.0}" : "${LISTEN_PORT:=7770}" : "${CTX_SIZE:=262144}" : "${PARALLEL:=1}" : "${BATCH_SIZE:=4096}" : "${UBATCH_SIZE:=4096}" : "${CACHE_TYPE_K:=f16}" : "${CACHE_TYPE_V:=f16}" : "${CTX_CHECKPOINTS:=16}" : "${CACHE_RAM:=8192}" : "${SPEC_DRAFT_N_MAX:=4}" : "${SPEC_DRAFT_N_MIN:=0}" : "${SPEC_DRAFT_P_MIN:=0.0}" : "${SPEC_DRAFT_P_SPLIT:=0.10}" : "${TEMPERATURE:=1.0}" : "${TOP_K:=20}" : "${TOP_P:=0.95}" : "${REASONING:=on}" : "${REASONING_FORMAT:=deepseek}" : "${CHAT_TEMPLATE_KWARGS:={}}" : "${VERBOSITY:=4}" MODEL="$MODEL_DIR/$MODEL_FILE" MTP_DRAFT="$MODEL_DIR/$MTP_DRAFT_FILE" # Plain dense model: no PromptForge .pfs sidecars, no Output-K8 proxy, no IU4 # lane. The v3 MTP is driven by the standalone Q4_0 draft head through the # standard draft-mtp path. Unset any leftover PromptForge env lanes. unset PROMPTFORGE_SIDECAR PROMPTFORGE_GDN_SIDECAR PROMPTFORGE_MTP_OUTPUT_K8_PROXY || true unset PROMPTFORGE_MODE PROMPTFORGE_ENABLE_SMALLM_W8 || true unset PROMPTFORGE_MTP_OUTPUT_K8 PROMPTFORGE_MTP_OUTPUT_K8_VALIDATE || true unset PROMPTFORGE_IU4_SIDECAR PROMPTFORGE_GDN_IU4_SIDECAR || true unset PROMPTFORGE_ENABLE_NGRAM_MOD PROMPTFORGE_ENABLE_NGRAM_M65_IU4 || true for f in "$MODEL" "$MTP_DRAFT" "$MODEL_DIR/$MMPROJ_FILE" "$CHAT_TEMPLATE_FILE"; do if [[ ! -f "$f" ]]; then echo "missing required file: $f" >&2 exit 1 fi done if [[ ! -x "$LLAMA_BIN" ]]; then echo "missing llama-server binary: $LLAMA_BIN" >&2 exit 1 fi # ROCm 7.15 SDK libraries must precede any system ROCm in LD_LIBRARY_PATH. export ROCM_PATH="$ROCM_DEVEL" export LD_LIBRARY_PATH="${ROCM_LIB}/lib:${ROCM_CORE}/lib:${ROCM_DEVEL}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" exec "$LLAMA_BIN" \ --model "$MODEL" \ --mmproj "$MODEL_DIR/$MMPROJ_FILE" \ --chat-template-file "$CHAT_TEMPLATE_FILE" \ --chat-template-kwargs "$CHAT_TEMPLATE_KWARGS" \ --alias "$ALIAS" \ --host "$BIND_ADDR" \ --port "$LISTEN_PORT" \ -dev ROCm0 \ -ngl 999 \ -c "$CTX_SIZE" \ -b "$BATCH_SIZE" \ -ub "$UBATCH_SIZE" \ -fa on \ -ctk "$CACHE_TYPE_K" \ -ctv "$CACHE_TYPE_V" \ -np "$PARALLEL" \ -ctxcp "$CTX_CHECKPOINTS" \ --cache-ram "$CACHE_RAM" \ --cache-prompt \ --metrics \ --no-mmap \ --spec-type draft-mtp \ --model-draft "$MTP_DRAFT" \ --spec-draft-device ROCm0 \ --spec-draft-ngl 999 \ --spec-draft-type-k f16 \ --spec-draft-type-v f16 \ --spec-draft-n-max "$SPEC_DRAFT_N_MAX" \ --spec-draft-n-min "$SPEC_DRAFT_N_MIN" \ --spec-draft-p-min "$SPEC_DRAFT_P_MIN" \ --spec-draft-p-split "$SPEC_DRAFT_P_SPLIT" \ --temp "$TEMPERATURE" \ --top-k "$TOP_K" \ --top-p "$TOP_P" \ --reasoning "$REASONING" \ --reasoning-format "$REASONING_FORMAT" \ --reasoning-budget -1 \ -lv "$VERBOSITY"