From 0ae923b879a78d0166224e36006d89b3af66cc24 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 2 Oct 2026 23:52:04 -0700 Subject: [PATCH] autoresearch arms: add D/E context arms (KV 4.05e9 = 2.00x under MTP3; E adds MNBT 4096 + util 0.99) --- scripts/autoresearch/frank-primary-arms.sh | 38 ++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/scripts/autoresearch/frank-primary-arms.sh b/scripts/autoresearch/frank-primary-arms.sh index 90caa3d..5093bea 100755 --- a/scripts/autoresearch/frank-primary-arms.sh +++ b/scripts/autoresearch/frank-primary-arms.sh @@ -72,18 +72,52 @@ OVER_C=( 'FRANK_PRIMARY_UTIL=0.95' ) +# D/E: the CONTEXT arms. Measured 2026-10-02 (arms run 20261002T233855Z): the +# KV pool is a hard byte request divided by a PER-TOKEN PRICE, and MTP raises +# that price because the drafter keeps its own KV per position: +# no spec: 3.15e9 / 398,658 tokens = 7,901 B/token (1.99x of 200,704) +# MTP3: 3.15e9 / 313,002 tokens = 10,064 B/token (1.56x) +# So arm C lost a fifth of the context to the drafter, not to util. Frank's +# contract is >=401,400 tokens over >=2 seqs = 2.00x of 200,704, which at +# 10,064 B/token costs 4.04e9 -> ask 4.05e9 (+0.83 GiB/rank). +# D is arm B with EXACTLY ONE variable changed (the KV bytes), so its result +# says whether the 4k-depth collapse (B 23.09 vs baseline 33.99) was KV or the +# batch shape. +KV401K='FRANK_PRIMARY_KV_BYTES=4050000000' +OVER_D=( + "FRANK_PRIMARY_SPEC='$SPEC3'" + "FRANK_PRIMARY_COMPCONFIG='$LADDER3'" + 'FRANK_PRIMARY_GEN_CONFIG='"'$GEN07'" + "$KV401K" +) +# E: D with C's max_num_batched_tokens (4096 — C is the only arm that did NOT +# collapse at 4k depth: 33.15 where B gave 23.09) and util 0.99, the value +# Frank asked about. 0.99 is affordable on paper — production at util 0.98 +# measures 30.37/34.21 GiB per card, 3.58 GiB physically unused — but it leaves +# only 0.32 GiB above the allowance while the CUDA-graph cost is an ANALYTIC +# estimate (C's was 1.47 GiB over 24 graphs), so it is measured, not assumed. +OVER_E=( + "FRANK_PRIMARY_SPEC='$SPEC3'" + "FRANK_PRIMARY_COMPCONFIG='$LADDER3'" + 'FRANK_PRIMARY_GEN_CONFIG='"'$GEN07'" + "$KV401K" + 'FRANK_PRIMARY_MNBT=4096' + 'FRANK_PRIMARY_UTIL=0.99' +) + arm_overlay() { case "$1" in baseline) ;; # the shipped env, no overlay B) printf '%s\n' "${OVER_B[@]}" ;; B2) printf '%s\n' "${OVER_B2[@]}" ;; C) printf '%s\n' "${OVER_C[@]}" ;; + D) printf '%s\n' "${OVER_D[@]}" ;; + E) printf '%s\n' "${OVER_E[@]}" ;; *) return 1 ;; esac } - if [ "${1:-}" = "--list" ]; then - printf 'baseline B B2 C\n' + printf 'baseline B B2 C D E\n' exit 0 fi