diff --git a/stacks/gemma4-charrp/.env.example b/stacks/gemma4-charrp/.env.example index 3b3a8ab..d03e982 100644 --- a/stacks/gemma4-charrp/.env.example +++ b/stacks/gemma4-charrp/.env.example @@ -37,6 +37,22 @@ GEMMA4_MODEL=/tank/aimodels/gemma4-26b-a4b-it-nvfp4 # 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