# Tunables for frank-default-large (Kairic Edge llama.cpp, dankclaw, # Strix Halo gfx1151). # # Runtime: the llama-server built from the pinned ciru-ai/ROCmFPX tag # kairic-edge-qwen38-27b-v1 (Kairic Edge IU4 lane: PromptForge + Dual # View + native RDNA 3.5 IU4 matrix compute), built against the private # TheRock ROCm 7.15 SDK kept in the retired ling3-ciru venv. # Model: jcbtc/Qwen3.8-27B-IU4-Kairic-Edge, four-artifact payload # (GGUF + FFN/GDN/GDN-Output .pfs sidecars, 26.05 GiB total). Alias # frank-default-large, port 52625. See docs/kairic-edge.md. # # This runtime replaced the retired v3 CIRU ActiveFPX PromptForge # service. The v3 model files remain in # /home/dank/models/CIRU-Qwen3.8-27B-ActiveFPX-v3/ and the v3 binary in # /home/dank/ciru-qwen38/ROCmFPX/build-promptforge/ for rollback. # # WARNING: do not name any variable TEMP, HOST, or GPU_MAX_HEAP_SIZE. The # ROCm HIP runtime reads those bare env vars (2026-08-13 TEMP incident). # llama.cpp reads --host/--port/--temp as CLI flags, never as env vars. # Kairic Edge llama-server binary (pinned tag build; see # docs/kairic-edge.md for the build runbook and binary identity). LLAMA_BIN=/home/dank/ciru-qwen38/ROCmFPX-kairic/build-kairic/bin/llama-server # Model files (Kairic Edge four-artifact payload). The sidecars are # accelerator-specific prepacked copies of selected weights; they are # required, not optional. MODEL_DIR=/home/dank/models/Kairic-Qwen3.8-27B-IU4-Edge MODEL_FILE=Qwen3.8-27B-IU4-Kairic-Edge.gguf FFN_PFS=Qwen3.8-27B-Kairic-IU4-FFN.pfs GDN_PFS=Qwen3.8-27B-Kairic-IU4-GDN.pfs GDN_OUTPUT_PFS=Qwen3.8-27B-Kairic-IU4-GDN-Output.pfs # ROCm 7.15 SDK paths (inside the retired ling3-ciru venv). The serve # script exports ROCM_PATH and LD_LIBRARY_PATH from these so the 7.15 # libraries precede any system ROCm 7.2.4. 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=52625 # Serving: the qualified Kairic profile (pinned runner defaults). Full # native 262144 context, 1 slot, batch 2048 / ubatch 512, 16 target / # 32 batch threads, f16 target and draft KV, 32 context checkpoints, # 8192 MiB prompt cache with idle-slot persistence. Context checkpoints # are required for this hybrid recurrent model; do not remove CTX_CHECKPOINTS # while the prompt cache is enabled. CTX_SIZE=262144 PARALLEL=1 # Batch profile: the pinned runner's qualified sizes (2048/512). Benchmarks # on 2026-08-22: ubatch 512 gives the fastest prefill at every depth # (524/485/323 t/s at 8k/16k/64k vs 266/258/203 for ubatch 4096) with no # decode difference. Do not raise ubatch without re-benching prefill. BATCH_SIZE=2048 UBATCH_SIZE=512 TARGET_THREADS=16 BATCH_THREADS=32 CACHE_TYPE_K=f16 CACHE_TYPE_V=f16 CTX_CHECKPOINTS=32 CACHE_RAM=8192 # Native MTP draft (depth 4, p_min 0, backend sampling) — the pinned # runner's explicit MTP4. SPEC_DRAFT_N_MAX=4 SPEC_DRAFT_N_MIN=0 SPEC_DRAFT_P_MIN=0.0 SPEC_DRAFT_P_SPLIT=0.10 # Sampling: the pinned runner keeps the deterministic evaluation # profile (temp 0 / top-p 1 / top-k 0 / min-p 0) as the server default. # Clients override per request; the model card recommends Qwen live # values for ordinary chat (temp 0.7, top-p 0.8, top-k 20, min-p 0, # presence_penalty 1.5). # # Reasoning: the qualified profile runs reasoning off, but production # chat runs --reasoning on --reasoning-format deepseek (thinking goes to # message.reasoning_content, matching the retired v3 service) with # --reasoning-budget -1 (unrestricted) and chat_template_kwargs # preserve_thinking=true (preserve thinking tokens across turns). # # FASTGREEDY mode: set to 1 for fast-greedy benchmark (card's default profile) # FASTGREEDY=0: production chat config (reasoning on, argmax off) # FASTGREEDY=1: reasoning off, LLAMA_TARGET_GREEDY_ARGMAX_FASTPATH=1, deterministic # sampler. Mirrors the card's 'fast greedy (default)' benchmark config. # 2026-08-22: flipped to 1 for real (operator decision). NOTE: the fast # greedy path rejects non-greedy requests (temp != 0, top_k > 1, penalties, # reasoning budgets) with 400. Chat clients must send temperature 0. FASTGREEDY=1 # For fast-greedy bench: set FASTGREEDY=1 above. This flips to: reasoning off, # argmax fastpath=1, sampling defaults. Deploy with # FASTGREEDY=1 ./deploy.sh dankclaw to test the fast-greedy profile.