start script - #7
Conversation
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com> add setup stuff inside main train Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com> add rl launcher Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com> fix device placements Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com> udpate logger Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
apaz-cli
left a comment
There was a problem hiding this comment.
Looks great. Is there maybe a way to launch it that's less verbose? Maybe it could default to use all your GPUs?
| process = subprocess.Popen(cmd) | ||
| result = process.wait() | ||
| if result != 0: | ||
| pytest.fail(f"Process {result} failed {result}") |
There was a problem hiding this comment.
Assume you meant to print something else?
There was a problem hiding this comment.
uh no that's what I wanted to print haha
There was a problem hiding this comment.
oh realized the problem lol
There was a problem hiding this comment.
I will blame @Jackmin801 for not catching this when doing prime https://github.com/PrimeIntellect-ai/prime/blob/d57965b04574262815a174246707afd9615eed0c/tests/test_torchrun/test_train.py#L78
There was a problem hiding this comment.
That line was added in a PR without review: PrimeIntellect-ai/prime#3
PrimeIntellect-ai/prime@f34f9c9
Blame reverted
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
yeah great idea, I added an option to get auto gpu |
Signed-off-by: Sami Jaghouar <sami.jaghouar@gmail.com>
Jackmin801
left a comment
There was a problem hiding this comment.
lgtm! abit hacky in some places but agi will refactor them in 2026 so no worries
| process = subprocess.Popen(cmd) | ||
| result = process.wait() | ||
| if result != 0: | ||
| pytest.fail(f"Process {result} failed {result}") |
- enabled_losses=None now validated as the full term list, so >1 echo term per env is caught at config time instead of at rollout time. [review #6] - loss_overrides keys validated against `losses`; non-echo overrides rejected. [#7] - warn (don't fail) when prompt-role echo is configured with renderer=None (MITO), where prompt_attribution is unavailable so it would silently no-op. [#8] - token_export: add echo_mask/echo_weight columns + export sequences trained only via echo (gate on loss_mask OR echo_mask). [#9] - doc notes: echo CE uses the rollout temperature (scale alpha to compensate, kept as-is); negative alpha is intentional (suppresses tokens). [#1, #10] - tests for the new config validators. Deferred to a follow-up pass (per the review): full per-sample primary routing / rl-disable [#2b] + the <=1-primary validation it enables [#5], and the multi-run losses fingerprint [#3]. Not run locally; ruff + py_compile clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…sft warning - Drop sft/opd presets from the losses DSL: they dispatch to fixed cores by training_mode and are not loss-list terms, so listing them (or naming them in enabled_losses) was a silent no-op footgun. `losses` now holds rl/custom + echo only. [review #2] - Gate the zero-advantage filter on the env's rl primary being active (ZeroAdvantageFilter.primary_active, wired to train_sink._primary_enabled), so echo-only / rl-disabled envs (where advantage is irrelevant — e.g. group_size=1) aren't dropped on zero advantage. Default always-active → unchanged without echo. [review #1] - The MITO prompt-role-echo warning also fires for training_mode='sft' (which forces renderer=None after the warning's original check). [review #7] - tests for sft-type rejection + the filter gate. Left as-is: trainer.loss migration (intentional break), backfill prompt-role echo (best-effort, known), docs DPPO clipping (pre-existing main doc bug). Not run locally; ruff + py_compile clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ug review #7) Packing used a bespoke inline branch for reference_logprobs that initialized an empty list when the bin had none and a later sample did (mis-aligning, not back-filling existing_len zeros) and had no branch for the reverse case. Use the existing _extend_optional_token_field helper, exactly as overlays do — back-fills the bin on first appearance and pads when a later sample lacks it. Latent today (reference_logprobs is OPD-only and batches don't pack mixed training_mode, so mixed presence is unreachable), but reference scoring is going general in the OPD/reference follow-up, so get the foundation right here. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
example:
output
on 8xH100
using 4 gpus for training and 4 gpus for inference