# Tunables for frank-default-small (ornith-ai/Ornith-1.5-35B-A3B-FP8, # qwen3_5_moe hybrid MoE, Dankserver, RTX 3090). # # Runtime: FreeToken v0.1.2 (edge-native MoE serving engine). # Installed via uv into /home/dank/freetoken/.venv (CPython 3.12). # FreeToken keeps expert weights in host RAM with an LRU GPU cache; # KV is paged with radix prefix sharing. Only the full-attention # layers page KV (~20 KiB/token); the GDN layers use constant-size # per-sequence state (mamba slot pool). # # Model: ornith-ai/Ornith-1.5-35B-A3B-FP8 (HuggingFace safetensors, # compressed-tensors FP8, ~35 GB on disk). Ornith-1.5 is a # self-improvement RL-trained coding/agentic model built on Qwen3.5 + # Gemma4; ~35B total / ~3B active (A3B), same qwen3_5_moe arch and the # same ~35 GB FP8 weight mass as the Huihui FP8 it replaces, so the # FreeToken memory/pool plan carries unchanged. Native 262144 context. # Reasoning model: each assistant turn opens with a block, # surfaced separately via the qwen3 reasoning parser (REASONING=on). # The RTX 3090 has no FP8 tensor cores, so FP8 runs via upcast (as # Huihui did). Replaced batsclamp/Huihui-Qwen3.6-35B-A3B-abliterated- # FP8 on 2026-09-01. # # RISK: this is compressed-tensors PER-CHANNEL FP8 (weights strategy # "channel"), the one FP8 layout the runbook flags as a FreeToken v0.1.2 # loader bug. Load is being verified live; 37 GB fits RAM so a failure is # a clean crash-loop, not a swap-thrash. The BF16 sibling # (ornith-ai/Ornith-1.5-35B-A3B, ~70 GB) does NOT fit this 62 GB box — # never fall back to it (that is the 2026-09-01 Thomson outage mode). # # Chat template: the checkpoint's stock Qwen template is WRONG for this # model (its own model card says so and ships a modified # chat_template.jinja for the agentic benchmarks). The fleet standard is # the Qwen-Sharp template (scripts/chat-template.jinja, repo-tracked and # shared with frank-default-large) — see CHAT_TEMPLATE_FILE below. # # Pool sizing: GPU budget (~17.6 GiB after weights + fixed caches) is # split MoE-first. MOE_CACHE_SIZE pins resident expert slots; NUM_TOKENS # pins the KV pool. At 2048 slots / 453005 tokens the split is ~20% # residency and ~8.6 GiB KV. Live resize via # `ft ctl cache --kv N --moe M` can grow KV by shrinking MoE without # restart (the reverse requires a restart). # # 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 directory (safetensors checkpoint, ~35 GB, compressed-tensors FP8). MODEL_DIR=/home/dank/models/ornith-1.5-35b-a3b-fp8 # Chat template: the fleet Qwen-Sharp template (repo-tracked), shared with # frank-default-large. The checkpoint's stock template mis-serializes # reasoning for this model; the Sharp template renders the trail and # the Qwen3.5-family tool-call shape correctly. CHAT_TEMPLATE_FILE=/home/dank/serverAppConfigs/scripts/chat-template.jinja # FreeToken venv (uv-managed CPython 3.12, ft CLI, flashinfer, torch+cu130). FT_VENV=/home/dank/freetoken/.venv CUDA_HOME_DIR=/home/dank/freetoken/.venv/lib/python3.12/site-packages/nvidia/cu13 ALIAS=frank-default-small BIND_ADDR=0.0.0.0 LISTEN_PORT=7770 # Expert residency: 2048 of 10240 total expert instances (20%). # Each slot ~3 MiB → ~6.0 GiB VRAM for the MoE cache. MOE_CACHE_SIZE=2048 # KV pool: 453005 tokens (~8.6 GiB at ~20 KiB/token). # Covers 4 concurrent sessions at ~113k unique context each # (more with radix prefix sharing for common prefixes). NUM_TOKENS=453005 # Max concurrent decoding requests (also caps mamba slot allocation). MAX_RUNNING_REQUESTS=4