Qwen3.5-4B — reduction cold start

Given a math problem and a chain-of-thought prefix produced by some solver, this model rewrites the problem as a simpler, self-contained problem that folds in the prefix's usable progress and preserves the original answer.

It is a cold start for RL, not a finished model: the SFT stage was tuned for output format and behavioural diversity, and does not beat its own baseline on downstream solve rate. See Evaluation before using it for anything.

Prompting

The system prompt is part of the contract — the model was trained with one specific system message and user layout, and drifts badly without them.

messages = [
    {"role": "system", "content": SYSTEM},           # see reduction_v9_nofmt below
    {"role": "user", "content": f"### Problem\n\n{problem}\n\n### CoT Prefix\n\n{prefix}"},
]
text = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True, enable_thinking=True
)

Output format has no tags: the response is a Qwen-native think block followed by the reduced problem as plain text. Everything after the last </think> is the reduced problem.

SYSTEM — the exact message used in training
You are a problem reducer. Given an original problem and a chain-of-thought
(CoT) prefix produced by a solver, rewrite the problem as a simpler,
self-contained problem that incorporates the prefix's correct progress.

The reduced problem will be handed to a separate solver that sees neither the
original problem nor the CoT prefix. It must be solvable from its own text
alone, and its final answer must be identical to the original problem's
answer.

Rules:

1. Work with the prefix, not on it: the prefix is not guaranteed to be
   correct, but checking it is not your job. Reduce as you normally
   would, without verifying or recomputing its steps. If an error or
   inconsistency reveals itself in the course of that work — a value
   that does not fit, a claim the rest contradicts — discard it together
   with everything that depends on it; if nothing reveals itself, let
   the prefix stand.
2. Reduce, don't solve: by default, use only the progress you kept from the
   prefix to rewrite the problem, introducing no new reasoning or
   computation. Exception: a small amount of non-critical, obviously correct
   derivation may be introduced if it significantly simplifies the statement
   and makes the reduced problem more concise and self-contained. Under no
   circumstances should you solve the original problem or the reduced
   problem to completion, nor solve both to check that their answers match.
3. Answer invariance: the reduction must not change the problem's correct
   answer. However the statement is rewritten, the final answer of the
   reduced problem must be strictly identical to that of the original
   problem.
4. Re-pose, don't annotate: fold the kept progress naturally into the
   problem statement itself, rather than appending it as notes or a list of
   given facts. Renaming variables, changing what is asked, and swapping the
   narrative framing are all allowed. The statement must contain no
   references to any external context, such as "the original problem", "from
   the derivation above", or "as previously shown".
5. Fallback: if the prefix contains no usable progress, restate the
   original problem verbatim as the reduced problem.

Training

  • Base: Qwen/Qwen3.5-4B
  • LoRA r=64, α=128, on q/k/v/o/gate/up/down; merged into the base weights
  • 1418 samples distilled from four teachers (Qwen3.8-Max, Kimi K3, GLM-5.3, DeepSeek-V4-Pro) over 400 problem/prefix cells, filtered to think ≤ 8192 and sequence ≤ 16384 tokens
  • 170 steps on 2×A100, loss 1.082 → 0.674, eval loss monotonically decreasing

Prefixes are ~25% deliberately incorrect, so the model sees both prefix qualities.

Evaluation (30 held-out cells, zero problem overlap with training)

result
Produced a parseable reduction 27/30 (3 hit the generation cap)
Answer preserved (strong-model blind solve) 21/26 = 81%
Downstream solve rate, Qwen3.5-4B target, n=8 0.449 vs 0.532 baseline (−0.083)
Mean think length 8370 tokens

Two known weaknesses, both by construction:

  • Downstream solve rate is net negative. Mixing four teachers bought a wide behavioural distribution — which is what a high-entropy RL initialisation needs — at the cost of mean quality. Do not use this model expecting reductions that help a solver.
  • It converged to its teachers' upper length bound, not their mean (8370 vs a 2k target), and sometimes thinks until the cap without producing anything.

Known issue: text-only weights, multimodal config

config.json is inherited from the multimodal base and still declares Qwen3_5ForConditionalGeneration with a vision_config, but the checkpoint contains only the 426 language-tower tensors — the vision tower is absent. The LoRA merge went through AutoModelForCausalLM, which never loaded it.

This is fine for text (vLLM serves it; all evaluation above was run this way) and the config is left as-is because the weight keys use the ForConditionalGeneration layout, so rewriting the architecture field would break loading. Do not pass images or video.

License

Apache 2.0, inherited from Qwen/Qwen3.5-4B.

Downloads last month
-
Safetensors
Model size
4B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for RichardEllis/qwen3.5-4b-reduction-coldstart

Finetuned
Qwen/Qwen3.5-4B
Finetuned
(628)
this model