Skip to content
ModelListedExternal
Download

Qwen2.5 7b Tau2 Airline Sft LoRA

The RL warm-start checkpoint for multi-turn tool-agent RL on τ2-bench's airline domain.

KindOtherBase modelQwen/Qwen2.5-7B-InstructVersionRevision 76b1d44

Model source

Kind
Other
File size
154 MB
Base model
Qwen/Qwen2.5-7B-Instruct
Version
vRevision 76b1d44
Updated
Sep 22, 2026
Downloads
12
Tasks
Text generation
Source
Hugging Face

Source description

Qwen2.5-7B-Instruct · τ2-bench airline · distilled SFT LoRA

The RL warm-start checkpoint for multi-turn tool-agent RL on τ2-bench's airline domain.

Behavior-cloned from DeepSeek V4 Flash teacher trajectories, collected by running the teacher as the agent through the exact same τ2-bench harness used for training and evaluation.

The collection script requests deepseek-chat, which is DeepSeek's alias for their current chat model. Every raw API response in the training data reports model: deepseek-v4-flash (1156/1156 assistant turns, 671/671 user-simulator turns), so the teacher is V4 Flash, not V3. Stated here from the data rather than from the script.

Why this exists

GRPO on τ2-bench-airline from raw Qwen2.5-7B-Instruct is null — and not because of a bug. Base success is ~20%, so most rollout groups come back all-fail → zero intra-group variance → the group-relative advantage is ~0 → no gradient. RL sharpens what a policy already does sometimes; it cannot invent a skill. Worse, the base policy's own successful rollouts never invoke the write-tools (update_reservation_*) that held-out tasks require, so self-sampling can't bootstrap them either.

This adapter is the floor that makes the RL step work.

Results

This adapter, merged into the base, is the step 0 policy of the tau2_airline verl recipe. Measured under that recipe's protocol (held-out BINARY mean@4, 20 held-out airline tasks, VAL_TEMP=0.5, llama-3.3-70b user simulator):

val@0 (this adapter)val@20 (after GRPO)
seed 420.2750.5625
seed 1230.3750.55

GRPO endpoint across 2 seeds: 0.556 ± 0.01. Measured evaluation noise on this same checkpoint (6 repeats of val@0) is 0.30 ± 0.05, so the two val@0 values above are a single checkpoint sampled twice from that band, not a difference.

Scope note. A separate hand-written pipeline reported base 0.20 → distilled SFT 0.405 → GRPO 0.545 for this approach, but under a different eval protocol (pass^1 over 10 trials with a self-hosted 7B user simulator, n=200). Those numbers are not directly comparable to the table above — different user simulator, different metric — and I have not re-verified that this exact file is the checkpoint they were measured on. The table above is what this file scores.

Usage

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B-Instruct", torch_dtype="auto", device_map="auto")
model = PeftModel.from_pretrained(base, "yuyu0529nya/qwen2.5-7b-tau2-airline-sft-lora")
tok = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct")

To use it as an RL starting point, merge first (model.merge_and_unload()) and point the trainer at the merged weights — that is exactly how the recipe above consumes it.

This adapter only makes sense inside the τ2-bench airline harness — same system prompt, same 14 tool schemas, same dialogue loop. It is a policy for that environment, not a general chat model.

Training

baseQwen/Qwen2.5-7B-Instruct
methodbehavior-cloning SFT (QLoRA 4-bit) on teacher trajectories
teacherDeepSeek V4 Flash (deepseek-v4-flash, requested via the deepseek-chat alias) — agent and user-simulator, temp 0.7
datayuyu0529nya/tau2-airline-deepseek-distill (ds_114 config) — 114 successful teacher trajectories (reward = 1), deduped by action signature, capped 4/task
LoRAr=16, alpha=32, dropout=0.05, targets = q,k,v,o,gate,up,down_proj
lossassistant-token-only (render-twice-diff mask)

Teacher success on these tasks was ~76% vs base ~20%, and 51% of teacher trajectories invoke the write-tools the base policy never reaches on its own. That skill gap is why self-RFT from base cannot work here, and why distillation — rather than more RL — was the fix.

Licensing / provenance

  • Base model: Qwen2.5-7B-Instruct, Apache-2.0 → derivatives unrestricted.
  • Teacher outputs (DeepSeek V4 Flash): DeepSeek Open Platform ToS §4.2(2) assigns "any rights, ownership and interest" in outputs to the user; §4.2(3) explicitly permits applying inputs/outputs to "training other models (e.g. model distillation)".
  • Task data: τ2-bench airline tasks are public benchmark data. All user profiles in the trajectories are synthetic (@example.com, RFC 2606 reserved). No real PII.
  • Released under Apache-2.0.

Honest limits

  • 20 held-out tasks. One task is worth 5 percentage points. Read single-point moves as noise.
  • 30 training tasks, 114 teacher trajectories. Small-data regime throughout.
  • Teacher/eval simulator mismatch: teacher dialogues used an API user-simulator; the reported evals use llama-3.3-70b. Not controlled for.
  • airline domain only. Not evaluated on other τ2-bench domains. Not a general-purpose model.
  • The reported runs used a hosted user simulator with provider fallback enabled, so they are not bit-reproducible.

Links

Sources

1 source
Hugging FacePrimaryVersion 76b1d446543c95eaecbd378092531504b26ab7de
huggingface.co/yuyu0529nya/qwen2.5-7b-tau2-airline-sft-lora/tree/76b1d446543c95eaecbd378092531504b26ab7de

Verified Sep 22

Model artifacts

1 artifact

adapter_model.safetensors

safetensors · 154 MB · SHA-256 f337c59cb58a…62a7 · Hugging Face

Download

Source excerpts

2 excerpts

--- license: apache-2.0 base_model: Qwen/Qwen2.5-7B-Instruct library_name: peft pipeline_tag: text-generation datasets: - yuyu0529nya/tau2-airline-deepseek-distill tags: - lora - peft - agent - tool-use - function-calling - reinforcement-learning - grpo - tau2-bench - distillation language: - en --- # Qwen2.5-7B-Instruct · τ²-bench airline · distilled SFT LoRA The **RL warm-start checkpoint** for multi-turn tool-agent RL on [τ²-bench](https://github.com/sierra-research/tau2-bench)'s `airline` domain. Behavior-cloned from **DeepSeek V4 Flash** teacher trajectories, collected by running the teacher as the *agent* through the exact same τ²-bench harness used for training and evaluation. > The collection script requests `deepseek-chat`, which is DeepSeek's *alias for their current chat > model*. Every raw API response in the training data reports `model: deepseek-v4-flash` (1156/1156 > assistant turns, 671/671 user-simulator turns), so the teacher is V4 Flash, not V3. Stated here > from the data rather than from the script. ## Why this exists GRPO on τ²-bench-airline from raw `Qwen2.5-7B-Instruct` is **null** — and not because of a bug. Base success is ~20%, so most rollout groups come back all-fail → zero intra-group variance → the group-relative advantage is ~0 → **no gradient**. RL sharpens what a policy already does sometimes; it cannot invent a skill. Worse, the base policy's *own* successful rollouts never invoke the write-tools (`update_reservation_*`) that held-out tasks require, so self-sampling can't bootstrap them either. This adapter is the floor that makes the RL step work. ## Results This adapter, merged into the base, is the `step 0` policy of the [`tau2_airline` verl recipe](https://github.com/verl-project/verl-recipe/pull/121). Measured under **that recipe's protocol** (held-out `BINARY mean@4`, 20 held-out airline tasks, `VAL_TEMP=0.5`, `llama-3.3-70b` user simulator): | | val@0 (this adapter) | val@20 (after GRPO) | |---|---|---| | seed 42 | 0.275 | **0.5625** | | seed 123 | 0.375 | **0.55** | GRPO endpoint across 2 seeds: **0.556 ± 0.01**. Measured evaluation noise on this same checkpoint (6 repeats of val@0) is **0.30 ± 0.05**, so the two val@0 values above are a single checkpoint sampled twice from that band, not a difference. > **Scope note.** A separate hand-written pipeline reported `base 0.20 → distilled SFT 0....

Source context: 12 downloads · 0 likes · Pipeline text-generation · Library peft · Repo yuyu0529nya/qwen2.5-7b-tau2-airline-sft-lora