Instructions to use ZelligeAI/Tessera-27B-B-CJK-RL-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 ZelligeAI/Tessera-27B-B-CJK-RL-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 ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL # Run inference directly in the terminal: llama cli -hf ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL # Run inference directly in the terminal: llama cli -hf ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL # Run inference directly in the terminal: ./build/bin/llama cli -hf ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
Use Docker
docker model run hf.co/ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
- Llama new
- LM Studio
- Jan
- Ollama
How to use ZelligeAI/Tessera-27B-B-CJK-RL-GGUF with Ollama:
ollama run hf.co/ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
- Unsloth Desktop
- Pi
How to use ZelligeAI/Tessera-27B-B-CJK-RL-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
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": "ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use ZelligeAI/Tessera-27B-B-CJK-RL-GGUF with Docker Model Runner:
docker model run hf.co/ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
- Lemonade
How to use ZelligeAI/Tessera-27B-B-CJK-RL-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
Run and chat with the model
lemonade run user.Tessera-27B-B-CJK-RL-GGUF-Q4_K_XL
List all available models
lemonade list
- Hermes Agent
How to use ZelligeAI/Tessera-27B-B-CJK-RL-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 ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
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 ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use ZelligeAI/Tessera-27B-B-CJK-RL-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL
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 "ZelligeAI/Tessera-27B-B-CJK-RL-GGUF:Q4_K_XL" \ --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"
Tessera-27B-B-CJK-RL-GGUF
This repo holds GGUF files of Tessera-27B-B-CJK-RL for llama.cpp: the unquantized BF16 model, five quants and the vision projector. The main repo, ZelligeAI/Tessera-27B-B-CJK-RL, holds the merged bf16 weights. Apart from the GGUF section, this card is a copy of the main card. Its results come from the LoRA on Tinker, which matches the merged bf16 weights by a logprob check. They are not measurements of the files in this repo.
Tessera-27B-B-CJK-RL is a coding-agent model built on Qwen3.8-27B. It thinks in compressed CJK, a shorthand that mixes English, Chinese words and symbols, and it thinks less per agent turn than the base model. Answers and tool calls are normally in plain English and code.
It is Tessera-27B-B-CJK trained further with eight updates of reinforcement learning on math and code. Compared with Tessera-27B-B-CJK, it solves more new competition math and keeps most of the per-turn saving in agent work.
This is a beta release, a rank-32 LoRA merged into the base model's bf16 weights.
The GGUF files
| File | Size | What it is |
|---|---|---|
Tessera-27B-B-CJK-RL-UL-Q3_K_XL.gguf |
13.15 GB | Unsloth-layout replica of UD-Q3_K_XL |
Tessera-27B-B-CJK-RL-UL-Q4_K_XL.gguf |
17.56 GB | Unsloth-layout replica of UD-Q4_K_XL |
Tessera-27B-B-CJK-RL-UL-Q5_K_XL.gguf |
20.88 GB | Unsloth-layout replica of UD-Q5_K_XL |
Tessera-27B-B-CJK-RL-UL-Q6_K_XL.gguf |
25.30 GB | Unsloth-layout replica of UD-Q6_K_XL |
Tessera-27B-B-CJK-RL-UL-Q8_K_XL.gguf |
31.46 GB | Unsloth-layout replica of UD-Q8_K_XL |
BF16/Tessera-27B-B-CJK-RL-BF16-00001-of-00002.gguf |
44.98 GB | Unquantized bf16, part 1 of 2 |
BF16/Tessera-27B-B-CJK-RL-BF16-00002-of-00002.gguf |
9.68 GB | Unquantized bf16, part 2 of 2 |
mmproj-Tessera-27B-B-CJK-RL-F16.gguf |
0.93 GB | Vision projector in F16 |
UL stands for Unsloth layout, and 1 GB is 10^9 bytes. To load the BF16 model, point llama.cpp at part 1, which reads part 2 from the same folder.
We converted the merged bf16 model to GGUF with llama.cpp at commit c83f3058 and quantized it with llama-quantize. Each quant copies the per-tensor quant types of the unsloth/Qwen3.8-27B-GGUF file with the same name. Each quant also uses Unsloth's imatrix_unsloth.gguf, which Unsloth computed on the base model, not on this fine-tune. We checked every file against its Unsloth counterpart and found 866 tensors and 0 type mismatches in each. The files copy Unsloth's layout. They do not reproduce Unsloth's full procedure on this model. The header of UL-Q8_K_XL says file_type Q4_K_M because we copied that field from Unsloth's UD-Q8_K_XL header.
The BF16 model and each quant passed the text-only behaviour check described under Limitations, which shows that a file works and does not measure its quality. The vision projector was not loaded in that check. We ran these checks with llama-server from the same commit, built with CUDA, on pre-tokenized prompts. To run a file with llama.cpp, start from this command. We have not tested the --jinja chat template path.
# Tested: loading and generation with llama-server on pre-tokenized prompts. Untested: --jinja and the chat template kwargs.
llama-server -m Tessera-27B-B-CJK-RL-UL-Q4_K_XL.gguf --jinja -c 65536 \
--temp 1.0 --top-p 0.95 --top-k 20 \
--chat-template-kwargs '{"reasoning_effort": "xhigh"}'
For image input, add --mmproj mmproj-Tessera-27B-B-CJK-RL-F16.gguf.
Repos
| Repo | Contents |
|---|---|
| Tessera-27B-B-CJK-RL | Merged bf16 weights, 55.6 GB |
| Tessera-27B-B-CJK-RL-LoRA | The PEFT adapter, 1.09 GB |
| Tessera-27B-B-CJK-RL-GGUF | BF16 GGUF and five Unsloth-layout replica quants, not evaluated |
| Tessera-27B-B-CJK-RL-NVFP4 | NVFP4 and FP8 checkpoint, 23.4 GB, not evaluated |
What changed from Tessera-27B-B-CJK
Both models were sampled on the same day with the same seeds, in bf16 at reasoning_effort="xhigh", temperature 1.0, top-p 0.95 and top-k 20. Intervals are 90%.
| Tessera-27B-B-CJK-RL | Tessera-27B-B-CJK | |
|---|---|---|
| AIME and HMMT February 2026, 63 problems, 2 attempts each | 108 of 126 correct | 97 |
| Same problems, attempts cut off at the 64K-token window | 11 | 23 |
| Thinking per agent turn against the base model, typical turn, 64 new states from 16 coding-agent tasks held out from training | 0.67x (CI 0.53-0.85) | 0.60x (CI 0.50-0.73) |
| Valid tool calls on those turns | 256 of 256 | 256 of 256 |
On the competition problems the paired gain is +5.5 problems (CI +1.5 to +9.5), and part of it comes from finishing inside the window more often. On agent turns it thinks 1.11x as much as Tessera-27B-B-CJK on a typical turn (CI 0.98-1.26), so it keeps most of Tessera-27B-B-CJK's saving against the base model. A typical turn is the geometric mean over tasks of the per-state ratio of thinking tokens. The base-model rows use each model's first two samples, and we computed Tessera-27B-B-CJK's ratio after the run. On 118 hard math and code problems that we had used many times before, it got 100 right against 89, as a mean of two attempts.
The release post has the full results and how we chose this checkpoint. The notation, the agent setup and the earlier training carry over from Tessera-27B-B-CJK, and its card and paper describe them.
What a think looks like
Here is one agent turn from a held-out task, verbatim. It is 45 tokens and is followed by a lint command. The base model wrote 158 tokens at the same state.
ๆต่ฏๅฅไปถ๏ผๅบ็บฟๅ(ๆขๆ5ๅคฑ่ดฅไธๅ+11ๆฐ้่ฟ). ๆ ๅๅฝ. Typecheck: ไป
ๆขๆversion.ts้(ๅ predev็ๆ). ็ฐ่ทlintไบๆนๆไปถ.
It says the test suite matches the baseline, with the same 5 existing failures and 11 new passing tests, the type check shows only the existing version.ts errors, and next it runs lint on the changed files.
Intended use
Use it in coding-agent loops with reasoning_effort="xhigh", past thinks dropped from the history, temperature 1.0, top-p 0.95 and top-k 20. The fine-tune adds no safety tuning beyond the base model's.
How to use the merged bf16 weights
We ran the merged weights from a local copy with vLLM 0.31, on pre-tokenized prompts, and loaded them with transformers 5.17. We did not test loading from the Hub or any line marked untested. The chat template takes reasoning_effort as low, medium or xhigh.
# Tested on a local copy with vLLM 0.31 and pre-tokenized prompts. Our check set max_model_len to 65,552.
from vllm import LLM, SamplingParams
llm = LLM(model="ZelligeAI/Tessera-27B-B-CJK-RL", dtype="bfloat16", max_model_len=65536,
limit_mm_per_prompt={"image": 0, "video": 0})
# Untested: chat-template rendering through vLLM. Our math evaluation used a 64K-token window.
params = SamplingParams(temperature=1.0, top_p=0.95, top_k=20, max_tokens=32768)
out = llm.chat([{"role": "user", "content": "..."}], params,
chat_template_kwargs={"reasoning_effort": "xhigh"})
# Loaded on a local copy with transformers 5.17. Generation was not tested.
import torch
from transformers import AutoModelForImageTextToText, AutoTokenizer
tok = AutoTokenizer.from_pretrained("ZelligeAI/Tessera-27B-B-CJK-RL")
model = AutoModelForImageTextToText.from_pretrained("ZelligeAI/Tessera-27B-B-CJK-RL",
dtype=torch.bfloat16, device_map="cuda")
Training and merge
Training starts from the Tessera-27B-B-CJK LoRA (rank 32, alpha 32, on attention, the MLP and lm_head) and adds eight RL updates on Tinker. Each update samples 6 rollouts for each of 11 or 12 math and code problems and takes one Adam step at learning rate 2e-5. A rollout scores 0 unless it is correct and clean, and otherwise 1, moved by up to 0.3 for its length against the base model's. Each rollout's advantage is spread over its thinking tokens, so a long rollout does not weigh more than a short one. The RL post gives the method and the first five updates, and updates 6-8 continued the same run. The base is Qwen/Qwen3.8-27B at revision 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0, with the stock tokenizer and chat template.
We merged all 401 LoRA pairs into the bf16 weights. On two held-out sequences of 58,624 and 15,370 tokens, the merged weights on vLLM 0.31 differ from the LoRA on Tinker by a mean absolute logprob of 0.025 and 0.012. That is close to the base model's own difference across the two engines, 0.022 and 0.009, and far below the fine-tune's effect, 0.33 and 0.21.
Limitations
- The agent-turn result is one run on 16 tasks. Its interval reaches 1.26x Tessera-27B-B-CJK, so turns up to a quarter longer are not ruled out.
- The 16 tasks are new to this RL run, not to the Tessera line. We measured other states from 15 of them while building Tessera-27B-B-CJK.
- Our agent evidence is per turn: thinking length and tool-call validity on frozen states. We did not measure whether the model finishes coding tasks more or less often.
- AIME and HMMT 2026 may appear in Qwen3.8's pretraining data, and we did not run the base model on them.
- We evaluated the LoRA on Tinker, and the merged weights match it by the check above. We did not evaluate the GGUF or NVFP4 files, image input or the MTP head. The BF16 GGUF, the five GGUF quants and the NVFP4 checkpoint each passed a one-sample check on three text prompts that only looks for broken files.
License and citation
The license is Apache-2.0, the same as the base model's, and each of the four repos includes the LICENSE file.
@misc{zellige2026tessera27bbcjkrl,
title = {Tessera-27B-B-CJK-RL},
author = {Zellige},
year = {2026},
note = {https://huggingface.co/ZelligeAI/Tessera-27B-B-CJK-RL}
}
- Downloads last month
- 1,183
3-bit
4-bit
5-bit
6-bit
8-bit
16-bit
