Files
vh d28a371049 fix(gen-seat): AEON W4A4 was the defect — purged; mixed FP8-attn build is primary gen
Root cause of the multi-day degeneration hunt, operator-confirmed: the AEON
NVFP4 W4A4 quant (sakamakismile/Qwen3.8-27B-AEON-ULTIMATE-UNCENSORED-NVFP4,
full W4A4 incl. attention) went degenerate ~15-20% of generations in real
multi-turn use and forced regenerates. MTP, prefix-caching, and the gateway
all merely AMPLIFIED it, which is why MTP-off, APC-off, and the vLLM #51113
fix each 'helped' a synthetic probe without fixing it -- three plausible
false root-causes, each passing one clean run then failing in real use.

The fix was the WEIGHTS: the in-house JonathanColetti/Heretic mixed
NVFP4+FP8 build (qwen38-27b-uncensored-nvfp4-mixed, FP8 attention not W4A4,
same base, same MTP) is coherent through long multi-turn with MTP ON. W4A4
*attention* was the defect; FP8 attention is not.

This commit:
- GEN_MODEL -> the mixed FP8-attn build (primary gen until DavidAU 3.8 lands)
- GEN_IMAGE pinned to vllm/vllm-openai:nightly-311b3513... (v0.27.2rc1.dev150,
  carries #51113; pinned by sha so it does not drift on the next pull)
- AEON weights PURGED from /tank (no-good), safety-checked not-in-use first
- playbook 3.8: the stochastic-W4A4-degeneration lesson + isolate-weights-early
  + do-not-declare-a-fix-from-one-probe (it validated three non-fixes)

AEON is re-pullable from HF if ever needed, but the operator ruled it no-good.
2026-08-17 00:59:50 -07:00
..

gen-seat — the fleet gen seat (ana-ml2 GPU0, :8015)

Serves qwen3.8-27b-uncensored (JonathanColetti/Qwen3.8-27B-Uncensored, Heretic-abliterated Qwen3.8-27B, vision-intact, 262K context) plus the -thinking served-name for the reasoning split.

Backs 7 LiteLLM aliases: gen, gen-reasoning, summarizer, summarizer-large, classifier, image-judge, qwen-image-bench. Treat any change here as fleet-wide.

  • Quant: in-house mixed-precision — NVFP4 W4A4 for layers 0-55 MLPs, FP8 W8A8 for attention / linear_attn / lm_head / layers 56-63 MLPs, FP8 KV. ~94.5 tok/s decode at bs=1, MTP n=3 @ ~48% acceptance.
  • Speculative decoding: qwen3_5_mtp, num_speculative_tokens=3 (measured optimum — see the quant service README).
  • Tunables: .env on the host. ⚠ it is mode 0600 / lkraven-owned, so every docker compose call against this stack needs sudo — without it compose cannot read .env, fails with permission denied, and leaves the old container running while appearing to have succeeded.

Pipeline, acceptance gate, and rollback

All of it — the recipe, the re:^mtp.* foot-gun, the benchmark harness, the GPU0 budget interaction with meromero-charrp, and the rollback command — lives in services/gen-seat-mixed-quant/README.md.

Deploy

scripts/deploy-stack.sh ana-ml2 gen-seat        # diffs vs live, prompts y/N
# on host:
ssh infra-ops@10.250.50.54
cd /opt/docker/compose/gen-seat && sudo docker compose up -d vllm-gen