# Tunables for frank-default-small (lamianlbe/Qwen3.6-35B-A3B-Uncensored- # HauhauCS-Aggressive-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: lamianlbe/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-fp8 # (HuggingFace safetensors, ~37.5 GB on disk). HauhauCS "Aggressive" # uncensored finetune of Qwen3.6-35B-A3B — same qwen3_5_moe arch as the # Huihui FP8 it replaces (40 layers: 10 full-attention + 30 GDN, 256 # experts / 8 used, 2 KV heads × 128 dim, native 262144 context) and the # same ~35 GB FP8 weight mass, so the FreeToken memory/pool plan carries # unchanged. Quantized to compressed-tensors BLOCK-fp8 (e4m3, dynamic # group-128 activations, 128×128 weight blocks) with the standard # per-expert tensor layout (mlp.experts.{N}.gate_proj/up_proj/down_proj # + .weight_scale) that FreeToken's MoE loader reads — the layout the # Ornith compressed-tensors checkpoint lacked. Also ships a BF16 visual # encoder + MTP module (both in the quant "ignore" list; text-only # serving ignores them). The RTX 3090 has no FP8 tensor cores, so FP8 # runs via upcast. Replaced batsclamp/Huihui-...-FP8 on 2026-09-01. # # NOTE (loader risk): compressed-tensors block-fp8 is not the modelopt # block-fp8 the runbook lists as ✅ — it shares the block layout and the # per-expert naming but carries a different quant_method. Load is # verified live; 37.5 GB fits RAM so a failure is a clean exit, never a # swap-thrash. # # Chat template: the checkpoint ships its own chat_template.jinja (the # format this finetune was trained on); FreeToken reads it from the model # directory — no override. The fleet Qwen-Sharp template is deliberately # NOT forced here: applying a template the model was not trained on risks # format drift on an uncensored finetune. To force Sharp, set # CHAT_TEMPLATE_FILE=/home/dank/serverAppConfigs/scripts/chat-template.jinja. # # 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, ~37.5 GB, compressed-tensors block-fp8). MODEL_DIR=/home/dank/models/hauhaucs-qwen36-35b-a3b-aggressive-fp8 # 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