Image-Text-to-Text
Transformers
Safetensors
English
qwen3_5
quantized
rfi
mixed-precision
conversational
Instructions to use tcclaviger/Tess-27B-RFI with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use tcclaviger/Tess-27B-RFI with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="tcclaviger/Tess-27B-RFI") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("tcclaviger/Tess-27B-RFI") model = AutoModelForMultimodalLM.from_pretrained("tcclaviger/Tess-27B-RFI", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use tcclaviger/Tess-27B-RFI with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "tcclaviger/Tess-27B-RFI" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "tcclaviger/Tess-27B-RFI", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/tcclaviger/Tess-27B-RFI
- SGLang
How to use tcclaviger/Tess-27B-RFI with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "tcclaviger/Tess-27B-RFI" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "tcclaviger/Tess-27B-RFI", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "tcclaviger/Tess-27B-RFI" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "tcclaviger/Tess-27B-RFI", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use tcclaviger/Tess-27B-RFI with Docker Model Runner:
docker model run hf.co/tcclaviger/Tess-27B-RFI
Commit ·
c348f52
0
Parent(s):
Initialize repo: README, gitignore, LFS tracking
Browse files- .gitattributes +1 -0
- .gitignore +4 -0
- README.md +128 -0
.gitattributes
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
docker-compose.yml
|
| 2 |
+
profiles/
|
| 3 |
+
tunableop/
|
| 4 |
+
openai-infqps-*.json
|
README.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: transformers
|
| 4 |
+
pipeline_tag: image-text-to-text
|
| 5 |
+
language:
|
| 6 |
+
- en
|
| 7 |
+
tags:
|
| 8 |
+
- quantized
|
| 9 |
+
- rfi
|
| 10 |
+
- mixed-precision
|
| 11 |
+
base_model:
|
| 12 |
+
- migtissera/Tess-4-27B
|
| 13 |
+
base_model_relation: quantized
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
> [!IMPORTANT]
|
| 17 |
+
> ## RFI/RFA hybrid quant of [migtissera/Tess-4-27B](https://huggingface.co/migtissera/Tess-4-27B)
|
| 18 |
+
>
|
| 19 |
+
> **Runtime:** requires [`tcclaviger/vllm:latest`](https://hub.docker.com/r/tcclaviger/vllm) — an **RDNA 4 (gfx12xx)** vLLM image and the only build with the RFI/RFA kernels; no other vLLM build loads these weights. **Not validated on any other hardware at this time.**
|
| 20 |
+
|
| 21 |
+
# Tess-27B-RFI
|
| 22 |
+
|
| 23 |
+
Mixed-precision (RFI/RFA hybrid) quantization of **Tess-4-27B** by Migel Tissera —
|
| 24 |
+
an agentic, thinking-native finetune of Qwen3.6-27B. All credit for the model to its
|
| 25 |
+
author; this repo only changes the numerics.
|
| 26 |
+
|
| 27 |
+
## Quantization by component
|
| 28 |
+
|
| 29 |
+
- **Attention and all other linear layers** — 8-bit integer weights (RFI): group size 32, symmetric, Hadamard-32 rotation, block-float scales stored as int8 mantissa + int8 exponent, int8 activation compute path.
|
| 30 |
+
- **MLP layers** — 4-bit float weights (RFA): IQ4_NL non-linear grid, group size 16, asymmetric, Hadamard-16 rotation, the same block-float int8 scale encoding.
|
| 31 |
+
- **Kept in bf16 (not quantized)** — vision encoder, linear-attention (GDN) blocks, MTP speculative-decode layers, embeddings, and the lm_head.
|
| 32 |
+
|
| 33 |
+
## Evaluation results
|
| 34 |
+
|
| 35 |
+
Four builds measured with identical methodology, each against its own live vLLM endpoint (July 2026):
|
| 36 |
+
**Qwen3.6-27B** (bf16 base) → **Tess-4-27B** (the tune, bf16) → **Tess-27B-RFI** (this quant),
|
| 37 |
+
with **Qwen3.6-35B-A3B** (MoE, bf16) as a comparative reference point.
|
| 38 |
+
|
| 39 |
+
### Tune impact — Qwen3.6-27B → Tess-4-27B
|
| 40 |
+
|
| 41 |
+
| Metric | Change |
|
| 42 |
+
|---|---|
|
| 43 |
+
| WikiText-2 perplexity | 7.060 → 6.669 (**−5.5%**) |
|
| 44 |
+
| Codeneedle overall recall | 92.0% → 97.7% (**+5.8 pp**) |
|
| 45 |
+
| MC accuracy (4 tasks) | ≈ flat (−0.1 to +1.8 pp) |
|
| 46 |
+
| Tool-eval (full 69, TC-61 excl) | 89 → 85 (−4) |
|
| 47 |
+
| GSM8K / MMLU (50q each) | 98→94% / 74→76% |
|
| 48 |
+
| Decode @ conc 1 (ISL 128) | 63.7 → 59.9 tok/s (−6%) |
|
| 49 |
+
| Decode @ conc 50 (ISL 128) | 541 → 528 tok/s (−2%) |
|
| 50 |
+
|
| 51 |
+
### Quantization cost (RFI/RFA hybrid) — Tess-4-27B → Tess-27B-RFI
|
| 52 |
+
|
| 53 |
+
| Metric | Change |
|
| 54 |
+
|---|---|
|
| 55 |
+
| WikiText-2 perplexity | 6.669 → 6.663 (≈ flat) |
|
| 56 |
+
| Codeneedle overall recall | 97.7% → 98.0% (≈ flat) |
|
| 57 |
+
| MC accuracy (4 tasks) | ≈ flat (−0.4 to +0.1 pp) |
|
| 58 |
+
| Tool-eval (full 69, TC-61 excl) | 85 → 87 (**+2**) |
|
| 59 |
+
| GSM8K / MMLU (50q each) | 94→98% / 76→82% (**both up**) |
|
| 60 |
+
| Decode @ conc 1 (ISL 128) | 59.9 → 75.3 tok/s (**+26%**) |
|
| 61 |
+
| Decode @ conc 50 (ISL 128) | 528 → 453 tok/s (−14%) |
|
| 62 |
+
|
| 63 |
+
### Quality
|
| 64 |
+
|
| 65 |
+
| Metric | Qwen3.6-27B (base) | Tess-4-27B | **Tess-27B-RFI** | Qwen3.6-35B-A3B |
|
| 66 |
+
|---|---|---|---|---|
|
| 67 |
+
| WikiText-2 PPL (n_ctx 2048, lower is better) | 7.0597 | 6.6691 | **6.6632** | 6.5092 |
|
| 68 |
+
| ARC-Challenge (acc_norm) | 59.13% | 60.84% | **60.41%** | 55.20% |
|
| 69 |
+
| ARC-Easy (acc_norm) | 75.76% | 77.53% | **77.40%** | 71.13% |
|
| 70 |
+
| Winogrande (acc) | 76.87% | 77.43% | **77.51%** | 73.40% |
|
| 71 |
+
| HellaSwag (acc_norm) | 84.04% | 84.21% | **84.27%** | 82.95% |
|
| 72 |
+
|
| 73 |
+
Multiple-choice accuracy is lm-eval loglikelihood scoring, 0-shot.
|
| 74 |
+
|
| 75 |
+
### Long-context positional recall (codeneedle)
|
| 76 |
+
|
| 77 |
+
Verbatim function recall under 10K–80K-token contexts.
|
| 78 |
+
|
| 79 |
+
| Corpus | Qwen3.6-27B (base) | Tess-4-27B | **Tess-27B-RFI** | Qwen3.6-35B-A3B |
|
| 80 |
+
|---|---|---|---|---|
|
| 81 |
+
| Python | 92.73% | 100% | **100%** | 99.09% |
|
| 82 |
+
| C++ | 92.81% | 98.12% | **98.44%** | 98.44% |
|
| 83 |
+
| Rust | 95.00% | 99.69% | **99.69%** | 99.38% |
|
| 84 |
+
| JS (~80K tokens) | 87.50% | 93.13% | **93.75%** | 92.19% |
|
| 85 |
+
| Tools | 96.52% | 99.57% | **99.57%** | 93.48% |
|
| 86 |
+
| **Overall recall** | 91.95% | 97.73% | **97.97%** | 97.28% |
|
| 87 |
+
|
| 88 |
+
### Tool calling & accuracy benches
|
| 89 |
+
|
| 90 |
+
| Bench | Qwen3.6-27B (base) | Tess-4-27B | **Tess-27B-RFI** | Qwen3.6-35B-A3B |
|
| 91 |
+
|---|---|---|---|---|
|
| 92 |
+
| tool-eval final (full 69, TC-61 excl) | 89 | 85 | **87** | 90 |
|
| 93 |
+
| GSM8K (50q) | 98.0% | 94.0% | **98.0%** | 96.0% |
|
| 94 |
+
| MMLU (50q) | 74.0% | 76.0% | **82.0%** | 64.0% |
|
| 95 |
+
| IFEval (20 prompts, prompt-level) | 90.0% | 90.0% | **90.0%** | 90.0% |
|
| 96 |
+
|
| 97 |
+
### Decode throughput — tok/s output (ISL 128 / ISL 512)
|
| 98 |
+
|
| 99 |
+
`vllm bench serve`, random dataset, OSL 128, saturation, 4× R9700 (gfx1201), TP 4.
|
| 100 |
+
|
| 101 |
+
| Concurrency | Qwen3.6-27B (base) | Tess-4-27B | **Tess-27B-RFI** | Qwen3.6-35B-A3B |
|
| 102 |
+
|---|---|---|---|---|
|
| 103 |
+
| 1 | 63.7 / 65.2 | 59.9 / 63.8 | **75.3 / 69.3** | 91.9 / 114.4 |
|
| 104 |
+
| 10 | 251.1 / 246.6 | 289.6 / 227.8 | **281.5 / 219.2** | 434.9 / 440.3 |
|
| 105 |
+
| 25 | 390.3 / 336.8 | 492.0 / 341.1 | **429.1 / 284.0** | 688.9 / 563.7 |
|
| 106 |
+
| 50 | 541.2 / 363.0 | 527.9 / 345.6 | **452.8 / 295.0** | 889.8 / 702.9 |
|
| 107 |
+
|
| 108 |
+
## Notes
|
| 109 |
+
|
| 110 |
+
All builds serve on the [tcclaviger/vllm:latest](https://hub.docker.com/r/tcclaviger/vllm) image, which has kernel tunes baked in.
|
| 111 |
+
TunableOp is untuned — GEMMs run on default heuristic-determined values.
|
| 112 |
+
|
| 113 |
+
## Credits
|
| 114 |
+
|
| 115 |
+
- **Tess-4-27B** by Migel Tissera ([migtissera/Tess-4-27B](https://huggingface.co/migtissera/Tess-4-27B)) — the model quantized here:
|
| 116 |
+
|
| 117 |
+
```bibtex
|
| 118 |
+
@misc{tissera2026tess4,
|
| 119 |
+
title = {Tess-4-27B},
|
| 120 |
+
author = {Migel Tissera},
|
| 121 |
+
year = {2026},
|
| 122 |
+
howpublished = {\url{https://huggingface.co/migtissera/Tess-4-27B}}
|
| 123 |
+
}
|
| 124 |
+
```
|
| 125 |
+
|
| 126 |
+
- codeneedle (positional recall) originally by Alexander Ziskind, expanded test suite by tcclaviger (Rob Smith).
|
| 127 |
+
- Tool-calling scenarios (incl. TC-61) run on tool-eval-bench by SeraphimSerapis (Tim Messerschmidt), scenario methodology adapted from ToolCall-15 by stevibe.
|
| 128 |
+
- GSM8K, MMLU, and IFEval run via tool-eval-bench's built-in accuracy benchmarks at their defaults: GSM8K 8-shot CoT, MMLU 5-shot, IFEval zero-shot.
|