frank-large moves from the kingjones30/ROCmFPX llama.cpp build to peonist-ai/halogen-flash-server 0.5.8 serving Qwen3.8-Flash-Next (w4b .hgn 115.55 GiB + quality overlay). Upstream measures this engine at roughly 4x the prefill throughput of the llama.cpp family on the same gfx1151 silicon, and prefill dominates any prompt with real context. Shape: a rootless Quadlet container (dankclaw/frank-large/quadlet/), engine on container loopback :8730 (never published), OpenAI front-end :8731 published as host 7770, HALOGEN_MODEL_ID=frank-large so no client renamed anything. Context 262144, KV pool 262144 positions (~7.2 GiB, conservative for a shared 121 GiB host), 4 slots, host reserve 24, vision tower on, weights pinned, all other flags at vendor defaults. Weights are fetched by HALOGEN_DOWNLOAD on first start into a writable /home/dank/models/halogen. The llama.cpp era (unit, env, serve script) is staged in .AGENTTRASH/ rather than deleted; the STRIX payload and the ROCmFPX build stay on disk as the rollback target. deploy_llm_large becomes a user-quadlet handler: it retires the old ROOT unit (moving its checkout symlink into the home trash, never rm) and gates the first start on the download rather than reporting a failure for a fetch that is working exactly as designed. frank-npu is retired in the same change. The kernel cmdline moves from iommu=pt to amd_iommu=off for the 13-16% of prefill upstream measured, and that takes the XDNA2 NPU with it: without PASID/SVA the driver cannot open /dev/accel/accel0 (err=-19). Its five dependent routes are repointed (Hermes vision -> frank-large, Hermes title generation -> frank-small, harness vision -> frank-large, tiny -> frank-small, task -> frank-large:medium) and its provider blocks are removed from both the harness config and Hermes's live config. Audio input leaves the fleet with no replacement; image input survives on halogen's vision tower. Docs: new halogen-flash-server runbook, new IOMMU decision record, and frank-npu rewritten as a retirement record. AGENTS.md topology, runtime sections, benchmarking policy (frank-large is a user unit now) and the harness model-config section are corrected.
126 lines
5.4 KiB
C++
126 lines
5.4 KiB
C++
# Tunables for frank-large (kingjones777/Qwen3.8-Flash-Next-ROCmFP4-
|
|
# STRIX-GGUF on the kingjones30/ROCmFPX llama.cpp runtime, Dankclaw,
|
|
# Strix Halo gfx1151, unified memory).
|
|
#
|
|
# Runtime: kingjones30/ROCmFPX (fork of charlie12345/ROCmFPX with the
|
|
# qwen4exp-on-rocmfpx-d3ca537 patch applied — the model card's pinned
|
|
# runtime: ROCmFP4 tensor types AND the qwen4exp architecture in one
|
|
# tree; stock llama.cpp and charlie's fork alone cannot load this GGUF).
|
|
# Built per the card recipe:
|
|
# cmake -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1151 -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release
|
|
# at /home/dank/GitPackages/kingjones-ROCmFPX/build.
|
|
# Replaced the agentionai ROCmFP4-FAST imatrix deployment (charlie's
|
|
# build-qwen38 runtime) on 2026-08-30.
|
|
#
|
|
# Model: Qwen3.8-Flash-Next base (qwen4exp MoE: 512 experts / 10 used,
|
|
# 48 layers = 12 attention + 36 SSM, QSA indexer, hyper-connections, PLE
|
|
# at layer 1), Q4_0_ROCMFP4_STRIX (file_type 105), 113.47 GiB single
|
|
# file. STRIX is the top quality tier: PLE table at Q8_0 (50.66 GiB),
|
|
# token embeddings + lm head at Q6_K. The PLE table NEVER enters GPU
|
|
# memory — it streams from the file through the OS page cache. Two hard
|
|
# card constraints:
|
|
# 1. mmap MUST stay enabled (default) — --no-mmap forces the 50.66 GiB
|
|
# table into anonymous memory and the cgroup killer takes the
|
|
# process with nothing in the server log (only dmesg).
|
|
# 2. Do NOT pin the PLE tensor to CPU with -ot — measured gen fell
|
|
# ~23 -> 13.4 tok/s; the kernel streams it better.
|
|
# NOTE: the card's own build_attn_qsa still calls ggml_fill on the
|
|
# F16-cast kq mask (the path that aborted our charlie build with
|
|
# --flash-attn on before scripts/patches/qwen4exp-qsa-f32-mask.patch).
|
|
# If a clean kingjones-tree build aborts graph build with
|
|
# GGML_ASSERT(a-type == GGML_TYPE_F32), port that fix (F32 base mask +
|
|
# cast at the attention call) into this tree and rebuild.
|
|
#
|
|
# WARNING: do not name any variable TEMP, HOST, or GPU_MAX_HEAP_SIZE. The ROCm HIP runtime reads those bare env vars (see the 2026-08-13 TEMP
|
|
# incident). llama.cpp reads --host/--port/--temp as CLI flags, never as
|
|
# env vars.
|
|
|
|
# kingjones30/ROCmFPX runtime binary (card recipe build).
|
|
LLAMA_BIN=/home/dank/GitPackages/kingjones-ROCmFPX/build/bin/llama-server
|
|
|
|
# Model package from
|
|
# https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF
|
|
# Layout: single unsharded GGUF, text-only (the repo ships no mmproj;
|
|
# the vision tower below is borrowed from the agentionai FAST package —
|
|
# same base model, f16 — kept only if it loads clean, drop
|
|
# MMPROJ_PATH if it does not).
|
|
MODEL_DIR=/home/dank/models/kingjones-Qwen3.8-Flash-Next-ROCmFP4-STRIX
|
|
MODEL_FILE=Qwen3.8-Flash-Next-Q4_0-ROCmFP4-STRIX.gguf
|
|
MMPROJ_PATH=/home/dank/models/agentionai-Qwen3.8-Flash-Next-ROCmFP4-FAST/mmproj/mmproj-Qwen3.8-Flash-Next-f16.gguf
|
|
|
|
# Qwen-Sharp chat template (tracked in the repo, staged on the host). The
|
|
# Sharp template drives thinking on by default (medium effort); the server
|
|
# emits reasoning in DeepSeek format so clients receive reasoning_content
|
|
# separately instead of literal thinking tags in content.
|
|
CHAT_TEMPLATE_FILE=/home/dank/serverAppConfigs/scripts/chat-template.jinja
|
|
CHAT_TEMPLATE_KWARGS='{"enable_thinking":true,"preserve_thinking":true,"preserve_reasoning":true}'
|
|
|
|
# Alias + network.
|
|
ALIAS=frank-large
|
|
BIND_ADDR=0.0.0.0
|
|
LISTEN_PORT=7770
|
|
|
|
# Serving: 401408-token context, TWO slots (parallel 2), batch 4096 /
|
|
# ubatch 512, 16+16 threads, f16 KV, 16 context checkpoints, 8 GiB
|
|
# prompt cache. --fit off: auto-fit segfaults on this model's
|
|
# hyper-connection/indexer config; -ngl 999 puts every layer on the
|
|
# SVM-backed GPU pool. ubatch 512 matches the card's re-measurement
|
|
# (-ub 1024/2048/4096 showed no effect; -t 32 vs 16 is noise).
|
|
#
|
|
# CTX_SIZE=401408 / PARALLEL=2: carried over from the FAST deployment
|
|
# where it loaded clean (~74 s, health 200). The card measures the full
|
|
# 262144 window at ~71.7 GiB GTT at load on the same 128 GB board; QSA
|
|
# caps KV growth so the extra window is cheap. KV footprint scales
|
|
# with the 12 attention layers only. Verify load on first STRIX boot.
|
|
CTX_SIZE=401408
|
|
PARALLEL=2
|
|
|
|
BATCH_SIZE=4096
|
|
UBATCH_SIZE=512
|
|
NUM_THREADS=16
|
|
THREAD_BATCH=16
|
|
CACHE_TYPE_K=f16
|
|
CACHE_TYPE_V=f16
|
|
CTX_CHECKPOINTS=16
|
|
CACHE_RAM=8192
|
|
SLOT_SAVE_PATH=/home/dank/serverAppConfigs/scripts/slot-state
|
|
SPLIT_MODE=none
|
|
FIT=off
|
|
NGL=999
|
|
FLASH_ATTN=on
|
|
|
|
# Sampling (card instruct table, non-thinking).
|
|
TEMPERATURE=0.7
|
|
TOP_K=20
|
|
TOP_P=0.8
|
|
MIN_P=0.0
|
|
PRESENCE_PENALTY=1.5
|
|
|
|
# Reasoning on (Sharp template drives it; preserve_thinking + preserve_reasoning
|
|
# keep the reasoning trail in the conversation). DeepSeek format projects the
|
|
# reasoning into the API's reasoning_content field instead of literal thinking
|
|
# tags.
|
|
REASONING=on
|
|
REASONING_FORMAT=deepseek
|
|
|
|
# Strix Halo unified memory + native gfx1151.
|
|
HSA_OVERRIDE_GFX_VERSION=11.5.1
|
|
|
|
VERBOSITY=4
|
|
|
|
|
|
# Speculative decoding: disabled. The card's Usage block ships no spec
|
|
# flags. The Flash-Next MTP heads do not load on this loader (requires
|
|
# per-layer blk.N.hc_attn_norm; every head carries only blk.48 —
|
|
# verified 3x on build-qwen38). DRAFT_MODEL_* point at the retired
|
|
# agentionai FAST head and are unused while SPEC_TYPE=none.
|
|
DRAFT_MODEL_DIR=/home/dank/models/mtp-Qwen3.8-Flash-Next-FAST
|
|
DRAFT_MODEL_FILE=Qwen3.8-Flash-Next-MTP-ROCmFP4-FAST.gguf
|
|
SPEC_TYPE=none
|
|
SPEC_DRAFT_N_MAX=3
|
|
SPEC_DRAFT_N_MIN=0
|
|
SPEC_DRAFT_P_MIN=0.75
|
|
SPEC_DRAFT_NGL=999
|
|
SPEC_DRAFT_DEVICE=ROCm0
|
|
SPEC_DRAFT_TYPE_K=f16
|
|
SPEC_DRAFT_TYPE_V=f16 |