Swept ncmoe(30..40) x ubatch(256..4096) on the RTX 3090 (Qwen3.6-35B-A3B Q6_K_P, pp16384/tg512, fit-target 0). Key findings: - Generation depends only on ncmoe: 40.9 (ncmoe40) .. 51.1 (ncmoe30); ubatch/batch do not affect decode at all. - Prefill + graph VRAM scale with ubatch; logical batch is irrelevant. - VRAM model (peak + 11.44GiB KV pool + 2.2GiB overhead) reproduces the historical OOMs: ncmoe32-ub2048 sums ~24.4GiB > 24. Chosen state: ncmoe 32 (8 expert layers on GPU), batch 8192, ubatch 1024. gen ~48.7 t/s (+7% vs prior ncmoe 35), prefill ~766 t/s, ~1.0GiB headroom. Alternates: ncmoe34-ub2048 (gen 46.4, pp 1221, 1.5GiB) for prefill-heavy; ncmoe32-ub768 (1.3GiB) if headroom matters most. Docs: new frank-default-small-benchmark.md; synced deployment.md + specs.
49 lines
2.1 KiB
Bash
49 lines
2.1 KiB
Bash
# Tunables for frank-default-small (HauhauCS Q6_K_P, ngram-mod spec, dankserver)
|
||
# Runtime: llama-server b10108; RTX 3090 24GB; Ryzen 7 7700X; 62GB RAM.
|
||
MODEL_DIR=/home/dank/models
|
||
ALIAS=frank-default-small
|
||
HOST=0.0.0.0
|
||
PORT=7770
|
||
# 4 parallel slots x 200000 ctx each = 800000 total context pool.
|
||
# (Increased from 3×200k to add a 4th parallel stream.)
|
||
CTX_SIZE=800000
|
||
PARALLEL=4
|
||
# Spec: ngram-mod. n_min=48, n_max=64, n_match=24 (defaults). 8 expert
|
||
# layers back on GPU; 32 on CPU. Batch 8192 / ubatch 1024.
|
||
SPEC_TYPE=ngram-mod
|
||
NGRAM_MOD_N_MIN=48
|
||
NGRAM_MOD_N_MAX=64
|
||
NGRAM_MOD_N_MATCH=24
|
||
# Expert offload: 32 of 40 layers keep MoE weights on CPU; remaining
|
||
# 8 layers have their expert weights resident on GPU for faster routing.
|
||
# Benchmark-chosen (see frank-default-small-benchmark.md): max decode at
|
||
# the headroom that stays above the historical OOM boundary.
|
||
N_CPU_MOE=32
|
||
N_GPU_LAYERS=all
|
||
# KV cache on GPU, K quantized to q8_0, V stays f16 (user-locked decision).
|
||
CACHE_TYPE_K=q8_0
|
||
CACHE_TYPE_V=f16
|
||
# Store SWA checkpoints in RAM to hold peak GPU memory down for the
|
||
# larger batch/ubatch (leaves headroom for ctx-checkpoints operation).
|
||
CTX_CHECKPOINTS=4
|
||
# Larger batches / ubatch for big prefill workloads.
|
||
# ubatch 1024 (benchmark-chosen): decode is flat vs ubatch; 1024 frees
|
||
# compute-graph VRAM to afford ncmoe 32 while keeping prefill ~766 t/s.
|
||
BATCH_SIZE=8192
|
||
UBATCH_SIZE=1024
|
||
# Load the model into RAM rather than lazy-mapping it. The MoE experts live on
|
||
# CPU, so eager RAM load avoids page faults during decode (uses ~31GB RAM).
|
||
NO_MMAP=1
|
||
# Compute threads lowered to 7 so other processes on the box keep a core.
|
||
# Sampling settings — per HauhauCS Qwen3.6-35B-A3B model card.
|
||
# Thinking-general: temp=1.0, top_p=0.95, top_k=20, min_p=0.
|
||
# Clients may override per-request; these are the server-side defaults.
|
||
# WARNING: do not name this variable TEMP. The ROCm HIP runtime reads the
|
||
# TEMP environment variable (JIT kernel-cache dir); TEMP=1.0 made the HIP
|
||
# runtime SEGV (NULL unref) during model load on Aug 13 2026.
|
||
TEMPERATURE=1.0
|
||
TOP_K=20
|
||
TOP_P=0.95
|
||
MIN_P=0.0
|
||
THREADS=7
|
||
THREADS_HTTP=8 |