Download
No ZIP extraction or login is required:
from huggingface_hub import snapshot_download snapshot_download( "tawer12/qwen3-4b-recursive-sft-v3.2", local_dir="qwen3-4b-recursive-sft-v3.2",)
The two safetensors shards, tokenizer files, and configuration files must be
kept together. release_manifest.json lists file sizes and SHA256 checksums.
The download is approximately 8.06 GB. There are no optimizer states, pickled
training arguments, intermediate checkpoints, training examples, or evaluation
rollouts in this repository.
Training
V3.2 downsamples only direct-solve examples from the expanded V3.1 call-level
training corpus, retaining the decomposition and aggregation examples unchanged.
Table with columns: Setting, Value| Setting | Value |
|---|
| Decomposition examples | 4,707 |
| Direct-solve examples | 4,707: 530 root, 4,177 child |
| Aggregation examples | 4,712 |
| Total component-level examples | 14,126 |
| Unique source problems represented | 5,241 |
| Configured epochs | 6 |
| Optimizer updates | 660 |
| Global batch | 128 component calls, not 128 source problems |
| GPUs / per-device batch / accumulation | 8 / 1 / 16 |
| Maximum sequence length | 2,048 tokens |
| Learning rate / weight decay | 1e-5 / 0.01 |
| Warmup / scheduler | 10% / cosine |
| Precision / seed | BF16 / 1 |
| Objective | Output-token-only causal language modeling |
The six epochs approximately match the previous four-epoch V3.1 run's total
example exposure; this is not an exactly token- or update-matched experiment.
The corpus contains independent component calls, not necessarily complete trees
after downsampling. No syntax repair was applied: 387 targets retain known
defects under the newer strict Final answer: requirement. The training summary
is included separately from the raw training state.
Recursive Inference
Inputs are raw recursive prompt strings, not Qwen chat-template conversations.
Use prompts/recursive_sft_prefix_prompt.txt. Preserve protocol special tokens
when decoding (skip_special_tokens=False). A single generation returns one
action, not necessarily the entire solution:
SOLVE_DIRECTLY: solve the supplied problem.
DECOMPOSE: propose at least two child paths for the engine to execute.
AGGREGATE: combine child answers when the engine requests aggregation.
The bundled recursive_engine.py provides a standalone, unconstrained baseline
engine. This example executes a complete tree:
pip install 'transformers==4.51.1' torch accelerate huggingface_hub
import sysfrom pathlib import Pathfrom huggingface_hub import snapshot_download snapshot = Path(snapshot_download("tawer12/qwen3-4b-recursive-sft-v3.2"))sys.path.insert(0, str(snapshot))from recursive_engine import RecursiveEngine, load_model_and_tokenizer model, tokenizer = load_model_and_tokenizer(str(snapshot), dtype="bf16", device_map="auto")engine = RecursiveEngine( model=model, tokenizer=tokenizer, prefix_template=(snapshot / "prompts/recursive_sft_prefix_prompt.txt").read_text(), max_new_tokens=2048, temperature=0.0, top_p=1.0, max_depth=3, max_calls=10,)result = engine.rollout("What is the smallest multiple of 5 greater than -32?")print(result.full_trace)print(result.final_answer, result.parsed_ok, result.parse_errors)
For this bundled legacy engine, max_calls=10 is a whole-tree model-call limit,
including the root and aggregations, not ten children per node. The newer
constrained GRPO/evaluation implementation in the
math-recursive repository
has separate per-decomposition and whole-tree limits. Do not conflate them.
The example helper enables the generation cache even though the saved training
configuration has use_cache=false.
Limitations And Attribution
Format validity and answer correctness are distinct. A malformed downstream call
can invalidate a tree, and well-formed child answers can be mathematically wrong.
Decomposition paths may be dependent or underspecified. Aggregation receives
child answer summaries rather than their full reasoning. The standalone engine
executes children sequentially; critical-path token counts are not measured
parallel wall-clock speedups. Grammar constraints are external decoding support,
not an intrinsic guarantee supplied by this checkpoint.
The historical helper's answer extraction is not an authoritative benchmark
grader; use explicit root-answer grading and the standard evaluation protocol
for comparisons. No new benchmark accuracy claims are made in this release.
This is a modified, fine-tuned version of the Qwen team's Apache-2.0
Qwen3-4B-Base model. The upstream license is included in LICENSE. GSM8K supplies
the curated training questions. The model card and publishing recipe were added
for this V3.2 release on 2026-09-30.