Instructions to use PengxinWang/RobustLLMAgent with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use PengxinWang/RobustLLMAgent with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
Simplify model card around step200 baseline and model download table
Browse files
README.md
CHANGED
|
@@ -14,132 +14,21 @@ tags:
|
|
| 14 |
|
| 15 |
# RobustLLMAgent
|
| 16 |
|
| 17 |
-
|
| 18 |
|
| 19 |
-
|
| 20 |
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
**发布范围与默认设置分别说明:** 本仓库已发布7B step200和历史1.5B step300 adapter;新的1.5B step200权重尚未在本次说明更新中上传。以下step300路径与加载示例用于已有历史权重,不能当作step200结果。默认改为200不表示其绝对性能等同于300;方法比较应使用相同训练步数、解码和评测seed。
|
| 24 |
-
|
| 25 |
-
## 7B baseline(step 200,2026-09-15)
|
| 26 |
-
|
| 27 |
-
四组训练均已在 DeltaAI 成功完成 200 steps(Slurm COMPLETED、退出码 0)。统一使用 **Qwen/Qwen2.5-7B-Instruct、seed 0、thinking off**,发布终点 `global_step_200`,不是 `best_val`。
|
| 28 |
-
|
| 29 |
-
| 环境 | 对照组 | 下载目录 |
|
| 30 |
-
|---|---|---|
|
| 31 |
-
| ALFWorld | clean | [qwen2_5_7_step_200_seed0](results/alfworld/training/qwen2_5_7_step_200_seed0) |
|
| 32 |
-
| ALFWorld | Gaussian | [qwen2_5_7_gaussian_noise_step_200_seed0](results/alfworld/robust_training/qwen2_5_7_gaussian_noise_step_200_seed0) |
|
| 33 |
-
| WebShop | clean | [qwen2_5_7_step_200_seed0](results/webshop/training/qwen2_5_7_step_200_seed0) |
|
| 34 |
-
| WebShop | Gaussian | [qwen2_5_7_gaussian_noise_step_200_seed0](results/webshop/robust_training/qwen2_5_7_gaussian_noise_step_200_seed0) |
|
| 35 |
-
|
| 36 |
-
每组包含 `checkpoints/global_step_200/actor/lora_adapter/{adapter_config.json,adapter_model.safetensors}`、`run_config.json` 和 SHA256 `manifest.json`。四份 adapter 合计约 **2.58 GB**,需要另备 7B 基座;不包含 optimizer、FSDP 分片或训练恢复状态。Gaussian 的训练扰动为 sigma=0.1、sampling_mode=step;标准评测使用干净模型。
|
| 37 |
-
|
| 38 |
-
基座固定 revision:`a09a35458c702b33eeacc393d103063234e8bc28`。发布版 adapter 配置仅规范化基座模型 ID 并固定该 revision;权重及原始 `run_config.json` 保持逐字节不变。`run_config.json` 中的 status/runtime 是启动时记录,实际训练完成状态见各 `manifest.json`。每份 adapter 含 392 个 FP32 LoRA 张量(r=64、alpha=64),已验证形状及数值有限;生成环境使用 PEFT 0.20.0、Transformers 4.57.3。
|
| 39 |
-
|
| 40 |
-
### 下载 7B 权重并加载
|
| 41 |
-
|
| 42 |
-
```python
|
| 43 |
-
import torch
|
| 44 |
-
from huggingface_hub import snapshot_download
|
| 45 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 46 |
-
from peft import PeftModel
|
| 47 |
-
|
| 48 |
-
snapshot = snapshot_download(
|
| 49 |
-
repo_id="PengxinWang/RobustLLMAgent",
|
| 50 |
-
allow_patterns=["results/*/*/qwen2_5_7*step_200_seed0/**"],
|
| 51 |
-
local_dir="./RobustLLMAgent-artifacts",
|
| 52 |
-
)
|
| 53 |
-
experiment = "results/webshop/training/qwen2_5_7_step_200_seed0"
|
| 54 |
-
checkpoint = f"{snapshot}/{experiment}/checkpoints/global_step_200"
|
| 55 |
-
adapter = f"{checkpoint}/actor/lora_adapter"
|
| 56 |
-
base_id = "Qwen/Qwen2.5-7B-Instruct"
|
| 57 |
-
base_revision = "a09a35458c702b33eeacc393d103063234e8bc28"
|
| 58 |
-
tokenizer = AutoTokenizer.from_pretrained(base_id, revision=base_revision)
|
| 59 |
-
base = AutoModelForCausalLM.from_pretrained(
|
| 60 |
-
base_id, revision=base_revision, torch_dtype=torch.bfloat16,
|
| 61 |
-
)
|
| 62 |
-
model = PeftModel.from_pretrained(base, adapter).eval()
|
| 63 |
-
```
|
| 64 |
-
|
| 65 |
-
更换 `experiment` 即可选择其他三组。训练导出的 tokenizer 与上述固定基座的词表、特殊 token、chat template 及分词规则一致,可以直接使用基座 tokenizer。加载示例本身不构成 benchmark 评测。
|
| 66 |
-
|
| 67 |
-
### 在项目标准入口中评测
|
| 68 |
-
|
| 69 |
-
两套 `scripts/eval/standard/{alfworld,webshop}/run_eval.sh` 均支持直接设置 `CKPT` 为下载的 `global_step_200` 目录,并将 `MODEL_PATH` 指向对应的本地 7B 基座;入口会准备合并模型,无需下载 FSDP/optimizer 文件。使用项目 `verl-agent` 环境,并在命名 tmux 会话中运行正式评测。
|
| 70 |
-
|
| 71 |
-
WebShop 设置 `THINKING_MODE=nothinking`。ALFWorld 当前评测入口需要显式设置下列参数以匹配本次训练的提示与长度:
|
| 72 |
-
|
| 73 |
-
```bash
|
| 74 |
-
export ALFWORLD_THINK_INSTRUCTION=''
|
| 75 |
-
export ALFWORLD_ACTION_INSTRUCTION='Choose an admissible action for the current step and present it within <action> </action> tags.'
|
| 76 |
-
export REQUIRE_THINK_TAGS=False
|
| 77 |
-
export HISTORY_LENGTH=10 MAX_PROMPT_LENGTH=3072 MAX_RESPONSE_LENGTH=1024
|
| 78 |
-
```
|
| 79 |
-
|
| 80 |
-
正式 ALFWorld 评测应覆盖 ID 140 / OOD 134 个唯一 gamefiles;正式 WebShop 应覆盖固定 goals 0..499 的 500 个唯一任务。WebShop 训练中的 128-goal 内部验证不能代替正式评测。本次发布仅完成文件及权重验证,没有重新执行 benchmark。
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
## 历史 1.5B baseline 发布包(step 300)
|
| 84 |
-
|
| 85 |
-
以下是2026-09-11发布的历史固定对照,均已上传并通过文件大小及哈希校验;2026-09-17起新训练默认改为step200。四组统一使用 **`Qwen/Qwen2.5-1.5B-Instruct`、`global_step_300`、seed `0`**,不再继续训练这几个 checkpoint。
|
| 86 |
-
|
| 87 |
-
其中 clean 是普通训练基线,Gaussian 是高斯噪声鲁棒训练对照;复现历史step300比较时使用下表中的配对。
|
| 88 |
-
|
| 89 |
-
| 环境 | 对照组 | 状态 | 实验目录(本地与 Hugging Face 一致) |
|
| 90 |
|---|---|---|---|
|
| 91 |
-
|
|
| 92 |
-
|
|
| 93 |
-
|
|
| 94 |
-
|
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
发布内容仅包括评测所需的 LoRA adapter、配置与来源说明,四组权重合计约 1.18 GB;使用时需搭配上述基座模型。训练恢复状态、optimizer、FSDP 分片、其他训练步骤及 `best_val` 不属于本次发布范围。加载方式见 [Hugging Face README](https://huggingface.co/PengxinWang/RobustLLMAgent/blob/main/README.md)。
|
| 105 |
-
|
| 106 |
-
ALFWorld clean 最初训练到 400 steps,后续确定 300 steps 已足够,因此固定选取 step 300。本地目录仍是历史实验的软链接,历史 latest/best 元数据不代表本次选择;评测应显式指定 `global_step_300`。Gaussian 两组的扰动设置以各实验 `run_config.json` 为准。
|
| 107 |
-
|
| 108 |
-
这里的“已确定完成”指 checkpoint 选择与发布已完成;本次上传没有重新执行 benchmark,正式性能结论仍以对应完整任务集的 vLLM 评测记录为准。
|
| 109 |
-
|
| 110 |
-
## 历史 1.5B step300 下载与加载
|
| 111 |
-
|
| 112 |
-
```python
|
| 113 |
-
from huggingface_hub import snapshot_download
|
| 114 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 115 |
-
from peft import PeftModel
|
| 116 |
-
|
| 117 |
-
experiment = "results/alfworld/training/qwen2_5_1_5_step_300_seed0"
|
| 118 |
-
snapshot = snapshot_download(
|
| 119 |
-
repo_id="PengxinWang/RobustLLMAgent",
|
| 120 |
-
allow_patterns=[f"{experiment}/**"],
|
| 121 |
-
)
|
| 122 |
-
adapter = f"{snapshot}/{experiment}/checkpoints/global_step_300/actor/lora_adapter"
|
| 123 |
-
base_id = "Qwen/Qwen2.5-1.5B-Instruct"
|
| 124 |
-
tokenizer = AutoTokenizer.from_pretrained(base_id)
|
| 125 |
-
base = AutoModelForCausalLM.from_pretrained(base_id, torch_dtype="auto")
|
| 126 |
-
model = PeftModel.from_pretrained(base, adapter).eval()
|
| 127 |
-
```
|
| 128 |
-
|
| 129 |
-
更换 `experiment` 即可选择其余三组。使用兼容的 Transformers / PEFT 环境;原始 adapter 配置记录 PEFT 0.19.1。可合并为标准 dense 模型后用于 vLLM:
|
| 130 |
-
|
| 131 |
-
```python
|
| 132 |
-
model = model.merge_and_unload()
|
| 133 |
-
model.save_pretrained("/path/to/merged_model", safe_serialization=True)
|
| 134 |
-
tokenizer.save_pretrained("/path/to/merged_model")
|
| 135 |
-
```
|
| 136 |
-
|
| 137 |
-
项目的 `scripts/eval/standard/alfworld/run_eval.sh` 与 `scripts/eval/standard/webshop/run_eval.sh` 均支持以 `MODEL_PATH=/path/to/merged_model` 加载完整模型,此时不设置 `CKPT`。两个入口也支持直接把 `CKPT` 指向下载的 `global_step_300` 目录并设置对应基座 `MODEL_PATH`:共享准备流程会先合并 adapter,再以 dense 模式执行 vLLM 评测。
|
| 138 |
-
|
| 139 |
-
## 1.5B 来源与范围
|
| 140 |
-
|
| 141 |
-
- ALFWorld clean 原始训练为 400 steps,随后由实验负责人选定 step 300 作为对照。发布路径使用本地选定名称;不携带指向 step 400/340 的历史 latest/best 元数据。
|
| 142 |
-
- Gaussian 两组保留原始 `run_config.json`,包括扰动参数和 `sampling_mode`;其中本机路径仅用于追溯。评测默认不重新注入训练时扰动。
|
| 143 |
-
- WebShop clean 的原始发布清单保存在 `analysis/source_manifest.json`,其列出的其他历史步骤未包含在本精简包;本次文件范围与哈希以各实验根目��的 `manifest.json` 为准。
|
| 144 |
-
- adapter 权重与本地 step 300 完全一致。发布版 `adapter_config.json` 仅统一基座路径为 `Qwen/Qwen2.5-1.5B-Instruct`,本地源文件未修改。
|
| 145 |
-
- 1.5B 发布内容不包含 optimizer、FSDP 分片、训练恢复状态、训练日志、step 100/200 或 best_val。本次仅发布并校验文件,未重新运行 benchmark。
|
|
|
|
| 14 |
|
| 15 |
# RobustLLMAgent
|
| 16 |
|
| 17 |
+
面向 ALFWorld 与 WebShop 的 Qwen2.5 强化学习模型。**所有模型与算法统一以 step200 为比较基准**,training seed=0,thinking off。
|
| 18 |
|
| 19 |
+
## 已完成训练的模型
|
| 20 |
|
| 21 |
+
| 模型 | 环境 | 算法 | 下载目录 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|---|---|---|---|
|
| 23 |
+
| Qwen2.5-1.5B-Instruct | ALFWorld | GiGPO(Clean) | [global_step_300](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/alfworld/training/qwen2_5_1_5_step_300_seed0/checkpoints/global_step_300/actor/lora_adapter) |
|
| 24 |
+
| Qwen2.5-1.5B-Instruct | ALFWorld | GiGPO + Gaussian | [global_step_300](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/alfworld/robust_training/qwen2_5_1_5_gaussian_noise_step_300_seed0/checkpoints/global_step_300/actor/lora_adapter) |
|
| 25 |
+
| Qwen2.5-1.5B-Instruct | WebShop | GiGPO(Clean) | [global_step_300](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/webshop/training/qwen2_5_1_5_step_300_seed0/checkpoints/global_step_300/actor/lora_adapter) |
|
| 26 |
+
| Qwen2.5-1.5B-Instruct | WebShop | GiGPO + Gaussian | [global_step_300](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/webshop/robust_training/qwen2_5_1_5_gaussian_noise_step_300_seed0/checkpoints/global_step_300/actor/lora_adapter) |
|
| 27 |
+
| Qwen2.5-7B-Instruct | ALFWorld | GiGPO(Clean) | [global_step_200](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/alfworld/training/qwen2_5_7_step_200_seed0/checkpoints/global_step_200/actor/lora_adapter) |
|
| 28 |
+
| Qwen2.5-7B-Instruct | ALFWorld | GiGPO + Gaussian | [global_step_200](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/alfworld/robust_training/qwen2_5_7_gaussian_noise_step_200_seed0/checkpoints/global_step_200/actor/lora_adapter) |
|
| 29 |
+
| Qwen2.5-7B-Instruct | WebShop | GiGPO(Clean) | [global_step_200](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/webshop/training/qwen2_5_7_step_200_seed0/checkpoints/global_step_200/actor/lora_adapter) |
|
| 30 |
+
| Qwen2.5-7B-Instruct | WebShop | GiGPO + Gaussian | [global_step_200](https://huggingface.co/PengxinWang/RobustLLMAgent/tree/main/results/webshop/robust_training/qwen2_5_7_gaussian_noise_step_200_seed0/checkpoints/global_step_200/actor/lora_adapter) |
|
| 31 |
+
|
| 32 |
+
1.5B 的现有下载权重为 step300,step200 尚未上传;7B 的下载权重为 step200。
|
| 33 |
+
|
| 34 |
+
下载内容为 LoRA adapter,需搭配对应的 Qwen2.5-Instruct 基座使用。训练与评测入口见 [GitHub 项目](https://github.com/PengxinWang/RobustLLMAgent)。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|