Instructions to use Livesport/pplx-decider-v1.1-27b-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/pplx-decider-v1.1-27b-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/pplx-decider-v1.1-27b-GGUF:Q5_K_M # Run inference directly in the terminal: llama cli -hf Livesport/pplx-decider-v1.1-27b-GGUF:Q5_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Livesport/pplx-decider-v1.1-27b-GGUF:Q5_K_M # Run inference directly in the terminal: llama cli -hf Livesport/pplx-decider-v1.1-27b-GGUF:Q5_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/pplx-decider-v1.1-27b-GGUF:Q5_K_M # Run inference directly in the terminal: ./llama-cli -hf Livesport/pplx-decider-v1.1-27b-GGUF:Q5_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/pplx-decider-v1.1-27b-GGUF:Q5_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf Livesport/pplx-decider-v1.1-27b-GGUF:Q5_K_M
Use Docker
docker model run hf.co/Livesport/pplx-decider-v1.1-27b-GGUF:Q5_K_M
- LM Studio
- Jan
- Ollama
How to use Livesport/pplx-decider-v1.1-27b-GGUF with Ollama:
ollama run hf.co/Livesport/pplx-decider-v1.1-27b-GGUF:Q5_K_M
- Unsloth Desktop
- Pi
How to use Livesport/pplx-decider-v1.1-27b-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/pplx-decider-v1.1-27b-GGUF:Q5_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/pplx-decider-v1.1-27b-GGUF:Q5_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Livesport/pplx-decider-v1.1-27b-GGUF with Docker Model Runner:
docker model run hf.co/Livesport/pplx-decider-v1.1-27b-GGUF:Q5_K_M
- Lemonade
How to use Livesport/pplx-decider-v1.1-27b-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Livesport/pplx-decider-v1.1-27b-GGUF:Q5_K_M
Run and chat with the model
lemonade run user.pplx-decider-v1.1-27b-GGUF-Q5_K_M
List all available models
lemonade list
- Hermes Agent
How to use Livesport/pplx-decider-v1.1-27b-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/pplx-decider-v1.1-27b-GGUF:Q5_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/pplx-decider-v1.1-27b-GGUF:Q5_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Livesport/pplx-decider-v1.1-27b-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/pplx-decider-v1.1-27b-GGUF:Q5_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/pplx-decider-v1.1-27b-GGUF:Q5_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"
pplx-decider-v1.1-27b β GGUF
llama.cpp port of perplexity-ai/pplx-decider-v1.1-27b,
a decision model: it does not generate text, it answers typed questions about a shared state and
returns calibrated probabilities. Same request shape as TypeSafe's Jev (state + noul / choice
/ score questions).
The upstream checkpoint is bf16 safetensors that needs torch and ~49 GB of weights. This repo makes it runnable under llama.cpp.
| file | size | KL vs bf16 | decision flips |
|---|---|---|---|
pplx-decider-v1.1-27b-Q8_0.gguf |
25.4 GB | 0.000118 | 1 / 240 |
pplx-decider-v1.1-27b-Q5_K_M-dyn.gguf |
18.2 GB | 0.000794 | 1 / 240 |
pplx-decider-v1.1-27b-imatrix.gguf |
14 MB | β | β |
Both quants carry the decision head inside the GGUF as cls.output.weight;
readout.safetensors is shipped as well so a runtime can load it independently.
Three things to know before deploying this
1. The attention is bidirectional, so there is no prefix to cache. The checkpoint's
attention_mode is noncausal_full_attention: 16 of the 64 layers run full attention with the
causal mask removed, the other 48 are linear/recurrent and keep theirs. The prompt is ordered
State β Question β Options, so the state's representation depends on which question follows it.
Nothing can be reused between questions, and the upstream code enforces this by refusing a KV
cache outright. Each question is a full forward pass over the whole state. The first full-attention
layer is index 3, so the theoretical ceiling for prefix reuse is 3 of 64 layers (~5 %).
This is the same property that makes the model good: because it can re-read the subject after seeing the question, it handles Czech case marking and word order better than causal decision models. Accuracy and throughput are traded against each other here, not independent.
2. Over 8192 tokens it refuses rather than truncates. prepare() raises instead of cutting
the record ("no input was truncated"), and the server in runtime/ returns HTTP 400. That is
worth preferring over a model that silently answers from a fragment with high confidence.
3. It is a dense 27B. ~25.6 B parameters (after dropping the vision tower), no MoE, all of it active on every pass. Measured ~1.05 ms per token of state on a GB10: 0.56 s at 0.5k tokens, 8.7 s at the 8192-token maximum. It will not fit an 8 GB card in any of these quants.
Quantization
llama-imatrix over 5.0 MB (1707 prompts) rendered with the model's own decision_messages()
and chat template from 603 real Czech and English article states, with a mix of noul / choice /
score questions and option counts from 2 to 23. Calibration in the production prompt shape, not
plain prose.
The quality metric is KL divergence on the decision distribution, not token perplexity. This
model has no language head, so llama-perplexity and the generic KL tooling measure something it
never does β the reported perplexity during imatrix collection is ~5Β·10β΅ and is meaningless. The
numbers here compare the 255-way option distribution against the bf16 GGUF, on 240 held-out states
(a different seed from the calibration corpus).
All ten candidates, measured identically:
| candidate | size | mean |dp| | p99 |dp| | KL | flips |
|---|---|---|---|---|---|
| Q8_0 | 25.38 GB | 0.00227 | 0.01795 | 0.000118 | 1 |
| Q6_K + ssm f32 | 19.67 GB | 0.00389 | 0.03574 | 0.000453 | 3 |
| Q6_K | 19.60 GB | 0.00420 | 0.05000 | 0.000588 | 1 |
| Q5_K_M-dyn | 18.24 GB | 0.00583 | 0.05408 | 0.000794 | 1 |
| Q4_K_M | 14.75 GB | 0.00961 | 0.09077 | 0.002188 | 2 |
| Q4_K_M + embd q8_0 | 15.03 GB | 0.00970 | 0.09869 | 0.002287 | 2 |
| Q4_K_M + ssm f32 | 14.82 GB | 0.00967 | 0.10589 | 0.002384 | 4 |
| Q4_K_M + full layout | 16.16 GB | 0.01003 | 0.10748 | 0.002701 | 2 |
| Q5_K_M | 17.10 GB | 0.00863 | 0.13787 | 0.002774 | 3 |
| Q5_K_M + ssm f32 | 17.17 GB | 0.01008 | 0.14577 | 0.004088 | 5 |
A paired bootstrap (10 000 resamples over the same 240 items) on the three best:
| pair | ΞKL | 95 % CI | verdict |
|---|---|---|---|
| Q8_0 β Q6_K | β0.000470 | [β0.000862, β0.000178] | real |
| Q8_0 β Q5_K_M-dyn | β0.000677 | [β0.000963, β0.000440] | real |
| Q6_K β Q5_K_M-dyn | β0.000207 | [β0.000598, +0.000233] | not distinguishable |
Q6_K is therefore not published: it is 1.4 GB larger than Q5_K_M-dyn with no measurable quality advantage on this set. Q8_0 is a real improvement and is published for anyone who wants the headroom.
What did not work
Published recipes are usually a list of things that helped. These are the things that did not, because they cost a day to find out:
cls.output.weight=f16is a no-op.llama-quantizeleaves the 255Γ5120 decision head at bf16 on its own.--output-tensor-typedoes not reach it either β that flag targetsoutput.weight, which this checkpoint does not have.- Forcing the recurrent gains to f32 makes things worse.
ssm_alpha/beta/dt/conv1d = f32alone raised KL at both Q4 (0.0022 β 0.0024) and Q5 (0.0028 β 0.0041), and doubled the flips. The gain inQ5_K_M-dyncomes from the rest of the layout, chieflyssm_outand the attention projections at q8_0. --token-embedding-type q8_0changed nothing measurable (0.002188 β 0.002287).- Lower KL does not mean better decisions.
Q6_K + ssm f32has a lower mean KL than plainQ6_K(0.000453 vs 0.000588) and three times the flips (3 vs 1). Selecting on mean KL alone would have picked the worse model. - A layout lifted from a different model in the same family (Clef-Flash) did not transfer.
Caveats on these numbers
240 items is a small sample and KL is heavily skewed β the worst 5 % of items carry 45β71 % of the total. That is why the confidence intervals are wide and why differences inside the 2β4Β·10β»Β³ group should not be read as a ranking. The two gaps claimed above are the only ones the bootstrap supports.
Port fidelity
Before any quantization, the bf16 GGUF was checked against the original torch checkpoint on 25 Czech and English items:
| mode | mean |dp| | max |dp| | flipped decisions |
|---|---|---|---|
| non-causal (correct) | 0.00042 | 0.00641 | 0 / 25 |
| causal (control) | 0.13590 | 0.99602 | 3 / 25 |
The causal control is the proof that llama_set_causal_attn(ctx, false) is doing real work and
that llama.cpp's routing matches the model's own hook: causal_attn reaches only
set_input_kq_mask, i.e. the full-attention layers, leaving the recurrent ones alone.
All quant numbers above are measured against this bf16 GGUF, so port error (4Β·10β»β΄) and quantization error are not mixed together.
Running it
runtime/pplx_bridge.cpp is a small binary that takes token ids on stdin and returns the last
token's hidden state; runtime/pplx_api.py puts a Jev-compatible POST /v1/systemone in front of
it and applies the readout.
g++ -O2 -std=c++17 -I llama.cpp/include -I llama.cpp/ggml/include -I llama.cpp/src \
runtime/pplx_bridge.cpp -L <build>/bin -lllama -lggml-base \
-Wl,--allow-shlib-undefined -Wl,-rpath,<build>/bin -o pplx_bridge
MODEL_DIR=. GGUF=./pplx-decider-v1.1-27b-Q5_K_M-dyn.gguf BRIDGE=./pplx_bridge \
python3 runtime/pplx_api.py
curl -s localhost:8012/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"}}
}}'
Two requirements the bridge has that a normal llama.cpp model does not: causal_attn off, and
n_ubatch large enough for the whole prompt β chunking the prefill would cut the bidirectional
attention window at every chunk boundary.
How it compares
Measured on identical item sets against hosted Jev and Liquid d1 (via Vercel AI Gateway) and our own Clef-Flash and Rune deployments:
| pplx-decider | Jev | Liquid d1 | Clef-Flash | Rune 26B-A4B | |
|---|---|---|---|---|---|
| 16-item CZ/EN boolean | 16/16 | 15/16 | 15/16 | 15/16 | 14/16 |
| Brier (calibration) | 0.013 | 0.061 | 0.063 | 0.065 | 0.100 |
| Czech OVS word order | 7/9 | 5/9 | 5/9 | 5/9 | 5/9 |
| latency at 2k tokens | 2.1 s | 0.30 s | 0.37 s | 1.8 s | β |
| state limit | 8 192 | 32 000 | 65 536 | 16 384 | 16 384 |
| shared prefix across questions | no | yes | yes | yes | yes |
It is the most accurate and by far the best calibrated decision model we have measured, and the
only one that gets any of the Czech object-verb-subject items right β "Spartu porazila PlzeΕ 2:1." / "VyhrΓ‘la PlzeΕ?" is answered 1.00 here and 0.00β0.02 by everything else. It still misses
two of the four OVS items, both times confidently.
The cost is throughput: no prefix sharing means a 10-question evaluation over one state costs ten full passes (21.7 s at 2k tokens, versus 2.0 s for Clef-Flash, which answers all ten in one pass). Pick this model when the verdict matters more than the rate.
Licence
Apache 2.0, inherited from the upstream checkpoint. runtime/autojev/ is the upstream prompt and
answer code, redistributed under the same licence.
- Downloads last month
- 5,867