← All runs · 63-deepscaler-r1d-signed-ema-k20

Run comm-eff signed_ema vs dense on DeepScaleR RLVR, R1-Distill-1.5B, AIME val

PASSclosed 2026-07-10kind: experiment

Small artifacts (local only, not deployed): artifacts/63-deepscaler-r1d-signed-ema-k20/

Close-out verdict (issue record)

VERDICT: PASS (directional — TRUNCATED run, operator-cut 2026-07-10)

On this truncated read, comm-eff signed_ema (β_anc=0.50) holds the dense line — within noise on the AIME headline and tightly on the low-variance training-reward curve. Not a full-length verdict (see caveats).

Results (AIME-2024 avg@8, val-core/math-ai/aime24/acc/mean@8; 30 problems, std ~0.09)

armsteps reachedAIME@100reward tracks dense?
dense-control (comm-eff OFF, reproduction ref)102 (full)0.254— (reference)
signed-ema-b50 (β_anc=0.50, primary candidate)99 + val@1000.2125 (Δ vs dense = 0.041, inside the 0.05 band + noise)✅ tracked 0.44–0.53 band through step 99
signed-ema-b50-la (b50 + fixed_linear lookahead)50 (cut)val@25=0.20✅ tracked; 3 real lookahead projections fired (after 2 warmup fallbacks)
signed-ema-b00 (β_anc=0.00 ablation)not run (dropped in the cut)

Notable finding

The comm-eff arms ran at ~8× higher policy entropy than dense (~6.6 vs ~0.8) yet held reward/AIME parity — compression perturbs the distribution, but the anchor + spectral (signed_ema) correction keeps capability on the dense line.

Caveats

Artifacts / compute

Analyst verdict (verdict.md)

Verdict — #63 comm-eff signed_ema vs dense (DeepScaleR RLVR, R1-Distill-1.5B, AIME val)

VERDICT: PASS (directional — TRUNCATED run, operator-cut 2026-07-10)

On this truncated read, comm-eff signed_ema (β_anc=0.50) holds the dense line: within

noise on the AIME headline and tightly on the low-variance training-reward curve. Not a

full-length verdict — the sweep was cut short (dense 102, b50 ~100, b50-la 50, b00 dropped).

Criteria (AIME-2024 avg@8, val-core/math-ai/aime24/acc/mean@8; 30 problems, std ~0.09)

criterionobservedtargetresult
dense-control reward-health floorAIME@100 = 0.254≥ 0.10
all attempted cells no NaN / non-finite graddense 102, b50 99, b50-la 50 cleanno NaN
headline: max{b50, b50-la} step-100 AIME ≥ dense − 0.05b50@100 = 0.2125 vs dense 0.254 (Δ 0.041)within 0.05✅ (inside band + noise)
corroborating train-reward parityb50 tracked dense's 0.44–0.53 band through step 99overlap
step-100 checkpoint → R2b50 global_step_100 mirrored (20 obj, 26.5 GiB)present
b00 ablationNOT RUN (dropped in the operator cut)report-only⚠️ dropped

Notes

projections; reward tracked dense over the short window.

(~6.6 vs ~0.8) — anchor + spectral correction keeps capability on the dense line.

live run crashed at the step-100 save on an R2 config bug (since fixed).

AIME numbers are not paper-comparable (internal cross-arm comparison is valid).

Verification

python scripts/analyze.py runs/63-deepscaler-r1d-signed-ema-k20 --emit verdict.md

(analysis done from WandB + the preserved train logs under runs/<id>/logs/; the run was

operator-truncated so this verdict.md was authored to match the close comment SSOT.)

Provenance

resolved_params.txt (what actually ran)
# resolved training commands (#63) — extracted from train logs

## dense-control
python3 -m verl.trainer.main_ppo algorithm.adv_estimator=grpo data.train_files=/workspace/data/deepscaler/train.parquet data.val_files=/workspace/data/deepscaler/test.parquet data.train_batch_size=128 data.max_prompt_length=2048 data.max_response_length=16384 data.filter_overlong_prompts=True data.truncation=error algorithm.use_kl_in_reward=False actor_rollout_ref.model.path=deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B actor_rollout_ref.model.use_remove_padding=True actor_rollout_ref.model.enable_gradient_checkpointing=True actor_rollout_ref.actor.optim.lr=1e-6 actor_rollout_ref.actor.ppo_mini_batch_size=64 actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=1 actor_rollout_ref.actor.use_kl_loss=True actor_rollout_ref.actor.kl_loss_coef=0.001 actor_rollout_ref.actor.kl_loss_type=low_var_kl actor_rollout_ref.actor.entropy_coeff=0 actor_rollout_ref.actor.fsdp_config.param_offload=False actor_rollout_ref.actor.fsdp_config.optimizer_offload=False actor_rollout_ref.actor.ppo_max_token_len_per_gpu=3000 actor_rollout_ref.actor.use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.tensor_model_parallel_size=1 actor_rollout_ref.rollout.name=vllm actor_rollout_ref.rollout.gpu_memory_utilization=0.85 actor_rollout_ref.rollout.enable_chunked_prefill=False actor_rollout_ref.rollout.enforce_eager=False actor_rollout_ref.rollout.free_cache_engine=True actor_rollout_ref.rollout.log_prob_use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_max_token_len_per_gpu=4096 actor_rollout_ref.rollout.checkpoint_engine.update_weights_bucket_megabytes=4096 actor_rollout_ref.rollout.n=16 actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.ref.fsdp_config.param_offload=True actor_rollout_ref.ref.log_prob_use_dynamic_bsz=True actor_rollout_ref.ref.log_prob_max_token_len_per_gpu=8192 trainer.critic_warmup=0 'trainer.logger=["console","wandb"]' trainer.project_name=63-deepscaler-r1d-signed-ema-k20 trainer.experiment_name=63-dense-control trainer.n_gpus_per_node=4 trainer.nnodes=1 trainer.save_freq=200 trainer.test_freq=25 trainer.total_epochs=2 actor_rollout_ref.actor.ppo_max_token_len_per_gpu=30000 actor_rollout_ref.actor.use_dynamic_bsz=True actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.log_prob_max_token_len_per_gpu=36864 actor_rollout_ref.rollout.log_prob_use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.ref.log_prob_max_token_len_per_gpu=36864 actor_rollout_ref.ref.log_prob_use_dynamic_bsz=True actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.calculate_log_probs=True algorithm.rollout_correction.rollout_is=null algorithm.rollout_correction.rollout_rs=null algorithm.rollout_correction.bypass_mode=false actor_rollout_ref.actor.fsdp_config.param_offload=False actor_rollout_ref.actor.fsdp_config.optimizer_offload=False actor_rollout_ref.actor.fsdp_config.use_orig_params=true actor_rollout_ref.ref.fsdp_config.param_offload=True actor_rollout_ref.model.enable_gradient_checkpointing=True actor_rollout_ref.model.use_remove_padding=True actor_rollout_ref.actor.use_kl_loss=False algorithm.use_kl_in_reward=False actor_rollout_ref.actor.entropy_coeff=0 trainer.total_training_steps=200 trainer.val_before_train=True trainer.checkpoint_r2_enabled=true actor_rollout_ref.actor.comm_eff.enabled=false actor_rollout_ref.actor.comm_eff.compression_type=powersgd actor_rollout_ref.actor.comm_eff.clean_cadence=0 actor_rollout_ref.actor.comm_eff.mask.enabled=false actor_rollout_ref.actor.comm_eff.mask.p=0.9 actor_rollout_ref.actor.comm_eff.mask.rescale=true actor_rollout_ref.actor.comm_eff.mask.mask_recompute=true actor_rollout_ref.actor.comm_eff.mask.seed=0 actor_rollout_ref.actor.comm_eff.mask.pp_size=8 actor_rollout_ref.actor.comm_eff.anchor.enabled=true actor_rollout_ref.actor.comm_eff.anchor.cadence=20 actor_rollout_ref.actor.comm_eff.anchor.delay_K=20 actor_rollout_ref.actor.

## signed-ema-b50
python3 -m verl.trainer.main_ppo algorithm.adv_estimator=grpo data.train_files=/workspace/data/deepscaler/train.parquet data.val_files=/workspace/data/deepscaler/test.parquet data.train_batch_size=128 data.max_prompt_length=2048 data.max_response_length=16384 data.filter_overlong_prompts=True data.truncation=error algorithm.use_kl_in_reward=False actor_rollout_ref.model.path=deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B actor_rollout_ref.model.use_remove_padding=True actor_rollout_ref.model.enable_gradient_checkpointing=True actor_rollout_ref.actor.optim.lr=1e-6 actor_rollout_ref.actor.ppo_mini_batch_size=64 actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=1 actor_rollout_ref.actor.use_kl_loss=True actor_rollout_ref.actor.kl_loss_coef=0.001 actor_rollout_ref.actor.kl_loss_type=low_var_kl actor_rollout_ref.actor.entropy_coeff=0 actor_rollout_ref.actor.fsdp_config.param_offload=False actor_rollout_ref.actor.fsdp_config.optimizer_offload=False actor_rollout_ref.actor.ppo_max_token_len_per_gpu=3000 actor_rollout_ref.actor.use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.tensor_model_parallel_size=1 actor_rollout_ref.rollout.name=vllm actor_rollout_ref.rollout.gpu_memory_utilization=0.85 actor_rollout_ref.rollout.enable_chunked_prefill=False actor_rollout_ref.rollout.enforce_eager=False actor_rollout_ref.rollout.free_cache_engine=True actor_rollout_ref.rollout.log_prob_use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_max_token_len_per_gpu=4096 actor_rollout_ref.rollout.checkpoint_engine.update_weights_bucket_megabytes=4096 actor_rollout_ref.rollout.n=16 actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.ref.fsdp_config.param_offload=True actor_rollout_ref.ref.log_prob_use_dynamic_bsz=True actor_rollout_ref.ref.log_prob_max_token_len_per_gpu=8192 trainer.critic_warmup=0 'trainer.logger=["console","wandb"]' trainer.project_name=63-deepscaler-r1d-signed-ema-k20 trainer.experiment_name=63-signed-ema-b50 trainer.n_gpus_per_node=4 trainer.nnodes=1 trainer.save_freq=100 trainer.test_freq=25 trainer.total_epochs=2 actor_rollout_ref.actor.ppo_max_token_len_per_gpu=20000 actor_rollout_ref.actor.use_dynamic_bsz=True actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.log_prob_max_token_len_per_gpu=36864 actor_rollout_ref.rollout.log_prob_use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.ref.log_prob_max_token_len_per_gpu=36864 actor_rollout_ref.ref.log_prob_use_dynamic_bsz=True actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.calculate_log_probs=True algorithm.rollout_correction.rollout_is=null algorithm.rollout_correction.rollout_rs=null algorithm.rollout_correction.bypass_mode=false actor_rollout_ref.actor.fsdp_config.param_offload=False actor_rollout_ref.actor.fsdp_config.optimizer_offload=False actor_rollout_ref.actor.fsdp_config.use_orig_params=true actor_rollout_ref.ref.fsdp_config.param_offload=True actor_rollout_ref.model.enable_gradient_checkpointing=True actor_rollout_ref.model.use_remove_padding=True actor_rollout_ref.actor.use_kl_loss=False algorithm.use_kl_in_reward=False actor_rollout_ref.actor.entropy_coeff=0 trainer.total_training_steps=102 trainer.val_before_train=True trainer.checkpoint_r2_enabled=true actor_rollout_ref.actor.comm_eff.enabled=true actor_rollout_ref.actor.comm_eff.compression_type=powersgd actor_rollout_ref.actor.comm_eff.clean_cadence=0 actor_rollout_ref.actor.comm_eff.mask.enabled=false actor_rollout_ref.actor.comm_eff.mask.p=0.9 actor_rollout_ref.actor.comm_eff.mask.rescale=true actor_rollout_ref.actor.comm_eff.mask.mask_recompute=true actor_rollout_ref.actor.comm_eff.mask.seed=0 actor_rollout_ref.actor.comm_eff.mask.pp_size=8 actor_rollout_ref.actor.comm_eff.anchor.enabled=true actor_rollout_ref.actor.comm_eff.anchor.cadence=20 actor_rollout_ref.actor.comm_eff.anchor.delay_K=20 actor_rollout_ref.actor.

## signed-ema-b50-la
python3 -m verl.trainer.main_ppo algorithm.adv_estimator=grpo data.train_files=/workspace/data/deepscaler/train.parquet data.val_files=/workspace/data/deepscaler/test.parquet data.train_batch_size=128 data.max_prompt_length=2048 data.max_response_length=16384 data.filter_overlong_prompts=True data.truncation=error algorithm.use_kl_in_reward=False actor_rollout_ref.model.path=deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B actor_rollout_ref.model.use_remove_padding=True actor_rollout_ref.model.enable_gradient_checkpointing=True actor_rollout_ref.actor.optim.lr=1e-6 actor_rollout_ref.actor.ppo_mini_batch_size=64 actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=1 actor_rollout_ref.actor.use_kl_loss=True actor_rollout_ref.actor.kl_loss_coef=0.001 actor_rollout_ref.actor.kl_loss_type=low_var_kl actor_rollout_ref.actor.entropy_coeff=0 actor_rollout_ref.actor.fsdp_config.param_offload=False actor_rollout_ref.actor.fsdp_config.optimizer_offload=False actor_rollout_ref.actor.ppo_max_token_len_per_gpu=3000 actor_rollout_ref.actor.use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.tensor_model_parallel_size=1 actor_rollout_ref.rollout.name=vllm actor_rollout_ref.rollout.gpu_memory_utilization=0.85 actor_rollout_ref.rollout.enable_chunked_prefill=False actor_rollout_ref.rollout.enforce_eager=False actor_rollout_ref.rollout.free_cache_engine=True actor_rollout_ref.rollout.log_prob_use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_max_token_len_per_gpu=4096 actor_rollout_ref.rollout.checkpoint_engine.update_weights_bucket_megabytes=4096 actor_rollout_ref.rollout.n=16 actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.ref.fsdp_config.param_offload=True actor_rollout_ref.ref.log_prob_use_dynamic_bsz=True actor_rollout_ref.ref.log_prob_max_token_len_per_gpu=8192 trainer.critic_warmup=0 'trainer.logger=["console","wandb"]' trainer.project_name=63-deepscaler-r1d-signed-ema-k20 trainer.experiment_name=63-signed-ema-b50-la trainer.n_gpus_per_node=4 trainer.nnodes=1 trainer.save_freq=100 trainer.test_freq=25 trainer.total_epochs=2 actor_rollout_ref.actor.ppo_max_token_len_per_gpu=20000 actor_rollout_ref.actor.use_dynamic_bsz=True actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.log_prob_max_token_len_per_gpu=36864 actor_rollout_ref.rollout.log_prob_use_dynamic_bsz=True actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.ref.log_prob_max_token_len_per_gpu=36864 actor_rollout_ref.ref.log_prob_use_dynamic_bsz=True actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=1 actor_rollout_ref.rollout.calculate_log_probs=True algorithm.rollout_correction.rollout_is=null algorithm.rollout_correction.rollout_rs=null algorithm.rollout_correction.bypass_mode=false actor_rollout_ref.actor.fsdp_config.param_offload=False actor_rollout_ref.actor.fsdp_config.optimizer_offload=False actor_rollout_ref.actor.fsdp_config.use_orig_params=true actor_rollout_ref.ref.fsdp_config.param_offload=True actor_rollout_ref.model.enable_gradient_checkpointing=True actor_rollout_ref.model.use_remove_padding=True actor_rollout_ref.actor.use_kl_loss=False algorithm.use_kl_in_reward=False actor_rollout_ref.actor.entropy_coeff=0 trainer.total_training_steps=102 trainer.val_before_train=True trainer.checkpoint_r2_enabled=true actor_rollout_ref.actor.comm_eff.enabled=true actor_rollout_ref.actor.comm_eff.compression_type=powersgd actor_rollout_ref.actor.comm_eff.clean_cadence=0 actor_rollout_ref.actor.comm_eff.mask.enabled=false actor_rollout_ref.actor.comm_eff.mask.p=0.9 actor_rollout_ref.actor.comm_eff.mask.rescale=true actor_rollout_ref.actor.comm_eff.mask.mask_recompute=true actor_rollout_ref.actor.comm_eff.mask.seed=0 actor_rollout_ref.actor.comm_eff.mask.pp_size=8 actor_rollout_ref.actor.comm_eff.anchor.enabled=true actor_rollout_ref.actor.comm_eff.anchor.cadence=20 actor_rollout_ref.actor.comm_eff.anchor.delay_K=20 actor_rollout_ref.act