Instructions to use EldanRing/Winnow-12B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use EldanRing/Winnow-12B with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf EldanRing/Winnow-12B:BF16 # Run inference directly in the terminal: llama cli -hf EldanRing/Winnow-12B:BF16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf EldanRing/Winnow-12B:BF16 # Run inference directly in the terminal: llama cli -hf EldanRing/Winnow-12B:BF16
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf EldanRing/Winnow-12B:BF16 # Run inference directly in the terminal: ./llama-cli -hf EldanRing/Winnow-12B:BF16
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf EldanRing/Winnow-12B:BF16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf EldanRing/Winnow-12B:BF16
Use Docker
docker model run hf.co/EldanRing/Winnow-12B:BF16
- Llama new
- LM Studio
- Jan
- vLLM
How to use EldanRing/Winnow-12B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "EldanRing/Winnow-12B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "EldanRing/Winnow-12B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/EldanRing/Winnow-12B:BF16
- Ollama
How to use EldanRing/Winnow-12B with Ollama:
ollama run hf.co/EldanRing/Winnow-12B:BF16
- Unsloth Desktop
- Pi
How to use EldanRing/Winnow-12B with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf EldanRing/Winnow-12B:BF16
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "EldanRing/Winnow-12B:BF16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use EldanRing/Winnow-12B with Docker Model Runner:
docker model run hf.co/EldanRing/Winnow-12B:BF16
- Lemonade
How to use EldanRing/Winnow-12B with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull EldanRing/Winnow-12B:BF16
Run and chat with the model
lemonade run user.Winnow-12B-BF16
List all available models
lemonade list
- Hermes Agent
How to use EldanRing/Winnow-12B with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf EldanRing/Winnow-12B:BF16
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default EldanRing/Winnow-12B:BF16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use EldanRing/Winnow-12B with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf EldanRing/Winnow-12B:BF16
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "EldanRing/Winnow-12B:BF16" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Download docs/REASONING.md from EldanRing/Winnow-12B: direct link, hf CLI and curl.
- Browser
- Download file 7.09 kB
-
https://huggingface.co/EldanRing/Winnow-12B/resolve/main/docs/REASONING.md
- Command line
-
hf download hf://EldanRing/Winnow-12B/docs/REASONING.md
-
curl -L -o REASONING.md https://huggingface.co/EldanRing/Winnow-12B/resolve/main/docs/REASONING.md
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.
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.
