feat(frank-archon): raise the pinned host pool; the campaign inherits the step
frank-archon.env: HOST_POOL_MIB 49,152 -> 66,560 a rank (tp x 65 GiB against the 246 GiB the box has), and the TTM pair 162,000/204,800 -> 197,000/224,000 — the floor the bats ledger formula computes at the new pool. The pool is the KV lever under the budget resolver: every MiB pinned in host RAM lowers the expert floor on the card one-for-one and the cache takes it. scripts/run-qwen38-bf16.sh: the campaign's private FRANK_QWEN38_MNBT (1,024) is gone — MNBT now comes from FRANK_ARCHON_MAX_BATCHED_TOKENS, production's 2,048 and the widest step the quantised expert file tiers stream. That 1,024 was PR #80's answer to a starved cache; the pool is the fix, a narrow step was the symptom's disguise, and a per-mode literal measures a shape nothing serves. tests: frank_archon_unit greps the new pool value; qwen38_reference's SHAPE fixture carries it, and the two MNBT-override tests become the inheritance assertion (every mode's argv quotes the value the env file owns) plus the calib assertions. vault: the shape block moves to the new numbers and the Eras table gains the row for the era this replaces. The 2026-10-20 boot-ledger line stays as the old era's record until the new boot's ledger replaces it.
This commit is contained in:
1 parent
a3ff55efd8
commit
255796b3dc
5 files changed
+52
-51
No files matched your search
+27
-29
@@ -66,18 +66,14 @@
|
||||
# is 10,554 tokens by the engine's own count (chars/3.6 for this file, not the
|
||||
# chars/4.97 this repo measured on the K3 corpus).
|
||||
#
|
||||
# The step size is ONE value for the recording and every scoring pass:
|
||||
# FRANK_QWEN38_MNBT, default 1,024. The gate's whole claim is that the reference,
|
||||
# the served iq4r and every arm rode one shape, so the ceiling is set by the
|
||||
# TIGHTEST payload the gate boots rather than by the bf16 reference: the quantised
|
||||
# expert FILE tiers (the served iq4r, the arms) stream only at MNBT<=2048 and
|
||||
# refuse the widened form above it. 2,048 was still the wrong default on this
|
||||
# payload, because the arena the engine charges for a step comes straight out of
|
||||
# the cache — 1.08 GiB at a 2,048-token step, 504.39 MiB at a 1,024-token one, and
|
||||
# the experts keep their share either way. At 1,024 the cache is 866 MiB: 24,300
|
||||
# tokens, which scores every one of the 197 documents (longest 11,970).
|
||||
# Calibration keeps the wide 65,536 — grams are not logits, nothing downstream is
|
||||
# compared against a step size, and that is where a big step pays.
|
||||
# The step size is ONE value for the recording and every scoring pass, and it is
|
||||
# the value frank-archon.env owns (FRANK_ARCHON_MAX_BATCHED_TOKENS, 2,048): the
|
||||
# quantised expert FILE tiers (the served iq4r, the arms) stream only at
|
||||
# MNBT<=2048 and refuse the widened form above it, and the arena a step costs the
|
||||
# card comes straight out of the cache — 1.08 GiB at a 2,048-token step against
|
||||
# 504.39 MiB at 1,024. The corpora are cut to the window the boot ledger reports,
|
||||
# which is what the pool raise is for (frank-archon.env: HOST_POOL_MIB); a narrow
|
||||
# step was never the fix, it was the symptom's disguise.
|
||||
#
|
||||
# usage: scripts/run-qwen38-bf16.sh kldref|calib|score RAD OUT [--dry-run] [--image REF]
|
||||
# (RAD and OUT are score's two positionals: RAD is a container under the models
|
||||
@@ -93,11 +89,10 @@
|
||||
# knobs: FRANK_QWEN38_MODELS (the dir mounted at /models), FRANK_QWEN38_RAD (the
|
||||
# bf16 container, kldref only), FRANK_QWEN38_CAMPAIGN (holds kld-ref/ and
|
||||
# calib/), FRANK_QWEN38_KLD_CORPUS, FRANK_QWEN38_TPL (the template copy
|
||||
# the container reads through /models), FRANK_QWEN38_LOG_DIR, and
|
||||
# FRANK_QWEN38_MNBT — the step size every mode boots at (default
|
||||
# 1,024: the file tier's ceiling is 2,048 and production runs there, but on
|
||||
# this payload the arena charged for a wider step is taken from the cache),
|
||||
# the slot count inherited as FRANK_ARCHON_MAX_SEQS — no per-mode literals —
|
||||
# the container reads through /models), FRANK_QWEN38_LOG_DIR, and the step
|
||||
# and slot counts inherited as FRANK_ARCHON_MAX_BATCHED_TOKENS /
|
||||
# FRANK_ARCHON_MAX_SEQS — no per-mode literals (the audit law: a mode that
|
||||
# carries its own step measures a shape nothing serves) —
|
||||
# and FRANK_QWEN38_MAX_MODEL_LEN — the window every mode boots at (32,768;
|
||||
# see the corpus census above, and raise it together with the corpus).
|
||||
# kldref refuses (exit 2) when the longest record of the corpus it is about to
|
||||
@@ -173,15 +168,18 @@ if ! [[ "$MAX_SEQS" =~ ^[0-9]+$ ]]; then
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# ONE step size for both logits modes. The file tier streams only at <=2,048 and
|
||||
# the gate scores file-tier payloads (the served iq4r, the arms) against the
|
||||
# reference, so the reference is recorded at a step the payloads can meet — never
|
||||
# two numbers that a KL between them would have to forgive. 1,024 rather than the
|
||||
# 2,048 ceiling: on this payload the arena charged for the step is the cache's only
|
||||
# remaining supplier, and 1,024 is the rung that funds every corpus document.
|
||||
MNBT="${FRANK_QWEN38_MNBT:-1024}"
|
||||
# ONE step size for every mode, quoted from the file that owns it — the audit
|
||||
# law for a radiance rig is to inherit the proven number, not to carry a
|
||||
# campaign-private value: production's FRANK_ARCHON_MAX_BATCHED_TOKENS is 2,048,
|
||||
# the widest step the quantised expert FILE tiers can stream (above it the
|
||||
# engine charges a 10.65 GiB arena to the card and the load refuses), and the
|
||||
# arena it charges comes out of the cache — so the corpora are cut to the window
|
||||
# the boot ledger reports, never the other way round. The 1,024 default this
|
||||
# script carried was PR #80's answer to a starved cache; the pool raise
|
||||
# (frank-archon.env: 66,560 MiB a rank) is the fix, not a narrower step.
|
||||
MNBT="${FRANK_ARCHON_MAX_BATCHED_TOKENS:?FRANK_ARCHON_MAX_BATCHED_TOKENS must be set}"
|
||||
if ! [[ "$MNBT" =~ ^[0-9]+$ ]]; then
|
||||
echo "REFUSED: FRANK_QWEN38_MNBT must be a token count (got: $MNBT)" >&2
|
||||
echo "REFUSED: FRANK_ARCHON_MAX_BATCHED_TOKENS must be a token count (got: $MNBT)" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
@@ -236,10 +234,10 @@ MOUNTS=(-v "$MODELS:/models:ro")
|
||||
TAPENV=()
|
||||
case "$MODE" in
|
||||
kldref)
|
||||
# Recording is prefill-only over four slots at the campaign's single step size
|
||||
# — 1,024, not production's 2,048 (frank-archon.env: FRANK_ARCHON_MAX_SEQS=4,
|
||||
# FRANK_ARCHON_MAX_BATCHED_TOKENS=2048): the wider step costs the cache the
|
||||
# room the corpus needs. Corpus read-only, record dir rw.
|
||||
# Recording is prefill-only over four slots at the campaign's single step
|
||||
# size, which is frank-archon.env's FRANK_ARCHON_MAX_BATCHED_TOKENS (2,048) —
|
||||
# see the header: the file tier's ceiling and the slot count both come from
|
||||
# the file that owns them. Corpus read-only, record dir rw.
|
||||
ARGS+=(--model "$MODEL_IN"
|
||||
--kld-record /data/kld-ref --kld-corpus /data/kld.jsonl
|
||||
--max-num-seqs "$MAX_SEQS" --max-num-batched-tokens "$MNBT")
|
||||
|
||||
Reference in new issue
Block a user