Files
serverAppConfigs/scripts/frank-default-small.env
T
Frank 24c5eb4e28 frank-default-small: KV K default f16 (no hadamard), V q6_0 + hadamard
K cache back to default f16 full precision with K_CACHE_HADAMARD=0;
V cache at q6_0 with V_CACHE_HADAMARD=1. Env, serve script, bats, and
KB updated.
2026-08-26 05:53:01 -07:00

110 lines
4.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tunables for frank-default-small (Ornith-1.5-35B-A3B CRACK Q8_0, MTP MoE,
# Dankserver, RTX 3090).
#
# Runtime: ik_llama.cpp llama-server (ikawrakow ik_llama.cpp, built
# 2026-08-26 from commit b166e269) on RTX 3090 24 GB; Ryzen 7 7700X; 62 GB
# RAM. Previous runtime was upstream llama.cpp b10121. MoE expert weights
# pinned to CPU with an explicit --override-tensor regex (not --n-cpu-moe).
# KV cache K q8_0 / V q5_0 with Hadamard transforms on both (see the KV
# section below). Split mode none (single GPU; graph would require 2+).
#
# Build flags (IK_FA note, see docs/LLM/ikllama-ornith-dankserver.md) must
# ALWAYS include: -DGGML_CUDA_FA_ALL_QUANTS=ON and -DGGML_IQK_FA_ALL_QUANTS=ON
# so the quantized + Hadamard KV cache combos compile into the CUDA/CPU FA
# kernels. Replacing the HauhauCS Qwen3.6-35B-A3B model on 2026-08-24.
# Switched to CRACK Q8_0 on 2026-08-26 (was Q6_K).
#
# 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). This box is NVIDIA/CUDA, but the rule keeps the env portable.
# Model files (Q8_0 CRACK GGUF + f16 mmproj vision encoder + MTP head bundled
# in the GGUF). Dealign2026-08-24.
MODEL_DIR=/home/dank/models/Ornith-1.5-35B-A3B-CRACK
MODEL_FILE=Ornith-1.5-35B-A3B-CRACK-Q8_0.gguf
MMPROJ_FILE=mmproj-Ornith-1.5-35B-A3B-f16.gguf
# ik_llama.cpp llama-server (built 2026-08-26 from ikawrakow/ik_llama.cpp @
# b166e269; CUDA 13.2, -DGGML_CUDA_FA_ALL_QUANTS=ON -DGGML_IQK_FA_ALL_QUANTS=ON,
# arch 86 for the RTX 3090). Uses the staged pip cu13 toolkit at
# /home/dank/cuda13-stage. Rollback: switch to
# /home/dank/llama.cpp/build/bin/llama-server (upstream b10121).
LLAMA_SERVER=/home/dank/ik_llama.cpp/build/bin/llama-server
# Qwen-Sharp chat template from peculiar-ragdoll (tracked in the repo,
# staged on the host).
# Source: https://huggingface.co/peculiar-ragdoll/Qwen-Sharp-Chat-Templates
CHAT_TEMPLATE_FILE=/home/dank/serverAppConfigs/scripts/chat-template.jinja
# Render the Qwen-Sharp template with the true Jinja engine (--jinja). Without
# it ik_llama falls back to built-in non-Jinja handlers and drops the custom
# template's thinking/image/tool formatting.
USE_JINJA=1
ALIAS=frank-default-small
BIND_ADDR=0.0.0.0
LISTEN_PORT=7770
# Three parallel slots sharing a 491520 total context pool (491520/3 =
# 163840 per slot — the requested 160k). With PARALLEL=3 ik_llama limits
# speculative decoding to a single slot, so SPEC stays none (MTP is also
# disabled). The 3 slots + 480k pool make the KV cache large, so expert
# weights are CPU-pinned for the cache to fit on the 24 GB card.
CTX_SIZE=491520
PARALLEL=3
# Speculative decoding: DISABLED. ik_llama limits spec to a single slot; at
# PARALLEL=3 a configured spec stage hard-exits at load. The low-parameter
# MoE (3B active of 35B) does not need it anyway. MTP is also disabled.
SPEC_TYPE=none
# Expert offload via explicit tensor override (replaces --n-cpu-moe). The Q8_0
# audit found ~1088 MiB of expert tensors per block (4 tensor × 272 MiB). Keep
# every final/output-adjacent block 35-40 on CUDA; full-attention blocks 3,7,
# 11,15,19,23 have no exps and are untouched by this regex. All other expert
# tensors are pinned to CPU. Buffer type "CPU" is the CPU buft on this host.
#
# 2026-08-26: PARALLEL=3 (CTX 160000) triples the KV cache, so the blocks
# that were moved back to CUDA for fused-MoE (27-34) are pinned to CPU again
# to free GPU. Blocks 35-40 stay on CUDA. If it boot-loops, move the next
# lower block into the CPU regex one at a time.
OVERRIDE_EXPERT='blk\.(0|1|2|4|5|6|8|9|10|12|13|14|16|17|18|20|21|22|24|25|26|27|28|29|30|31|32|33|34)\.ffn_(up|down|gate|gate_up)_(ch|)exps'
OVERRIDE_BUFT=CPU
# ik_llama --gpu-layers/-ngl does NOT accept the literal "all"; use 999 to
# mean "load as many layers as possible". Expert exps are pinned to CPU by
# OVERRIDE_EXPERT below.
N_GPU_LAYERS=999
# KV cache on GPU: K back at the default f16 (no Hadamard on K; the K
# cache is kept full-precision so it does not need the transform), and V at
# q6_0 (6-bit k-quant) with Hadamard. Flash-attention is on by default.
CACHE_TYPE_K=f16
CACHE_TYPE_V=q6_0
K_CACHE_HADAMARD=0
V_CACHE_HADAMARD=1
# Split mode: none. Dankserver has a single RTX 3090 and ik_llama requires
# >= 2 devices for split-mode graph ('It is not possible to use split mode
# graph with less than 2 devices' is a hard load error). none is correct
# here and still works with OVERRIDE_EXPERT CPU expert offload.
SPLIT_MODE=none
VERBOSITY=4
# Store context checkpoints in RAM to hold peak GPU memory down.
CTX_CHECKPOINTS=16
# Prefill batch sizing. ubatch 1024 is selected for reduced compute-memory
# pressure and predictable latency under the ngram-mod deployment.
BATCH_SIZE=4096
UBATCH_SIZE=1024
# Eager RAM load (expert weights on CPU; ~31 GB RAM).
NO_MMAP=1
# Sampling (Dealign Ornith model card, thinking-general).
TEMPERATURE=1.0
TOP_K=20
TOP_P=0.95
MIN_P=0.0
# Compute threads lowered to 8 so other processes keep a core.
THREADS=7
THREADS_HTTP=8