Instructions to use EldanRing/Winnow-E4B 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-E4B 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-E4B:BF16 # Run inference directly in the terminal: llama cli -hf EldanRing/Winnow-E4B:BF16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf EldanRing/Winnow-E4B:BF16 # Run inference directly in the terminal: llama cli -hf EldanRing/Winnow-E4B: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-E4B:BF16 # Run inference directly in the terminal: ./llama-cli -hf EldanRing/Winnow-E4B: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-E4B:BF16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf EldanRing/Winnow-E4B:BF16
Use Docker
docker model run hf.co/EldanRing/Winnow-E4B:BF16
- LM Studio
- Jan
- vLLM
How to use EldanRing/Winnow-E4B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "EldanRing/Winnow-E4B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "EldanRing/Winnow-E4B", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/EldanRing/Winnow-E4B:BF16
- Ollama
How to use EldanRing/Winnow-E4B with Ollama:
ollama run hf.co/EldanRing/Winnow-E4B:BF16
- Unsloth Desktop
- Docker Model Runner
How to use EldanRing/Winnow-E4B with Docker Model Runner:
docker model run hf.co/EldanRing/Winnow-E4B:BF16
- Lemonade
How to use EldanRing/Winnow-E4B with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull EldanRing/Winnow-E4B:BF16
Run and chat with the model
lemonade run user.Winnow-E4B-BF16
List all available models
lemonade list
- Atomic Chat
Refocus Winnow-E4B model card on model and decision workflow
Browse files
README.md
CHANGED
|
@@ -14,178 +14,104 @@ tags:
|
|
| 14 |
|
| 15 |
# Winnow-E4B
|
| 16 |
|
| 17 |
-
**
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
the
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
## Decision quality
|
| 74 |
-
|
| 75 |
-
All numbers below are Q8 GGUF results on the same frozen questions. The matched
|
| 76 |
-
E4B/12B release run used an RTX 5070 Ti and the same HTTP runner. Percentages are
|
| 77 |
-
top-choice accuracy before temperature scaling, which does not change winners.
|
| 78 |
|
| 79 |
| Evaluation | Winnow-E4B Q8 | Winnow-12B Q8 |
|
| 80 |
|---|---:|---:|
|
| 81 |
-
| JevBench public subset, 231
|
| 82 |
-
| Kev v9 clean, 1,046
|
| 83 |
-
| Kev v9 additional, 390
|
| 84 |
-
| Local typed decisions, 2,000
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
|
| 107 |
-
|
|
| 108 |
-
|
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
synthetic 1024 × 1024 status-panel image occupied 441 positions. A request with
|
| 121 |
-
65,023 shared-prefix positions, including that image, answered **6/6** visual
|
| 122 |
-
and text questions. Cold request time was **11.59 s**, including 10.96 s of
|
| 123 |
-
prefill; identical cached follow-ups took **129–131 ms**. Sampled peak GPU
|
| 124 |
-
memory was **10,723 MiB (10.47 GiB)**. A changed image invalidated the cache
|
| 125 |
-
as expected.
|
| 126 |
-
|
| 127 |
-
A separate chat probe generated 512 tokens on a 62,431-position multimodal
|
| 128 |
-
prompt at **71.2 output tokens/s**, with **9.98 s** to first content and
|
| 129 |
-
**10,979 MiB (10.72 GiB)** sampled peak GPU memory. Three short chat runs
|
| 130 |
-
generated at a median **119.1 tokens/s**. These are operational probes: they
|
| 131 |
-
establish that the image path, long context and chat generation work, not broad
|
| 132 |
-
vision accuracy, long-context reasoning quality or chat quality. The
|
| 133 |
-
[benchmark report](docs/BENCHMARKS.md#64k-context-and-vision-smoke-test) gives
|
| 134 |
-
the exact method and limits.
|
| 135 |
-
|
| 136 |
-
## GGUF packaging
|
| 137 |
-
|
| 138 |
-
The selected step-438 language adapter was merged into the pinned Gemma 4 E4B IT
|
| 139 |
-
base as `FP32(base) + FP32(B @ A) × alpha/rank`, then converted to Q8_0 or BF16
|
| 140 |
-
with a pinned llama.cpp converter. The FP32 merge avoids rounding the learned
|
| 141 |
-
update to BF16 before conversion. Each artifact is a complete merged model; the original
|
| 142 |
-
adapter and private training checkpoint are not needed for inference.
|
| 143 |
-
|
| 144 |
-
## Training
|
| 145 |
-
|
| 146 |
-
Winnow-E4B is a **LoRA fine-tune**, not a full-parameter training run. It
|
| 147 |
-
continues a selected E4B decision adapter with a targeted local update; the
|
| 148 |
-
released GGUF contains the merged weights.
|
| 149 |
-
|
| 150 |
-
| Setting | Value |
|
| 151 |
-
|---|---|
|
| 152 |
-
| Base | `google/gemma-4-E4B-it` |
|
| 153 |
-
| Base revision | `ee0ef6023621cff504d758262d4e04895a5af4a2` |
|
| 154 |
-
| LoRA rank / alpha | 32 / 64 |
|
| 155 |
-
| Adapted weights | 294 language tensors; vision and audio modules frozen |
|
| 156 |
-
| Targeted continuation | Selected step 438; effective batch 16; up to 8,192 input tokens |
|
| 157 |
-
| Export | FP32 adapter merge, then Q8_0 or BF16 GGUF |
|
| 158 |
-
|
| 159 |
-
**The training dataset is private and is not released.** It combines synthetic
|
| 160 |
-
contrastive decisions, verified labels, teacher distributions where appropriate,
|
| 161 |
-
semantic tasks and targeted hard cases. Training, development, calibration and
|
| 162 |
-
reserved tests were separated. Public suites were used for evaluation and also
|
| 163 |
-
informed later targeted data design, as described above. No claim is made about
|
| 164 |
-
excluding these tasks from the base model's pretraining.
|
| 165 |
-
|
| 166 |
-
## Probabilities and scope
|
| 167 |
-
|
| 168 |
-
The server normalizes logits over the supplied answer options. For this Q8
|
| 169 |
-
artifact, a **1.257417** temperature was fitted on 778 reserved calibration
|
| 170 |
-
decisions (646 ordinary and 132 long). Pass it as `winnow.temperature` in each
|
| 171 |
-
`/v1/systemone` request when using the measured calibration. It changes
|
| 172 |
-
probabilities, not the selected answer. It is not a universal guarantee of
|
| 173 |
-
correctness; calibration quality varies by task and length. On the combined
|
| 174 |
-
already-opened reserved test panels, E4B's calibrated proper loss improved over
|
| 175 |
-
the prior E4B checkpoint while labeled accuracy was unchanged.
|
| 176 |
-
|
| 177 |
-
BF16's separately fitted decision temperature is **1.333155** on the same 778
|
| 178 |
-
reserved calibration decisions. The Q8 temperature above should not be applied
|
| 179 |
-
to BF16. The matched quality and throughput suites use 8K text decisions; the
|
| 180 |
-
separate Q8 64K + vision and chat probes above establish runtime capability on
|
| 181 |
-
the tested 5070 Ti. General chat and real-image vision quality remain unmeasured.
|
| 182 |
|
| 183 |
## Credits and license
|
| 184 |
|
| 185 |
-
Winnow-E4B is an independent fine-tune by EldanRing of Google DeepMind's
|
| 186 |
-
[Gemma 4 E4B IT](https://huggingface.co/google/gemma-4-E4B-it), released under
|
| 187 |
-
[Apache 2.0](https://ai.google.dev/gemma/docs/gemma_4_license). See [LICENSE](LICENSE)
|
| 188 |
-
and [NOTICE](NOTICE). The separate inference code builds on
|
| 189 |
-
[llama.cpp](https://github.com/ggml-org/llama.cpp) and preserves its MIT license.
|
| 190 |
-
Jev-style describes the typed-decision interface; Winnow is not affiliated with
|
| 191 |
-
or endorsed by TypeSafe, Google or llama.cpp.
|
|
|
|
| 14 |
|
| 15 |
# Winnow-E4B
|
| 16 |
|
| 17 |
+
**A compact Gemma 4 fine-tune for typed decisions that also supports ordinary chat and image input.**
|
| 18 |
+
|
| 19 |
+
Winnow-E4B takes a shared state and a set of questions, then assigns probabilities to the answers each question supplies. The decision path reads candidate-answer logits without generating an explanation. It is designed for tasks such as routing a request, choosing an action, checking a condition, or rating urgency when the possible answers are known. The same merged model weights remain available for regular chat; image input uses the matching vision projector.
|
| 20 |
+
|
| 21 |
+
Winnow-E4B was created by EldanRing from [Gemma 4 E4B IT](https://huggingface.co/google/gemma-4-E4B-it). The downloadable GGUFs have the decision fine-tune merged into the language model. They require no separate adapter or base-model download.
|
| 22 |
+
|
| 23 |
+
[Run the model](docs/QUICKSTART.md) · [Inference code](https://github.com/EldanRing/winnow-inference) · [API reference](https://github.com/EldanRing/winnow-inference/blob/main/docs/API.md) · [Evaluation details](docs/BENCHMARKS.md)
|
| 24 |
+
|
| 25 |
+
## How decisions work
|
| 26 |
+
|
| 27 |
+
The [Winnow inference server](https://github.com/EldanRing/winnow-inference) exposes `/v1/systemone`. A request provides one state and any combination of these question types:
|
| 28 |
+
|
| 29 |
+
| Type | What the caller supplies | What the server returns |
|
| 30 |
+
|---|---|---|
|
| 31 |
+
| `noul` | A yes/no question | Probability of `true` |
|
| 32 |
+
| `choice` | Named options with optional descriptions | Selected option, option probabilities, confidence |
|
| 33 |
+
| `score` | An ordered list of levels | Level probabilities, expected score, confidence |
|
| 34 |
+
|
| 35 |
+
The server shares the state prefill across questions, reuses a matching cached prefix when possible, and evaluates only the verified answer-token candidates for each question. Questions can be processed in parallel branches or waves without loading another copy of the model. Ordinary `/v1/chat/completions` uses the normal vocabulary head and chat template, including streaming and image messages when the projector is loaded.
|
| 36 |
+
|
| 37 |
+
For example, one request can ask both whether a customer wants a refund and which team should handle the ticket:
|
| 38 |
+
|
| 39 |
+
```json
|
| 40 |
+
{
|
| 41 |
+
"model": "Winnow-E4B",
|
| 42 |
+
"state": {"ticket": "I was charged twice and need a refund."},
|
| 43 |
+
"questions": {
|
| 44 |
+
"refund": {
|
| 45 |
+
"type": "noul",
|
| 46 |
+
"instructions": "Does the customer request a refund?"
|
| 47 |
+
},
|
| 48 |
+
"department": {
|
| 49 |
+
"type": "choice",
|
| 50 |
+
"instructions": "Which team should handle this ticket?",
|
| 51 |
+
"criteria": {
|
| 52 |
+
"billing": "Payments and refunds",
|
| 53 |
+
"technical": "Software defects"
|
| 54 |
+
}
|
| 55 |
+
}
|
| 56 |
+
},
|
| 57 |
+
"winnow": {"temperature": 1.2574172017327816}
|
| 58 |
+
}
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
+
The [quickstart](docs/QUICKSTART.md#ask-typed-questions) shows a complete command. Candidate probabilities are conditional on the options supplied in a request. Confidence describes how concentrated the distribution is; it is not a guarantee that an answer is correct.
|
| 62 |
+
|
| 63 |
+
## Model and training
|
| 64 |
+
|
| 65 |
+
This is a **rank-32, alpha-64 LoRA fine-tune** of the instruction-tuned Gemma 4 E4B model. A selected decision adapter was continued on targeted hard cases, with step 438 chosen for export. The update trained language tensors; the vision and audio modules remained frozen. The adapter was merged in FP32 before conversion to Q8_0 and BF16 GGUF. Chat still has its full generation head, while the decision server projects only the requested answer rows.
|
| 66 |
+
|
| 67 |
+
The private training set combines synthetic contrastive decisions, verified labels, teacher distributions where appropriate, semantic tasks, and targeted hard cases. Training, development, calibration, and reserved tests were separated. **The training data and adapter checkpoint are not released.** Public evaluation suites were known before the targeted continuation was designed and informed task selection; the results below should be read as a comparison of deployed models, not a fresh unseen-task estimate.
|
| 68 |
+
|
| 69 |
+
## Decision results
|
| 70 |
+
|
| 71 |
+
These figures evaluate the **downloadable Q8 GGUF** against Winnow-12B Q8 on the same questions. They report top-choice accuracy, except the local typed panel, which reports agreement with synthetic teacher labels.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
| Evaluation | Winnow-E4B Q8 | Winnow-12B Q8 |
|
| 74 |
|---|---:|---:|
|
| 75 |
+
| JevBench public subset, 231 questions | **80.52%** (186/231) | 85.71% (198/231) |
|
| 76 |
+
| Kev v9 clean, 1,046 questions | **72.66%** | 81.45% |
|
| 77 |
+
| Kev v9 additional, 390 questions | **55.90%** | 68.97% |
|
| 78 |
+
| Local typed decisions, 2,000 decisions | **72.30%** | 70.10% |
|
| 79 |
+
|
| 80 |
+
Winnow-12B leads on the broader public suites. E4B leads by 2.2 points on this local typed panel, which uses synthetic teacher targets rather than independently verified truth for every item. The JevBench figure is **public-subset accuracy**, not the official composite leaderboard score. Methods, uncertainty intervals, calibration measures, and evaluation boundaries are in the [benchmark report](docs/BENCHMARKS.md).
|
| 81 |
+
|
| 82 |
+
In a separate matched 8K text decision workload, E4B Q8 delivered **147.8 decisions/s** at 64 questions per request, versus **67.2 decisions/s** for Winnow-12B Q8. Those are warm request medians on an RTX 5070 Ti, not a guarantee for other hardware or workloads. The [timing table](docs/BENCHMARKS.md#same-gpu-latency-and-memory) includes smaller batches and memory use.
|
| 83 |
+
|
| 84 |
+
## Probabilities and calibration
|
| 85 |
+
|
| 86 |
+
The server normalizes candidate logits over the options in each question. The optional `winnow.temperature` setting scales those logits without changing which option wins. For **Q8 text decisions**, `1.2574172017327816` was fitted on 778 separate calibration questions. For **BF16**, the separately fitted value is `1.3331553765162731`; do not reuse Q8's temperature for BF16.
|
| 87 |
+
|
| 88 |
+
These temperatures were measured for the evaluated text-decision profile. Calibration can change with task, prompt length, image input, and deployment settings. Check probabilities on held-out examples from the intended application before treating them as confidence in real-world correctness.
|
| 89 |
+
|
| 90 |
+
## Downloads and deployment
|
| 91 |
+
|
| 92 |
+
| File | Role | Size |
|
| 93 |
+
|---|---|---:|
|
| 94 |
+
| [Winnow-E4B-Q8_0.gguf](gguf/Winnow-E4B-Q8_0.gguf) | Recommended, fully measured language model | 8.01 GB / 7.46 GiB |
|
| 95 |
+
| [Winnow-E4B-BF16.gguf](gguf/Winnow-E4B-BF16.gguf) | Optional higher-precision language model | 15.05 GB / 14.02 GiB |
|
| 96 |
+
| [mmproj-Winnow-E4B.gguf](gguf/mmproj-Winnow-E4B.gguf) | Matching F16 projector for image input | 990 MB / 0.922 GiB |
|
| 97 |
+
|
| 98 |
+
Download Q8 for the measured decision, chat, and vision setup; add the projector for images. BF16 passed 8K text-decision serving but was not tested with images or populated 64K context. On reserved text tests it showed no consistent quality advantage over Q8. [Verify files](SHA256SUMS) after download.
|
| 99 |
+
|
| 100 |
+
| Q8 configuration | Observed peak device memory | Suggested GPU capacity |
|
| 101 |
+
|---|---:|---:|
|
| 102 |
+
| 8K text-only decision workload | 8.56 GiB | 10 GB+ VRAM |
|
| 103 |
+
| 64K vision and chat operational probes | 10.72 GiB across the probes | 12 GB+ VRAM |
|
| 104 |
+
|
| 105 |
+
Capacity suggestions come from one RTX 5070 Ti using Q8 KV cache, four decision branches, one chat slot, and exclusive memory scheduling. They have not been tested on every GPU in those tiers. The Q8 model and projector answered six questions over a 65,023-position state that included a synthetic image; repeated cached requests took 129–131 ms after an 11.59 s cold request. A separate 62,431-position multimodal chat prompt generated 512 tokens at 71.2 output tokens/s. The [benchmark report](docs/BENCHMARKS.md#64k-context-and-vision-smoke-test) describes these operational probes and their limits.
|
| 106 |
+
|
| 107 |
+
## Scope and limitations
|
| 108 |
+
|
| 109 |
+
- The decision path is intended for supplied answer options. Open-ended responses use the regular chat endpoint.
|
| 110 |
+
- General chat quality, real-image vision accuracy, and broad long-context reasoning have not been established by these probes. The image test used a synthetic status panel. Vision and audio modules were not fine-tuned for this release.
|
| 111 |
+
- The public suites were known during targeted data design. The local typed panel measures agreement with synthetic teacher labels. Neither result establishes accuracy for every downstream task.
|
| 112 |
+
- Probability calibration was fitted on text decisions. It needs validation for a new domain or multimodal workload.
|
| 113 |
+
- The 64K and vision measurements apply to **Q8 with the matching projector**. BF16 was evaluated only in the text profile.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
|
| 115 |
## Credits and license
|
| 116 |
|
| 117 |
+
Winnow-E4B is an independent fine-tune by EldanRing of Google DeepMind's [Gemma 4 E4B IT](https://huggingface.co/google/gemma-4-E4B-it), released under [Apache 2.0](https://ai.google.dev/gemma/docs/gemma_4_license). See [LICENSE](LICENSE) and [NOTICE](NOTICE). The separate inference code builds on [llama.cpp](https://github.com/ggml-org/llama.cpp) and preserves its MIT license. Jev-style describes the typed-decision interface; Winnow is not affiliated with or endorsed by TypeSafe, Google, or llama.cpp.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|