How to use from
Lemonade
Pull the model
# Download Lemonade from https://lemonade-server.ai/
lemonade pull ZelligeAI/tessera-compressor:Q8_0
Run and chat with the model
lemonade run user.tessera-compressor-Q8_0
List all available models
lemonade list
Quick Links

tessera-compressor

tessera-compressor

A 1.5B model that compresses English reasoning text into a telegraphic CJK/symbol register under deterministic fidelity gates. It minted the training data for Tessera-Preview-9B and replaces the frontier-model teacher that originally produced the register: English reasoning text becomes compressed-register training data at local-inference cost, with no API key and no external dependency. Validation covered code-centric reasoning (103 held-out mixed blocks); behavior on distant domains is unmeasured.

Paper: Tessera-Preview-9B: Compressed Reasoning at 18x Fewer Tokens, and What It Costs — section 3.1 covers this compressor's design and acceptance record.

Example (real training pair, 85 to 49 tokens):

EN : So the classes are: - Integer (line 32) - Boolean (line 262) - BitString (line 341)
     - OctetString (line 693) ... Let me look at the base class to see if it defines __mul__:

CJK: Integer(line32),Boolean(line262),BitString(line341),OctetString(line693). 查基类是否定义__mul__:

How it works

The compressor operates on passages, not whole blocks. A reasoning block is segmented (code fences stay atomic), sentences are grouped into step-sized passages, each passage is classified as fact-dense or narrative, and the model compresses it against the tail of the chain built so far. Every model output then passes a deterministic gate: the passage's novel numbers and identifiers must survive as substrings, the output must not blow up in length, and it must not exceed a rules-only compression of the same passage in token count. A passage that fails any check falls back to the rules-only version, so a bad generation costs savings rather than gated content. The gate is lexical, not semantic: it prevents the loss of numbers and identifiers, and a judged semantic-equivalence check backed it at acceptance (below), but it does not by itself guarantee semantic preservation on arbitrary input.

Acceptance record

Measured on 103 held-out reasoning blocks the model never trained on, under criteria fixed before evaluation:

Criterion Result
Per-passage fidelity gate (numbers and identifiers survive) 99.0%
Median per-passage compression ratio (output/input tokens) 0.716
CJK adoption 98.9% of compressed passages
Judged semantic equivalence 103/103 blocks (teacher references on the same blocks: 97.1%)
Degenerate outputs 0
Net corpus savings (after 24% rules-only fallback) 30.4%

On whole thinks in downstream production use (45,202 pairs), the compressed rendering costs a median 0.58x the tokens of its English source.

Files

  • Root: merged model, standard Hugging Face format (bf16). Base: Qwen2.5-Coder-1.5B-Instruct, LoRA r=16 merged in.
  • gguf/compressor-v31-q8_0.gguf: llama.cpp quantization, validated behaviorally (scores 4/4 on the same acceptance suite). q4_k_m showed visible drift and is not published.
  • scripts/: the complete usage harness. No tokens or keys required anywhere.

Usage

Serve the model behind any OpenAI-compatible endpoint:

vllm serve ZelligeAI/tessera-compressor --port 8001
# or, CPU-friendly:
llama-server -m gguf/compressor-v31-q8_0.gguf --port 8001

Then run the harness:

cd scripts && pip install -r requirements.txt

# compress one reasoning block from a text file
python compress.py --in think.txt --endpoint http://localhost:8001/v1

# compress a corpus: {"id": ..., "text": ...} per JSONL line
python compress.py --in blocks.jsonl --out compressed.jsonl \
    --endpoint http://localhost:8001/v1

Output records carry the compressed text, source and output token counts, and per-block harness stats (model-accepted vs rules-fallback passage counts).

scripts/ contents:

  • compress.py: the driver. Segment, classify, compress per passage with chain context, gate, fall back on failure.
  • segmenting.py: segmentation, passage grouping, fact extraction, classification, and the fidelity gate. Pure text processing.
  • tokenmax.py: deterministic token-saving substitutions, used as the rules-only fallback and as a post-processor.

One note on token counting: the gate compares token counts under a tokenizer you choose (--tokenizer, default this repo). To reproduce the acceptance harness exactly, point it at the tokenizer of the model you are minting data for (the acceptance run used the Qwen3.5 target tokenizer).

Throughput on the acceptance hardware was 19.6K blocks/hour on one GPU, which makes minting compressed data cheap at any corpus size.

License

Apache-2.0, same as the base model.

Downloads last month
-
Safetensors
Model size
2B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ZelligeAI/tessera-compressor

Quantized
(141)
this model