Checkpoint
The root model-*.safetensors files contain the merged actor weights from training step 409 of 409. They load directly with Transformers:
import torchfrom transformers import AutoModelForCausalLM, AutoTokenizer model_id = "SriGoli0123/Qwen3-4B-Base-GRPO-641644-bs32"tokenizer = AutoTokenizer.from_pretrained(model_id)model = AutoModelForCausalLM.from_pretrained( model_id, torch_dtype=torch.bfloat16, device_map="auto",)
The merged export contains 4,022,468,096 bfloat16 parameters across 398 tensors. The final deterministic DAPO Math validation accuracy was 0.329 on 1,000 examples at step 409 (best during training: 0.345 at step 355).
Training setup
- Base model:
Qwen/Qwen3-4B-Base
- Base revision:
906bfd4b4dc7f14ee4320094d8b41684abff8539
- Dataset: DAPO Math 17K
- Training examples: 13,116
- Validation examples: 1,000
- Framework: VeRL (SriGoli-0123/verl-a100, branch
a100/ioher-mistake-judge, commit d169b69)
- Hardware: 4 NVIDIA A100 80GB GPUs (actor and SGLang rollout colocated)
- Objective: plain GRPO (
actor.ioh_sft_coef=0)
- Reward: Math-Verify symbolic equivalence, binary 0/1
- Seed: 42
- Epochs: 1
- Completed training steps: 409
- Exported checkpoint: step 409
- Validation frequency: every 5 steps
- Checkpoint frequency: every 10 steps and the final step
- Validation before training: disabled
Batching and sequence lengths
- Batch size (
data.train_batch_size): 32 prompts
- Rollouts per prompt (
rollout.n): 8
- Trajectories per step: 256
- Mini-batch size (
actor.ppo_mini_batch_size): 8 prompts (4 optimizer steps per training step)
- Micro-batch size per GPU (
actor.ppo_micro_batch_size_per_gpu): 2
- Log-prob micro-batch size per GPU (
rollout.log_prob_micro_batch_size_per_gpu): 2
- Dynamic batch size (
actor.use_dynamic_bsz, rollout.log_prob_use_dynamic_bsz): enabled (the per-GPU token budgets below determine the actual micro-batches)
- Max tokens per GPU (
actor.ppo_max_token_len_per_gpu, rollout.log_prob_max_token_len_per_gpu): 24,576
- PPO epochs (
actor.ppo_epochs): 1
- Max prompt length (
data.max_prompt_length): 2,048 tokens
- Max response length (
data.max_response_length): 4,096 tokens
GRPO configuration
- Advantage estimator: GRPO
- Policy loss: vanilla
- Loss aggregation: token mean
- Discount factor: 1.0
- Lower clipping ratio: 0.20
- Upper clipping ratio: 0.28
- Dual-clip coefficient: 3.0
- Entropy coefficient: 0
- Gradient clipping: 1.0
- KL loss coefficient: 0
- KL contribution to reward: disabled
Optimization
- Optimizer: PyTorch AdamW
- Learning rate:
1e-6
- Weight decay: 0.01
- Adam betas:
[0.9, 0.999]
- Learning-rate scheduler: constant
- Warm-up steps: 15
Distributed and rollout configuration
- Actor strategy: four-way FSDP1
- Model precision: bfloat16
- Parameter offloading: disabled
- Optimizer offloading: disabled
- Gradient checkpointing: enabled
torch.compile: disabled
- Padding removal: enabled
- Attention: FlashAttention-2
- Rollout engine: SGLang 0.5.8
- Tensor parallelism: 1
- Rollout temperature: 1.0
- Top-p: 1.0
- Top-k: disabled (
-1)
- SGLang memory-utilization target: 0.60
Limitations
This is a research checkpoint. Differences of about ±1.5 points are within noise on the 1,000-example validation set. Evaluate the model on the intended benchmark and decoding configuration before downstream use.