Evaluation
40 held-out trajectories: the 40 that follow the training set in the same shuffled order.
Table with columns: base, + LoRA | base | + LoRA |
|---|
| Assistant-token loss | 0.487 | 0.256 |
Next-action test through vLLM 0.31.0's OpenAI-compatible API. Each trajectory is cut just before
a random tool call, and the model picks the next action. Tools are bash, str_replace_editor and
submit; temperature is 0.
Table with columns: base, + LoRA | base | + LoRA |
|---|
| Returns a tool call | 100% | 100% |
| Arguments are valid JSON | 100% | 100% |
| Same tool as the reference | 80% | 90% |
Same str_replace_editor sub-command | 70% | 90% |
| Request errors | 0 | 0 |
| Median latency | 1.4 s | 1.9 s |
Where the reasoning goes. Qwen3-Coder has no thinking mode, so the agent's short reasoning is
written as plain content before the tool call (for example, "Now let's run the script to confirm
the issue:"). There is no separate reasoning field to measure.
SuperQwen's own tools. On three tasks with SuperQwen's tools (repo.tree, code.search,
file.read, …), both models called a tool every time, and both mostly went straight to
code.search. Three prompts are only a smoke test.
These numbers measure how well the model imitates resolved agent trajectories. They are not a
SWE-bench score. Raw results are in eval/.
Serving with vLLM
Verified with vLLM 0.31.0 on 1× H100 NVL (94 GB). The bf16 base is about 61 GB.
Two extra flags are required. PEFT saves the experts' LoRA as fused 3D tensors, while vLLM runs
Qwen3-MoE with per-expert weights. vLLM converts the adapter only when the server runs in mixed mode
and the adapter is declared 3D:
hf download superqwen/qwen3-coder-30b-a3b-swe-lora --include "adapter_*" --local-dir /models/swe-loravllm serve Qwen/Qwen3-Coder-30B-A3B-Instruct \ --enable-lora --max-lora-rank 16 --max-loras 1 --enable-mixed-moe-lora-format \ --lora-modules '{"name": "swe", "path": "/models/swe-lora", "is_3d_lora_weight": true}' \ --enable-auto-tool-choice --tool-call-parser qwen3_coder \ --max-model-len 16384
- Model name: request
"model": "swe" for the fine-tune.
- Without these flags: vLLM fails to load the adapter with
AssertionError in
FusedMoEWithLoRA.set_lora.
License
Apache-2.0, like the base model. Training data: SWE-bench/SWE-smith-trajectories (MIT).