Winnow-12B / docs /REASONING.md
EldanRing's picture
Publish approved Winnow card, usage and evidence
6f3417c verified
|
Raw History Blame Contribute Delete
7.09 kB

Reasoning evaluations and MTP

The results below describe the measured profiles recorded with this model release. They are retained separately because the policies, timing boundaries, and evaluation sets differ. For current installation and preset selection, use the Winnow quickstart.

Direct native decisions are the default. They read candidate-answer logits without generating an explanation. MTP drafts ordinary chat tokens; optional reasoning is a separate client workflow that can add generated context before native decision scoring. Neither option is enabled implicitly. The Winnow inference server provides the launcher, client, pinned runtime and verified model-specific presets.

Build the inference server

The optional presets require Linux/CUDA. Install the server build prerequisites and a compatible CUDA toolkit first.

git clone https://github.com/EldanRing/winnow-inference.git
cd winnow-inference
python3 scripts/build.py --backend cuda --cuda-arch 120

The 12B BF16 GGUF assistant is 861,519,840 bytes. It is converted from Google's official Gemma 4 12B IT assistant, without training. Use this exact assistant with the Q8/NVFP4 presets; another draft model is not interchangeable. Its license and conversion attribution accompany the download in assistant documentation. Direct serving does not require an assistant.

Supported MTP presets

Tested preset Context Vision Observed peak device memory
12b-nvfp4-vision8k-mtp 8,192 yes 11,773 MiB
12b-q8-text8k-mtp 8,192 no 14,927–15,108 MiB

MTP and vision require additional VRAM. Requirements depend on quantization, context and concurrency. See preset compatibility and settings for supported combinations. Larger-memory configurations have not been verified here.

NVFP4 with vision and MTP:

python3 scripts/winnow.py download --model nv4 --vision on --reasoning off --mtp on
python3 scripts/winnow.py serve --model nv4 --vision on --reasoning off --mtp on
# For direct decisions and chat without MTP, use --mtp off in both commands.

Q8 text with MTP:

python3 scripts/winnow.py download --model q8 --vision off --reasoning off --mtp on
python3 scripts/winnow.py serve --model q8 --vision off --reasoning off --mtp on
# For direct decisions and chat without MTP, use --mtp off in both commands.

Q8 direct 64K vision remains available without MTP. BF16 has no validated MTP/adaptive preset.

Experimental reasoning for one text question

The client accepts one named question and a text state. It preserves answer mappings, obtains a native direct decision, and may generate ordinary-template context with this same model before native scoring again. There is no separate thinking mode. Only complete eligible reasoning is scored and blended. After a valid direct decision, failed/incomplete reasoning returns the saved policy-calibrated direct distribution; a failed direct call remains an error. Image states, structured states and multi-question adaptive requests are rejected.

Policy Gate on raw native T1 Direct / augmented temperatures Completed blend
nvfp4-entropy-v1 normalized entropy>0.48619198949270803 1 /1 50:50
q8-fixed50-v1 maxP<0.8 1 /1 50:50

Stop the MTP vision server before launching the separate text-only profile:

python3 scripts/winnow.py download --model nv4 --vision off --reasoning on --mtp on
python3 scripts/winnow.py serve --model nv4 --vision off --reasoning on --mtp on
# For reasoning without MTP, use --mtp off for download, serve and decide.

In a second terminal from the same checkout:

python3 scripts/winnow.py decide --model nv4 --reasoning on --mtp on \
  --input examples/adaptive-decision.json

For Q8, use --model q8 in the download, serve and decide commands; the launcher selects q8-fixed50-v1. The policy uses temperature 0 ordinary-template generation, a 75-second client deadline and natural EOS within the default 8K context. Its 100-word instruction is a soft request, not a hard token cap. Reasoning can materially increase latency.

The frozen Q8 confirmation used 64 groups/96 decisions from two existing sources. Source-equal answer accuracy/rating-consensus agreement changed 62.50%→64.06%, paired 95% change interval [-2.34,+5.47]pp; NLL worsened 1.3226→1.3503 and mean CLI latency rose 198→743ms. Quality is inconclusive. This is not evidence of Boolean transfer, unseen-data accuracy,1 pp preservation or general reasoning ability.

Q8 reasoning confirmation: source-equal accuracy/consensus agreement 62.50 to 64.06%; paired 95% change interval −2.34 to +5.47 pp; mean CLI 198 to 743 ms. Quality inconclusive.

Same-source pilot: 64 groups/96 decisions. The quality measure averages within groups, then equally across sources; it is not pooled accuracy. CLI time includes client startup. The interval and worsened NLL do not establish a general benefit.

NVFP4's retained 900-decision/600-group two-source comparison against an incumbent reasoning route changed source-equal agreement 55.667%→55.250%, paired 95% change interval [-1.083,+0.333]pp; mean resident harness arm latency 751.6→660.0ms. This combines calibration and generated context and is not raw direct production latency or isolated causal reasoning benefit.

A different historical text-only T1/maxP<0.8/equal-blend recipe was also measured. It gained on Jev/Kev-clean and lost on Typed teacher agreement. Mean mandatory direct HTTP inside the workflow versus full router cost was 51→347ms for NVFP4 and 37→234ms for E4B over 3,277 decisions each, including non-routed cases/fallbacks. HTTP excludes router overhead; router time includes it. These are workflow means, not an isolated production comparison or an MTP speedup. Public inputs were previously observed.

Compatibility and scope

Presets provide defaults. Override --context (for example 16k), cache, batch and native branches where supported; choose vision, MTP and reasoning with explicit on/off flags. Run python3 scripts/winnow.py presets for short names and estimated memory. Custom settings do not inherit measured calibration or performance claims. See the setup notes for exact settings and supported combinations. Optional serving is tested on Linux/CUDA; Mac and multi-GPU adaptive use are not validated. Sampled memory peaks are indicative, not a sustained-capacity guarantee. Adaptive image calibration and a universal MTP speedup are not established. Direct serving needs neither assistant weights nor a reasoning policy.