SIGN IN SIGN UP

ci(convergence): fix gemma4 eval setup and re-baseline Qwen3-MoE (#3493)

* ci(convergence): fix gemma4 eval setup and re-baseline Qwen3-MoE

gemma4: the launcher body runs on every node, so the lm-eval clone, venv
build and full vLLM eval ran once per node. In pipeline 61927701 the clone
failed on 2 of 4 nodes with an auth challenge; those tasks exited non-zero
and srun tore down the eval the healthy nodes were still running. Gate the
eval phase to node 0 and retry the clone.

qwen3: #3359 cut this recipe's MoE aux-loss backward scale 64x (8 ->
cp/microbatches=1/8), leaving the step-0 forward identical but changing
every optimizer step after it: final train loss 0.6625 -> 0.5832, val
0.7993 -> 0.7008, IFEval 0.6137 -> 0.6580. Re-baseline from CI 61927701.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Abhishree <abhishreetm@gmail.com>

* ci(convergence): widen Qwen3-MoE baseline to 0.6380 pending confirmation

Set below the observed post-#3359 score of 0.6580 so the gate spans both the
pre- and post-fix observations while the new score is confirmed on a second run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Abhishree <abhishreetm@gmail.com>

* ci(convergence): make the downstream-eval gate one-sided

The gate is a regression detector, so only a drop should fail it. Both #3028
(fused RoPE) and #3359 (MoE aux-loss scaling) were correctness fixes that raised
these scores and failed the two-sided gate from above.

PASS iff score > baseline - k*stderr. Keeps Qwen3-MoE at 0.6380 (floor 0.5972).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Abhishree <abhishreetm@gmail.com>

* ci(convergence): trim the Qwen3-MoE baseline comment

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Abhishree <abhishreetm@gmail.com>

* ci(convergence): pin vllm to 0.26.0

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Abhishree <abhishreetm@gmail.com>

* ci(convergence): pin lm-eval's transformers to 5.14.1

This is the transformers in lm-eval's own venv, which resolves separately
from the container's; the training stack is unaffected.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Abhishree <abhishreetm@gmail.com>

---------

Signed-off-by: Abhishree <abhishreetm@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
A
Abhishree Thittenamane committed
e8a163b97ff979d7bf779e0509eda20ce1c3557d
Parent: 1077546
Committed by GitHub <noreply@github.com> on 8/12/2026, 4:34:28 AM