DriCo-adapters / README_hf.md
anonymous-24421's picture
Upload DriCo LoRA adapters
8a0e578 verified
|
Raw
History Blame Contribute Delete
5.23 kB
---
license: apache-2.0
base_model: Qwen/Qwen2.5-7B-Instruct
library_name: peft
tags:
- lora
- peft
- qwen2.5
- multi-agent
- cooperative
- overcooked
language:
- en
---
# DriCo: Planner / Actor / Coordinator LoRA Adapters
Four LoRA adapters fine-tuned on **Qwen/Qwen2.5-7B-Instruct** for a
multi-agent cooperative-cooking benchmark.
A single base model is loaded once at inference; the three roles are switched
by activating the matching adapter.
| Folder | Role | Training |
| :------------------ | :------------------------------------------------------------------------------------------------ | :-------- |
| `planner/` | High-level subgoal generation in natural language (e.g. *"Pick up carrot and put it in pot0."*) | SFT |
| `actor/` | Low-level action chunking β€” turns a subgoal into up to 3 `ml_action`s | SFT |
| `coordinator/` | Shared-context generation + PASS/REJECT critique of planner subgoals | SFT |
| `coordinator_dpo/` | Coordinator further refined with DPO | SFT β†’ DPO |
---
## Quick start
End-to-end: clone the project repo, drop these adapters into the right
folder, run eval.
```bash
# 1) Clone the project repo
git clone https://github.com/anonymous-projectpage/DriCo.git
cd DriCo
# 2) Install deps (in a fresh env)
pip install -U huggingface_hub
pip install -r requirements.txt # if the repo has one
# 3) Download these adapters into drico/out/
hf download anonymous-24421/DriCo-adapters \
--local-dir drico/out
# 4) (Optional) download the training/DPO data into drico/dataset/
hf download anonymous-24421/DriCo \
--repo-type dataset \
--local-dir drico/dataset
# 5) Run evaluation
cd drico
CUDA_VISIBLE_DEVICES=0 python eval_proposed.py \
--base_model Qwen/Qwen2.5-7B-Instruct \
--adapter_root out/ \
--layout circuit_env \
--recipe_split test \
--statistics_save_dir data/eval_test
```
After step 3, the directory tree will look like:
```
DriCo/
└── drico/
└── out/
β”œβ”€β”€ README.md ← this file
β”œβ”€β”€ planner/
β”‚ β”œβ”€β”€ adapter_config.json
β”‚ β”œβ”€β”€ adapter_model.safetensors
β”‚ └── ...
β”œβ”€β”€ actor/
β”‚ └── ...
β”œβ”€β”€ coordinator/
β”‚ └── ...
└── coordinator_dpo/
└── ...
```
That's exactly what `eval_proposed.py --adapter_root out/` expects.
---
## Selective download
Only the actor adapter:
```bash
hf download anonymous-24421/DriCo-adapters \
--include "actor/*" \
--local-dir drico/out
```
Only the DPO-refined coordinator:
```bash
hf download anonymous-24421/DriCo-adapters \
--include "coordinator_dpo/*" \
--local-dir drico/out
```
---
## Manual loading in Python
If you want to use the adapters outside the eval script:
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = "Qwen/Qwen2.5-7B-Instruct"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(
base, torch_dtype="bfloat16", device_map="auto",
)
# Register the three roles as named adapters on one base model
model = PeftModel.from_pretrained(
model, "anonymous-24421/DriCo-adapters",
subfolder="planner", adapter_name="planner",
)
model.load_adapter("anonymous-24421/DriCo-adapters",
subfolder="actor", adapter_name="actor")
model.load_adapter("anonymous-24421/DriCo-adapters",
subfolder="coordinator_dpo", adapter_name="coordinator")
# Switch role per call
model.set_adapter("planner")
out = model.generate(
**tok("Plan the next subgoal: ...", return_tensors="pt").to(model.device),
max_new_tokens=50,
)
print(tok.decode(out[0], skip_special_tokens=True))
model.set_adapter("actor")
# ... generate the next action chunk ...
```
Swap `subfolder="coordinator_dpo"` for `subfolder="coordinator"` to use the
SFT-only coordinator instead of the DPO-refined one.
---
## Related
- **Project repo**: https://github.com/anonymous-projectpage/DriCo
- **Training data**: https://huggingface.co/datasets/anonymous-24421/DriCo
- **Base model**: https://huggingface.co/Qwen/Qwen2.5-7B-Instruct
---
## Intended use
Research on multi-agent cooperative task planning, role-conditioned
generation, and critique–refine pipelines. Not intended for general
chat/assistant use.
## Limitations
- Trained for a specific cooperative-cooking environment with a fixed action
vocabulary (`pickup`, `put_obj_in_utensil`, `cook`, `bake`, `stir`, ...).
- Outputs outside that domain are not guaranteed to be coherent.
- The coordinator's critique is a heuristic signal, not a guarantee of
task correctness.
## Citation
```bibtex
@misc{drico2026,
title = {DriCo: Planner / Actor / Coordinator for Cooperative Cooking},
author = {Anonymous},
year = {2026},
note = {Under review}
}
```