# cyberprev-seat — hotdogs/Qwen3.8-27B-abliterated-cyber-preview, fv-ml1 GPU 0, :8025. # Copy to .env on the host at /opt/docker/compose/cyberprev-seat/.env. # ── Image ─────────────────────────────────────────────────────────────────── # Same pinned nightly mog-sec and sentinel-r3 run. Not :latest — pin it, so a seat # restart cannot silently change the engine under a measured configuration. CYBER_IMAGE=vllm/vllm-openai:nightly-e9d1398d9edfd90fcc1cf783805240e3effec013 API_KEY=replace-me # ── Placement ─────────────────────────────────────────────────────────────── # GPU 0, co-resident with mog-sec. Took over :8025 from the retired sentinel-r3 seat. CYBER_GPU_ID=0 CYBER_PORT=8025 CYBER_CONTAINER_NAME=vllm-cyberprev # ── Model ─────────────────────────────────────────────────────────────────── # In-house mixed quant, compressed-tensors (NOT modelopt_fp4). # ⚠ Quantized from /tank/aimodels/cyberprev-bf16-FIXED, not the raw download. The raw # hotdogs export ships 850/1199 body tensors with a TRIPLED `language_model.` prefix # (upstream bug) -> quant of the raw source is gibberish that passes every structural # check. cyberprev-bf16-fixed is the name-repaired source (verified tensor-for-tensor # against qwen38-27b-uncensored-bf16). See docs/pfi/model-quantization-playbook.md. CYBER_MODEL=/tank/aimodels/cyberprev-nvfp4-mixed-v2 CYBER_QUANT=compressed-tensors # ⚠ Its OWN name. Do not reuse `sentinel-r3` — that seat is retired and its gateway # aliases are deliberately left to 404 rather than repointed at different weights. CYBER_SERVED_NAME=cyberprev-27b CYBER_SERVED_NAME_THINK=cyberprev-27b-thinking # ── Memory ────────────────────────────────────────────────────────────────── # 0.40 of the card, sharing GPU 0 with mog-sec. KV pinned in bytes (8 GiB) so the # figure is reproducible regardless of what else is resident at start time. CYBER_GPU_MEM_UTIL=0.40 CYBER_KV_CACHE_MEMORY=8589934592 # ⚠ 163840, NOT native 262144. Inherited from mog-sec, which crashed five times # learning that the KV pool's capacity and the card's processing depth are different # numbers. Raising this requires a deep-prefill probe with a NON-REPEATING prompt on # THIS checkpoint — a repeated prompt hashes to cached blocks and never prefills deep. CYBER_MAX_MODEL_LEN=163840 CYBER_MAX_NUM_SEQS=16 CYBER_MAX_NUM_BATCHED_TOKENS=4096 CYBER_KV_CACHE_DTYPE=fp8 # ── Speculative decoding ──────────────────────────────────────────────────── # One var, whole JSON — the two shapes are not interchangeable (dflash needs a # "model", MTP must not have one). # DFlash2 : {"method": "dflash", "model": "/drafter", "num_speculative_tokens": 7} # MTP : {"method": "qwen3_5_mtp", "num_speculative_tokens": 3} # dflash k=7 is the default, carried from the sentinel measurement (2.40 vs 2.18). # ⚠ Re-measure on THIS body before trusting it: cyberprev is ABLITERATED, and # abliteration is precisely what can desync an MTP head. Gate MTP on a measured # acceptance of >=~40%, never on an assumption. CYBER_SPEC_CONFIG={"method": "dflash", "model": "/drafter", "num_speculative_tokens": 7} CYBER_REASONING_PARSER=qwen3 CYBER_REASONING_EFFORT=medium CYBER_ALLOC_CONF=