# gemma4-charrp — char-rp seat on ana-ml2 GPU0. Real .env lives on the host.

# ⚠ GPU0 IS SHARED WITH `vllm-gen`. gen runs at --gpu-memory-utilization 0.43
# but actually holds ~45.6 GiB of the 94.97 GiB card — that flag sizes the KV
# cache and does NOT cover CUDA context, graphs and non-torch overhead. The
# predecessor seat sat at 0.51, the pair summed to 0.94, and on 2026-08-24 it
# stopped fitting and crash-looped 13 times with
# `torch.OutOfMemoryError: ... 195.19 MiB is free`.
#
# 0.47 keeps ~4.8 GiB of real margin. This model's weights are only ~15.3 GiB
# (NVFP4) against the predecessor's ~19.5 GiB, so the same budget buys MORE KV
# cache than before, not less. Raising this means lowering gen's in the same
# change — and check the real numbers, not the flags:
#   nvidia-smi --query-compute-apps=pid,used_memory --format=csv
GEMMA4_GPU_MEM_UTIL=0.47

# Native context. config.json declares max_position_embeddings 262144, same as
# the outgoing seat, so this is a straight-across swap on context too.
GEMMA4_MAX_MODEL_LEN=262144
GEMMA4_MAX_NUM_SEQS=32

# ⚠ THE NVFP4 QUANT, NOT THE BF16. /tank/aimodels/gemma4-26b-a4b-it-bf16 is the
# QLoRA tuning base and is 48.10 GiB of weights — it does not fit beside gen.
GEMMA4_MODEL=/tank/aimodels/gemma4-26b-a4b-it-nvfp4
#
# ACTIVATION-AXIS CONTROL, for one-off benching — swap this line, recreate:
#   GEMMA4_MODEL=/tank/aimodels/gemma4-26b-a4b-it-nvfp4a16
# Same NVFP4 weights and the same compressed-tensors loader, but 16-bit
# activations.
#
# ⚠ THE ORIGINAL MOTIVATION FOR THIS CONTROL WAS RETRACTED — see the README's
# "Superseded claims" section. The A16 run itself HELD and is the reason this
# path is documented: activation precision is close to free on this battery,
# every other task identical across builds. But the "12% contradiction
# detection" number that prompted it was an artifact of an ill-posed benchmark
# item, not a model property. Keep the path; do not repeat the reasoning.
# Two minutes down each way; port and both aliases are unchanged, so no
# consumer config moves.
#
# ⚠ Only prithivMLmods/gemma-4-26B-A4B-it-NVFP4A16 is genuinely A16.
# bg-digitalservices and ManniX-ITA both publish repos NAMED "NVFP4A16" whose
# config.json declares input_activations num_bits 4. Check the field, not the
# name, before ever substituting a different repo.
#
# ⚠⚠ THE A16 BUILD ALSO SHIPS A STALE CHAT TEMPLATE — the control run MUST
# override it or it moves two axes instead of one:
#   --chat-template /tank/aimodels/gemma4-26b-a4b-it-nvfp4/chat_template.jinja
# Verified by hash on 2026-08-24: upstream google/gemma-4-26B-A4B-it is 390
# lines, the A4 build's is 389 and byte-identical to it once trailing newlines
# are normalised, and the A16 build's is 266 and is NOT. The thinking machinery
# is built differently too — upstream and A4 set
# `enable_thinking | default(false)` at line 186, the A16 template has no such
# set — and its tokenizer_config response_schema has no `thinking` property.
# It was quantized from an older revision. Served with its own template the two
# arms would render DIFFERENT PROMPTS, and a score delta could be the template
# rather than the activations.
# Safe to override because the tokenizers agree: vocab identical at 262,144
# entries, added_tokens identical. Same template over the same vocab renders
# the same token ids.

GEMMA4_PORT=8016
GEMMA4_GPU_ID=0
GEMMA4_CONTAINER=vllm-gemma4-charrp

# Same value as every other vLLM seat on this host — the gateway presents it.
API_KEY=
