---
license: apache-2.0
base_model: Qwen/Qwen2.5-1.5B-Instruct
library_name: transformers
pipeline_tag: text-generation
tags:
- reinforcement-learning
- agentic-rl
- alfworld
- strata
- grpo
- qwen2.5
---
# StraTA / Qwen2.5-1.5B-Instruct / ALFWorld — optimizer step 20
Reproduction of **StraTA** (Strategic Trajectory Abstraction,
[arXiv:2605.06642](https://arxiv.org/abs/2605.06642), code
[xxyQwQ/StraTA](https://github.com/xxyQwQ/StraTA) @ `592238b`) on ALFWorld with
`Qwen/Qwen2.5-1.5B-Instruct`.
**This checkpoint: optimizer step 20 of 150.**
| | |
|---|---|
| Optimizer step | **20** / 150 |
| Validation success rate at this step | **3.57%** (ALFWorld `valid_seen`, 140 tasks) |
| Base model success rate | 0.71% |
| Backbone | `Qwen/Qwen2.5-1.5B-Instruct` (1.54B params, bf16) |
| Environment | ALFWorld (AgentGym HTTP interface) |
| Hardware | 2x NVIDIA A100 80GB |
| Wall-clock (full 150 steps) | ~44 hours |
## Training curve
Validation success rate on the full ALFWorld `valid_seen` split (140 tasks),
measured every 10 optimizer steps during training. Step 0 is the untrained base model.
| optimizer step | success rate (%) |
|---|---|
| 0 | 0.71 |
| 10 | 0.71 |
| 20 | 3.57 |
| 30 | 1.43 |
| 40 | 14.29 |
| 50 | 18.57 |
| 60 | 6.43 |
| 70 | 22.86 |
| 80 | 37.14 |
| 90 | 42.14 |
| 100 | 43.57 |
| 110 | 50.71 |
| 120 | 69.29 |
| 130 | 85.00 |
| 140 | 83.57 |
| 150 | 86.43 |
## Final evaluation (step 150, 2 seeds)
Run with `evaluate-strata-alfworld-text-qwen2.5-1.5b.sh`: `val_only`, 140 tasks,
temperature 0.7 / top_p 0.8 / top_k 20, max 50 env steps.
| subtask | seed 1 | seed 2 | mean ± std |
|---|---|---|---|
| pick | 97.14 | 97.14 | **97.14 ± 0.00** |
| clean | 92.59 | 92.59 | **92.59 ± 0.00** |
| pick2 | 91.67 | 87.50 | **89.58 ± 2.95** |
| heat | 81.25 | 81.25 | **81.25 ± 0.00** |
| cool | 76.00 | 72.00 | **74.00 ± 2.83** |
| look | 76.92 | 69.23 | **73.08 ± 5.44** |
| ALL | 87.86 | 85.71 | **86.79 ± 1.52** |
Auxiliary metrics: action `format_rate` **1.000** (both seeds), mean episode length
**13.2–14.2** steps (base model: 49.7).
## Hyperparameters
All algorithm hyperparameters follow the paper: 150 steps, batch size 16, 4 strategies
per task, 8 rollouts per strategy, oversampling ratio sigma=8, aggregation ratio
delta=0.5, length penalty threshold lambda=0.5, self-judgment reward weight kappa=0.1.
| group | parameter | value |
|---|---|---|
| StraTA | `num_stras_per_run` (strategies per task) | 4 |
| StraTA | `num_trajs_per_stra` (rollouts per strategy) | 8 |
| StraTA | `num_cands_per_stra` (oversampling ratio, sigma) | 8 |
| StraTA | `delta_coef` (aggregation ratio) | 0.5 |
| StraTA | `lambda_coef` (length penalty threshold) | 0.5 |
| StraTA | `kappa_coef` (self-judgment reward weight) | 0.1 |
| StraTA | `use_diverse_stras` / `use_self_judgment` | True / True |
| StraTA | `use_length_reward` / `use_format_reward` | True / True |
| StraTA | strategy embedding model | `sentence-transformers/all-MiniLM-L6-v2` (CPU) |
| RL | `adv_estimator` | grpo |
| RL | `algorithm.gamma` | 0 |
| RL | `kl_ctrl.kl_coef` | 0.001 |
| RL | `actor.use_kl_loss` | False |
| RL | `clip_ratio_high` | 0.28 |
| RL | `loss_agg_mode` | seq-mean-token-sum |
| RL | `entropy_coeff` | 0 |
| RL | `stepwise_advantage` | enabled, `per_step` |
| Optim | learning rate | 1e-6 |
| Optim | `ppo_mini_batch_size` (global) | 1024 |
| Optim | `use_dynamic_bsz` / `ppo_max_token_len_per_gpu` | True / 32768 |
| Data | `train_batch_size` (tasks per step) | 16 |
| Data | episodes per step | 16 x 4 x 8 = **512** |
| Data | `max_prompt_length` / `max_response_length` | 7168 / 1024 |
| Data | env `num_histories` | 2 |
| Data | max env steps per episode | 50 |
| Rollout | engine / temperature | vLLM 0.11.0 (async) / 1.0 |
| Eval | `val_kwargs` | n=1, temperature 0.7, top_p 0.8, top_k 20 |
| Train | total steps | 150 (`total_training_steps=151`) |
### Infrastructure deltas
This run reproduces the upstream 7B recipe on 2x A100 80GB. A full diff of the
resolved Hydra config against `train-strata-alfworld-text-qwen2.5-7b.sh` shows
**6 differing keys out of 533**, all infrastructure -- no algorithm or optimization
parameter was changed:
| key | upstream 7B | this run | effect on results |
|---|---|---|---|
| `trainer.n_gpus_per_node` | 8 | 2 | none -- verl computes `ppo_mini_batch_size *= rollout.n` then `//= world_size`, so the global mini-batch is invariant |
| `actor.fsdp_config.param_offload` | True | False | none -- CPU offload only |
| `actor.fsdp_config.optimizer_offload` | True | False | none |
| `ref.fsdp_config.param_offload` | True | False | none |
| `actor.checkpoint.save_contents` | `[hf_model]` | `[model,optimizer,extra,hf_model]` | none -- what gets written |
| `trainer.save_freq` | 50 | 10 | none -- checkpoint cadence |
## Usage
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "chanyoungkim/strata-qwen2.5-1.5b-alfworld-step020"
model = AutoModelForCausalLM.from_pretrained(repo, dtype=torch.bfloat16, device_map="auto")
tok = AutoTokenizer.from_pretrained(repo)
```
The model expects the StraTA ALFWorld prompt format: it first emits a plan inside
`...`, then acts, emitting one action per turn inside
`...`.
## Files
| path | contents |
|---|---|
| `model.safetensors`, `config.json`, tokenizer files | bf16 weights, ready for `from_pretrained`. `lm_head` is omitted because `tie_word_embeddings=true` (same layout as the base Qwen release). |
| `training_state/model_world_size_2_rank_{0,1}.pt` | FSDP-sharded fp32 weights |
| `training_state/optim_world_size_2_rank_{0,1}.pt` | Adam optimizer state |
| `training_state/extra_state_world_size_2_rank_{0,1}.pt` | RNG and scheduler state |
| `training_state/fsdp_config.json` | FSDP layout descriptor |
`training_state/` lets you resume RL training from this exact optimizer step. Note the
shards are written for **`world_size=2`** (2 GPUs, FSDP). Resuming on a different number
of GPUs requires resharding. To resume, place the files back as
`checkpoints//models/global_step_20/actor/` and point verl at that directory.
The published `model.safetensors` is a bf16 cast of the fp32 master weights; the
original fp32 tensors are preserved inside `training_state/`.
## All checkpoints from this run
[step 10](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step010) · [step 20](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step020) · [step 30](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step030) · [step 40](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step040) · [step 50](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step050) · [step 60](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step060) · [step 70](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step070) · [step 80](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step080) · [step 90](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step090) · [step 100](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step100) · [step 110](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step110) · [step 120](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step120) · [step 130](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step130) · [step 140](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step140) · [step 150](https://huggingface.co/chanyoungkim/strata-qwen2.5-1.5b-alfworld-step150)
## Caveats
- **Do not use `is_correct` or `pass@1`** from the logs. Both are hardcoded to `1.0`
in the workflow and are meaningless. The correct metric is
`val/average/metrics/success_rate`.
- Evaluation uses the StraTA inference protocol (one strategy, then one trajectory
conditioned on it; no diversity selection, no self-judgment). This is what
`strata_workflow.run()` does when `rollout_engine.validate` is set, and it matches
`evaluate-strata-*.sh`.
- Numbers here are **not** directly comparable to models evaluated under a different
agent scaffold (different prompt format, context window, or sampling temperature).
- The evaluation set is ALFWorld `valid_seen` (140 tasks, all of them -- not a
subsample). `valid_unseen` was not evaluated.
## Citation
```bibtex
@article{xue2026strata,
title={StraTA: Incentivizing Agentic Reinforcement Learning with Strategic Trajectory Abstraction},
author={Xue, Xiangyuan and Zhou, Yifan and Wang, Zidong and Tang, Shengji and Torr, Philip and Ouyang, Wanli and Bai, Lei and Yin, Zhenfei},
journal={arXiv preprint arXiv:2605.06642},
year={2026}
}
```