Instructions to use Livesport/d3-flash-GGUF 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 Livesport/d3-flash-GGUF 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 Livesport/d3-flash-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf Livesport/d3-flash-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Livesport/d3-flash-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf Livesport/d3-flash-GGUF:Q4_K_M
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 Livesport/d3-flash-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf Livesport/d3-flash-GGUF:Q4_K_M
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 Livesport/d3-flash-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf Livesport/d3-flash-GGUF:Q4_K_M
Use Docker
docker model run hf.co/Livesport/d3-flash-GGUF:Q4_K_M
- LM Studio
- Jan
- Ollama
How to use Livesport/d3-flash-GGUF with Ollama:
ollama run hf.co/Livesport/d3-flash-GGUF:Q4_K_M
- Unsloth Desktop
- Pi
How to use Livesport/d3-flash-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Livesport/d3-flash-GGUF:Q4_K_M
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": "Livesport/d3-flash-GGUF:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Livesport/d3-flash-GGUF with Docker Model Runner:
docker model run hf.co/Livesport/d3-flash-GGUF:Q4_K_M
- Lemonade
How to use Livesport/d3-flash-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Livesport/d3-flash-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.d3-flash-GGUF-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Livesport/d3-flash-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Livesport/d3-flash-GGUF:Q4_K_M
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 Livesport/d3-flash-GGUF:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Livesport/d3-flash-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Livesport/d3-flash-GGUF:Q4_K_M
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 "Livesport/d3-flash-GGUF:Q4_K_M" \ --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"
d3-flash — GGUF
llama.cpp port of vllm-sr/d3-flash, the 9B model of
Decision 3.0. It does not generate text: it answers typed questions about a shared state
(noul / choice / score) and returns a probability for every option, in the same request
shape as TypeSafe's Jev.
The upstream checkpoint is bf16 safetensors (~17 GB) that needs torch and flash-linear-attention.
These files run under stock llama-server, which serves them on /v1/systemone natively — the
decision metadata, the answer codes and the prompt template are inside the GGUF.
| file | size | KL vs bf16 | decision flips |
|---|---|---|---|
d3-flash-Q8_0.gguf |
8.87 GiB | 0.000193 | 2 / 371 |
d3-flash-Q5_K_M-dyn.gguf |
6.58 GiB | 0.000866 | 5 / 371 |
d3-flash-Q4_K_M-dyn.gguf |
5.96 GiB | 0.001864 | 7 / 371 |
d3-flash-Q4_K_M.gguf |
5.24 GiB | 0.003530 | 6 / 371 |
d3-flash-imatrix.gguf |
10 MB | — | — |
-dyn keeps ssm_out and the attention projections (attn_qkv, attn_output, attn_gate) at
q8_0. The 255-way decision head travels inside the GGUF as output.weight, expanded to one row
per answer-code token; readout.safetensors and decision_config.json are shipped as well so any
other runtime can load the head on its own.
Three things to know before deploying this
1. The attention is bidirectional, so there is no prefix to cache. attention_mode of the
checkpoint is noncausal_full_attention: 8 of the 32 layers run softmax attention with the causal
mask removed, the other 24 are linear (Gated DeltaNet) and keep theirs. The prompt is ordered
State → Question → Options, so the state's representation depends on which question follows it.
Each question is a full forward pass over the whole state.
This has a consequence for llama-server as of today's master: its decision path groups the
questions of one request and lets them share the state's KV prefix, which is correct for a causal
decision model and wrong for this one. Measured against the torch reference on 143 questions:
| mean |dp| | max |dp| | flips | |
|---|---|---|---|
| stock server, multi-question request | 0.00844 | 0.289 | 0 / 143 |
| one question per request | 0.00067 | 0.0069 | 0 / 143 |
| patched server, multi-question request | 0.00103 | 0.029 | 0 / 143 |
runtime/llama.cpp-noncausal-no-shared-prefix.patch makes can_share_prompt() return false when
the context is non-causal. Without it, send one question per request.
2. Flash attention decides whether it fits a small card. The whole prompt goes through in one
ubatch (chunking would cut the bidirectional window), so the attention scratch is quadratic in the
prompt without FA. Measured on a GB10 with -np 1, Q4_K_M:
| ctx | model | KV (8 layers) | recurrent | compute, -fa on |
compute, -fa off |
total, -fa on |
|---|---|---|---|---|---|---|
| 2 048 | 4 812 MiB | 64 MiB | 50 MiB | 424 MiB | 480 MiB | 5 350 MiB |
| 4 096 | 4 812 MiB | 128 MiB | 50 MiB | 864 MiB | 1 504 MiB | 5 854 MiB |
| 8 192 | 4 812 MiB | 256 MiB | 50 MiB | 1 792 MiB | 5 184 MiB | 6 910 MiB |
| 16 384 | 4 812 MiB | 512 MiB | 50 MiB | 3 841 MiB | 19 072 MiB | 9 215 MiB |
So Q4_K_M fits an 8 GB card up to 8k tokens of context with flash attention; without it, only
up to about 4k. The KV cache itself is cheap because only every fourth layer is attention.
3. It accepts any length and never truncates. Unlike Clef-Flash there is no silent cut-off, but a long state is expensive: each question re-reads it. Measured on a GB10 (torch runtime, bf16): 0.28 s for one question over 600 tokens, 1.63 s for five; 1.46 s / 6.43 s over 2.5k tokens. Pick this model for short states and for verdicts that matter, not for ten questions over a long document.
Quantization
llama-imatrix over 2 482 prompts (1.4 M tokens) rendered with the model's own d3_format.render
and chat template from real Czech and English states, with a mix of noul / choice / score questions.
Calibration in the production prompt shape, not plain prose.
The quality metric is KL divergence on the decision distribution, not token perplexity: the
model has no language head, so llama-perplexity measures something it never does (the perplexity
reported during imatrix collection is ~2·10⁵ and is meaningless). KL is measured against the bf16
GGUF on 371 held-out questions, a different seed from the calibration corpus.
A paired bootstrap (10 000 resamples over the same 371 questions):
| pair | ΔKL | 95 % CI | verdict |
|---|---|---|---|
| Q8_0 − Q5_K_M-dyn | −0.000673 | [−0.001096, −0.000382] | real |
| Q5_K_M-dyn − Q4_K_M-dyn | −0.000998 | [−0.001514, −0.000561] | real |
| Q4_K_M-dyn − Q4_K_M | −0.001666 | [−0.002572, −0.000829] | real |
| Q4_K_M-dyn − Q5_K_M | −0.000637 | [−0.001702, +0.000204] | not distinguishable |
Plain Q5_K_M is therefore not published: at 6.02 GiB it is larger than Q4_K_M-dyn with no
measurable advantage. Unlike the pplx-decider port, where a layout borrowed from another model of
the family did not transfer, here the -dyn layout is worth its extra bytes at both Q4 and Q5.
Port fidelity
Before any quantization, the bf16 GGUF was checked against the original torch checkpoint on 143 Czech and English questions: mean |dp| 0.00067, max 0.0069, 0 flipped decisions (one question per request; see the table above for the shared-prefix caveat).
Running it
Stock llama-server from a build that knows the pplx-decider decision type:
llama-server -m d3-flash-Q4_K_M.gguf -c 8192 -b 8192 -ub 8192 -np 1 -fa on -ngl 99
-b/-ub must cover the whole prompt — chunked prefill would cut the bidirectional attention
window at every chunk boundary.
curl -s localhost:8080/v1/systemone -H 'Content-Type: application/json' -d '{
"state": "Spartu porazila Plzeň 2:1.",
"questions": {
"won": {"type": "noul", "instructions": "Vyhrála Plzeň?"},
"topic": {"type": "choice", "instructions": "Classify the state.",
"criteria": {"sport": "sport", "politics": "politics", "other": "anything else"}}
}}'
Converting the checkpoint yourself needs runtime/conversion_d3.py (drop it into conversion/ of
llama.cpp as d3.py, register "D3Model": "d3" in conversion/__init__.py); it reuses the
pplx-decider converter and adds d3's prompt, plus attention.causal = false from
decision_config.json.
How it compares
Measured on identical sets against our own deployments (Rune 26B-A4B IQ3_S, Clef-Flash Q5, Decision 2.0 Lux-9B Q4) on a GB10:
| d3-flash | Rune | Clef-Flash | Lux-9B | |
|---|---|---|---|---|
| 7 580-question suite, 12 tasks | 79.3 % | 76.3 % | 76.2 % | 76.5 % |
| — English | 86.6 % | 82.4 % | 82.6 % | 83.6 % |
| — Czech | 66.6 % | 65.7 % | 64.9 % | 64.2 % |
| ECE | 0.062 | 0.052 | 0.093 | 0.079 |
| hard set (Czech sarcasm, threats) | 84.8 % | 93.5 % | 71.7 % | 73.9 % |
| BoolQ | 92.9 % | 81.8 % | 89.8 % | 89.4 % |
| shared prefix across questions | no | yes | yes | yes |
It is the strongest model we have measured on the broad suite and on English, and the first 9B that holds its own against Rune in Czech. Rune stays ahead on Czech fact verification (CTKFacts 72.9 vs 68.6) and on the hard Czech set; d3-flash costs one full pass per question, which Rune and Clef do not.
Licence
Apache 2.0, inherited from the upstream checkpoint.
- Downloads last month
- 1,583