Files
esh-pfi-infrastructure/stacks/heretic2-charrp-reasoning/.env.example
T
vh dc3e47b3a2 feat(heretic2-charrp-reasoning): track the NVFP4+MTP reasoning seat
The char-rp-reasoning seat on ana-ml2 GPU0 — NEO-CODE Heretic2 27B at modelopt
NVFP4 with a grafted BF16 MTP head, ~77 tok/s via qwen3_5_mtp spec-decode,
replacing the retired GGUF seat. It had been running untracked.

Includes conf/mtp-workaround/sitecustomize.py, which is not optional: vLLM
0.24.0 does not propagate modelopt exclude_modules to the spec-decode DRAFT
model, so the BF16 MTP head gets quantized and the engine dies at load. The
shim force-skips mtp.* in is_layer_skipped. Both the mount and PYTHONPATH are
load-bearing.

Adds the two files house convention expects and the directory lacked: a
.env.example naming every knob (all values are the compose defaults; the live
host overrides only the three VRAM ones) and a README that points at
docs/runbooks/heretic2-nvfp4-mtp-seat.md rather than duplicating it.

No secrets: API_KEY is empty by default and the real .env stays on the host.
2026-08-18 23:53:59 -07:00

33 lines
1.4 KiB
Bash

# heretic2-charrp-reasoning on ana-ml2. Real .env lives on the host, never committed.
#
# Every value below is the compose default — this file exists to name the knobs,
# not to change them. The live host currently sets only the bottom three.
# --- image / container ---
REASONING_IMAGE=vllm/vllm-openai:v0.24.0
REASONING_CONTAINER=vllm-charrp-reasoning-nvfp4
REASONING_PORT=8018
# --- model ---
REASONING_MODEL=/tank/aimodels/heretic2-nvfp4-work/heretic2-modelopt-nvfp4-mtp
# Speculative tokens for the qwen3_5_mtp draft head. This is the MTP seat's whole
# point (~77 tok/s, ~1.3x over the retired GGUF seat); dropping it to 0 disables
# spec-decode and the workaround mount stops mattering.
SPEC_TOKENS=3
# --- auth ---
# vLLM bearer token. Empty = unauthenticated on the LAN, which is how the other
# ana-ml2 seats run; set it if this seat is ever exposed beyond the fleet.
API_KEY=
# --- placement / VRAM (the three the host actually overrides) ---
# GPU0 is shared with vllm-aeon-gen (gen) and llama-charrp (char-rp). NVFP4 27B
# weights are ~26 GB + KV, so util is held low to fit the ~33 GB free alongside
# them — and that is why max-model-len is 32768 rather than the 256K the lighter
# Q5 GGUF seat managed. Raising either without rebalancing GPU0 will OOM the
# neighbours, not just this container.
REASONING_GPU_ID=0
REASONING_GPU_MEM_UTIL=0.30
REASONING_MAX_MODEL_LEN=32768
REASONING_MAX_NUM_SEQS=4