Views
No views yet
unsloth/Qwen3.5-35B-A3B trained on the tau2-bench banking_knowledge v2 data (Claude Opus/Sonnet + GPT-5.2 trajectories with reasoning traces).docs/sft-history.md for the post-mortem.training/run_qwen_sft.py in Monte-Inc/tau2-banking-sft@maintorch._grouped_mm MoE path in vanilla torch 2.9 cut training ~10× vs v5){q,k,v,o}_proj + MLP {gate,up,down,gate_up}_proj (regular dense LoRA) plus MoE expert 3D fused params (mlp.experts.gate_up_proj, mlp.experts.down_proj) — auto-added by Unsloth's PEFT path for Qwen3.5 MoEadamw_8bit, weight_decay 0.001, seq_len 8192, batch 1 × grad_accum 4 (effective 4), packing offadapter_model.safetensors (7.4 GB) — PEFT LoRA weights (includes MoE expert deltas)adapter_config.json — target_parameters: [mlp.experts.gate_up_proj, mlp.experts.down_proj], r=32, alpha=64chat_template.jinja — Qwen 3.5 native template (no patches needed; works as-is for tau2-bench/litellm tool-call rendering)tokenizer.json, tokenizer_config.json — Qwen 3.5 tokenizer (kept self-contained for downstream loading)trainer_state.json — full step-by-step loss + grad-norm + LR historytraining_args.json — exact SFTConfig used (verbatim dump of trainer.args.to_dict())1python -c "
2from unsloth import FastLanguageModel
3from peft import PeftModel
4model, tok = FastLanguageModel.from_pretrained(
5 'unsloth/Qwen3.5-35B-A3B', max_seq_length=8192, load_in_4bit=False,
6)
7model = PeftModel.from_pretrained(model, 'monte-inc/qwen3.5-35b-a3b-banking-sft-v6')
8model = model.merge_and_unload()
9model.save_pretrained_merged('./merged-qwen-sft-v6', tok, save_method='merged_16bit')
10"1vllm serve ./merged-qwen-sft-v6 \
2 --served-model-name qwen-banking-sft \
3 --host 0.0.0.0 --port 8000 \
4 --dtype bfloat16 \
5 --max-model-len 100000 \
6 --gpu-memory-utilization 0.90 \
7 --enable-auto-tool-choice \
8 --tool-call-parser qwen3_xml \
9 --reasoning-parser qwen3 \
10 --enforce-eager \
11 --num-gpu-blocks-override 256 \
12 --limit-mm-per-prompt '{"image":0,"video":0}'torch.compile crashes on Grace Hopper MoEpytorch/pytorch#176178 on GH200, also hangs KV-cache profiling. Workaround: --enforce-eager --num-gpu-blocks-override 256 (in the vLLM command above). Eval is ~3× slower in eager mode but stable.--limit-mm-per-prompt required for Qwen3.5 MoE'{"image":0,"video":0}' flag disables those heads.| Run | Pass rate |
|---|---|
monte-inc/qwen3.5-35b-a3b-banking-sft-v6 (this model) | 13/94 (13.8%) — 1 trial, 95/97 tasks ran |
unsloth/gemma-4-26B-A4B-it (base, thinking on) | 53/382 (13.9%) — 4 trials |
monte-inc/gemma4-26b-a4b-banking-sft-v3 | (see that repo) |
Qwen/Qwen3.5-35B-A3B (base, thinking on) | 20/322 (6.2%) — gpt-4.1 user sim |
1tau2 run --domain banking_knowledge \
2 --agent-llm openai/qwen-banking-sft \
3 --agent-llm-args '{"api_base":"http://localhost:8000/v1","temperature":0.0}' \
4 --user-llm gpt-5.2 \
5 --retrieval-config terminal_use \
6 --max-concurrency 10 --num-trials 4 --max-steps 200 \
7 --seed 42 --max-retries 3 \
8 --save-to qwen-sft-v6-bankingMonte-Inc/tau2-banking-sft@main on branch main (commit ced327c at time of publish). The exact training script + data pipeline:training/run_qwen_sft.pydata/banking/v2/banking_sft_ready.jsonlDATA_PIPELINE.mdbenchmarks/results/sft/qwen-sft-v6-banking/results.jsondocs/sft-history.md.