Skip to content

chore(apertus): recipe registration, minimizer override fix, and CI repairs - #13

Merged
Alvorecer721 merged 11 commits into
mainfrom
chore/apertus-recipes-cleanup
Aug 14, 2026
Merged

chore(apertus): recipe registration, minimizer override fix, and CI repairs#13
Alvorecer721 merged 11 commits into
mainfrom
chore/apertus-recipes-cleanup

Conversation

@Alvorecer721

Copy link
Copy Markdown
Owner

Summary

  • fix the recipe minimizer to preserve _override_: true sections: _prune_equal (tools/config_cli.py#L243-L258 at 150054886) pruned keys equal to the base even inside replace-don't-merge blocks, so minimize-check's --in-place remediation silently deleted required keys from the omni ALP recipe — including the recipe's own warning comment about exactly this contract (recipe L35 at 103bc8896). Result: crash at launch (KeyError: 'max_input_seq_length') plus silent loss of the MATH-500 CoT prompt wrapper via the no-warning guard at nemo_rl/data/utils.py#L254. Fixed in d0f50c1 with direct + semantic round-trip regression tests, and the recipe regenerated by the fixed tool
  • disable checkpointing in the omni smoke recipe (e95befe): the inherited end-of-training save OOMs a single quad-GH200 node (raylet killed 5 workers mid-save, Slurm job 3075160); the full recipe shards optimizer state across 8 nodes
  • restore the two load-bearing # pragma: allowlist secret comments (503d96e) stripped from dpo-apertus1p5-8b-maxmin-megatron.yaml#L24 and grpo-apertus1p5-8b-1n4g-megatron-probe.yaml#L14
  • register the Apertus surface with the repo gates: nightly test-suite scripts and recipe registration (6df2fcb), the Ruff/recipe-minimization lint pass (b893145), math500 dataset pyrefly entry (fd76b82), complete missing-entry reporting in CI (f736b2c), and the verifier environment entry (51f5603)

Upstream provenance

Validation

  • minimize-check passes on all examples/configs/recipes/{llm,vlm} YAMLs on this branch
  • the omni smoke recipe's full defaults chain expands cleanly on this branch
  • expanded config of the regenerated omni recipe is byte-identical to its pre-minimization semantics (config_cli.py expand at 150054886^ vs the regenerated file, verified 2026-08-13)
  • detect-secrets 1.5.0 with the CI baseline reproduces green on both previously-flagged recipes (was: exit 1 on the two lines linked above)
  • omni smoke recipe trains 3/3 steps and exits clean with the checkpoint override (Slurm job 3076512, COMPLETED 0:0, 28:44); the prior run reproduced the checkpoint OOM this fixes (job 3075160)
  • container unit suite for the touched surfaces: 83 passed, incl. the new override round-trip tests (test_async_utils.py + test_config_cli.py, Slurm job 3076335)

Assembly notes

🤖 Generated with Claude Code

test_all_recipe_yamls_accounted_for_in_test_suites has failed since the
Apertus recipes landed (216 yamls vs 205 driver scripts), and with maxfail=1
that failure truncated the unit suite: everything after it had never run.

Follows the upstream convention rather than scoping the test out:

- Prunes two recipes nothing references, -gym-reasoning-alp-ngram and
  -gym-reasoning-overlong.
- Renames the probe family to satisfy the algo-prefix rule the same module
  enforces (test_all_recipes_start_with_algo_hyphen): probe-grpo-apertus1p5-*
  becomes grpo-apertus1p5-8b-1n4g-megatron-probe[-*], with `probe` as a
  modifier. Recipe defaults chains, the three CSCS launchers and the docs
  follow the rename.
- Adds a driver per remaining recipe under tests/test_suites/llm/, named to
  match its yaml because common.env derives the config path from the script
  name, and lists them in disabled.txt: their model, tokenizer and container
  paths are CSCS-specific, so nightly automation cannot run them. They are
  certified by the launchers in infra/slurm/cscs/ instead.

common.env now skips the audio-dependency install under TEST_DRYRUN. The
accounting test invokes every script that way as a cheap config check, but
scripts whose filename matches (omni|audio|avqa|vlm) were triggering an apt
install that needs root; ours are text-reasoning recipes on an omni checkpoint,
so the name matched while the workload never needed it.

Recipes and drivers are now 181 to 181, all 181 scripts dry-run clean, and the
unit suite runs to completion for the first time: 1243 passed, 14 skipped.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
(cherry picked from commit feb9234)
Apply the configured Ruff and recipe-minimization rules and retain the
xIELU registration import explicitly.

(cherry picked from commit 1500548, omitting
the rollouts truncation-metric hunk that ships in PR #12 as a298c69 and the
vllm0251 probe-script hunks whose file arrives with PR #12)

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
Add the now-clean Math500 dataset module to Pyrefly's enforced project-includes list.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
(cherry picked from commit ea1ae31)
Register the CI-confirmed clean RL prompt dataset and make the whitelist counter safe under bash -e so one run reports every missing entry.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
(cherry picked from commit dd35ff1)
Add the final x86 CI-confirmed zero-error module to the Pyrefly project whitelist.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
(cherry picked from commit b2b204d)
Keep replacement subtrees intact so minimize-check cannot strip required values from _override_ sections. Add direct and semantic round-trip coverage, then regenerate the affected Apertus omni recipe.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
(cherry picked from commit 7b137e9)
Mark the two CSCS checkpoint paths as reviewed detect-secrets false positives so the changed-files CI scan passes.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
(cherry picked from commit e3ea186)
The 3-step smoke inherits checkpointing.enabled from the 8-node recipe, and the mandatory end-of-training save OOMs the single node: the fp32 distributed-optimizer state of the 8B model cannot be host-staged without the 8-way sharding the full recipe provides (raylet killed the workers mid-save, job 3075160).

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
(cherry picked from commit 1bef52a)
@github-actions github-actions Bot added documentation Improvements or additions to documentation CI labels Aug 14, 2026
Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
@Alvorecer721 Alvorecer721 changed the title chore(apertus): recipe registration, override-aware minimization, and CI gate repairs chore(apertus): recipe registration, minimizer override fix, and CI repairs Aug 14, 2026
The repo root now points CSCS users at the quickstart instead of only the
generic cluster docs, and the quickstart advertises the shared vllm-0.25.1
certified image and its shipped EDF.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
@Alvorecer721
Alvorecer721 marked this pull request as ready for review August 14, 2026 05:38
Resolves the rename conflict on the async probe recipe: the old-named
probe-grpo-apertus1p5-8b-1n4g-megatron-async.yaml (deleted by the recipe
renaming in this branch) had gained vllm_cfg.tensor_parallel_size: 2 from
71ad3bc on main; that TP2-async certification override is ported into the
renamed grpo-apertus1p5-8b-1n4g-megatron-probe-async.yaml.

Signed-off-by: Alvorecer721 <yixuan.xu@ai.ethz.ch>
@Alvorecer721
Alvorecer721 merged commit f6e6185 into main Aug 14, 2026
8 checks passed
@Alvorecer721
Alvorecer721 deleted the chore/apertus-recipes-cleanup branch August 27, 2026 15:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant