Image-Text-to-Text
Transformers
Safetensors
qwen3_5
tess
agentic
reasoning
thinking
long-context
tool-use
qwen3
multimodal
conversational
Instructions to use migtissera/Tess-4-27B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use migtissera/Tess-4-27B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="migtissera/Tess-4-27B") 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)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("migtissera/Tess-4-27B") model = AutoModelForMultimodalLM.from_pretrained("migtissera/Tess-4-27B", 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=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use migtissera/Tess-4-27B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "migtissera/Tess-4-27B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "migtissera/Tess-4-27B", "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/migtissera/Tess-4-27B
- SGLang
How to use migtissera/Tess-4-27B 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 "migtissera/Tess-4-27B" \ --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": "migtissera/Tess-4-27B", "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 "migtissera/Tess-4-27B" \ --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": "migtissera/Tess-4-27B", "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 migtissera/Tess-4-27B with Docker Model Runner:
docker model run hf.co/migtissera/Tess-4-27B
| license: apache-2.0 | |
| base_model: | |
| - Qwen/Qwen3.6-27B | |
| library_name: transformers | |
| pipeline_tag: image-text-to-text | |
| tags: | |
| - tess | |
| - agentic | |
| - reasoning | |
| - thinking | |
| - long-context | |
| - tool-use | |
| - qwen3 | |
| - multimodal | |
| # Tess-4-27B | |
| > **Reasoning that scales with the problem.** An agentic, thinking-native model that deliberates *harder exactly when it matters* โ and gets out of its own way when it doesn't. | |
| **Tess-4-27B** is the first Tess release in two years, and the first that *reasons*. Built on **[Qwen/Qwen3.6-27B](https://huggingface.co/Qwen/Qwen3.6-27B)** by **[Migel Tissera](https://huggingface.co/migtissera)**, it's post-trained on a deliberate blend: 64K-token long-context agentic traces โ real engineering work done with **Fable-5**, not synthetic generations โ with a reasoning style approximated from Fable-5 by a three-model teacher ensemble (**Opus-4.8**, **GPT-5.5**, and **GLM-5.2**) fused into one coherent voice. | |
| The result is a 27B model that thinks like a senior engineer: form a hypothesis, act, verify, and reason with real density on the turns that actually deserve it โ **not a model that narrates its way to an answer it already had.** | |
| --- | |
| ## Community Performed Benchmarks | |
| **Currently best-in-class for BenchLocal** | |
| | Rank | Model | Score | Result | | |
| |------|-------|:-----:|:------:| | |
| | 1 | Tess-4-27B (Q8) | 81% | 122/150 | | |
| | 2 | Qwen3.6-35B-A3B (UD-Q8_K_XL) | 78% | 117/150 | | |
| | 3 | Gemma-4-31B (Q6 ยท 180k ctx) | 78% | 117/150 | | |
| | 4 | Qwopus3.6-27B Coder-Compat (Q6_K) | 77% | 116/150 | | |
| | 5 | Qwen3.6-27B pi-tune (Q8) | 77% | 115/150 | | |
| ### References | |
| 1. https://huggingface.co/migtissera/Tess-4-27B/discussions/2#6a4ff70af13ec7012fb149f0 | |
| 2. https://gist.github.com/everson/261fdef8a3d35298b36a07f436e407f6 | |
| ## Why Tess-4 is different | |
| - ๐ง **Weight-scaled reasoning.** Tess-4 keeps routine steps tight and pours deliberation into the hard ones โ planning, debugging, synthesis, judgment calls. It doesn't ramble; it thinks *proportionally* to the difficulty of the moment. | |
| - ๐ ๏ธ **Agentic by design.** Native, parallel tool use and disciplined multi-step problem solving. It reads a codebase, builds a real mental model, and acts on it. | |
| - ๐ **Long-context, trained at 64K.** Post-trained on **64K-token long-context agentic traces**, so it holds a large working set without losing the thread. | |
| - ๐๏ธ **Multimodal.** Inherits Qwen3.6's vision tower โ text **and** image in. (For GGUF, pair with the included vision projector.) | |
| - ๐ค **Honest, not sycophantic.** Trained to give grounded, evidence-based pushback instead of flattery. | |
| ## The reasoning traces | |
| Tess-4's signature is *how it thinks*. The reasoning/thinking traces used to train it were a **best-case approximation of Fable-5**, produced by a combination of **Opus-4.8, GPT-5.5, and GLM-5.2** working together as a team โ a multi-model teacher ensemble distilled into a single, coherent reasoning style. | |
| The result is a model that reasons **prospectively** โ predicting, verifying, and weighing alternatives *before* acting โ rather than narrating after the fact. | |
| ## Prompt format & thinking | |
| Tess-4 uses the Qwen3.5-family chat template with explicit `<think> โฆ </think>` reasoning blocks. The model reasons privately, then produces its visible answer: | |
| ``` | |
| <|im_start|>user | |
| Your prompt here<|im_end|> | |
| <|im_start|>assistant | |
| <think> | |
| โฆ the model's private reasoning โฆ | |
| </think> | |
| โฆ the model's answer โฆ<|im_end|> | |
| ``` | |
| Apply it automatically via `tokenizer.apply_chat_template(messages, add_generation_prompt=True)`, or `--jinja` in llama.cpp. | |
| ## Available formats | |
| **This repo โ full-precision weights:** | |
| | Format | ~Size | Best for | | |
| |---|---|---| | |
| | BF16 safetensors | 52 GB | transformers ยท vLLM ยท SGLang | | |
| **GGUF quants โ [`migtissera/Tess-4-27B-GGUF`](https://huggingface.co/migtissera/Tess-4-27B-GGUF)** | |
| | File | Format | ~Size | Best for | | |
| |---|---|---|---| | |
| | `Tess-4-27B-Q4_K_M.gguf` | Q4_K_M | 16.5 GB | smallest โ great quality/size ยท most popular | | |
| | `Tess-4-27B-Q6_K.gguf` | Q6_K | 22 GB | near-lossless | | |
| | `Tess-4-27B-Q8_0.gguf` | Q8_0 | 28 GB | effectively lossless | | |
| | `mmproj-Tess-4-27B-F16.gguf` | vision projector | 0.9 GB | pair with any text GGUF for image input | | |
| ## Faster inference | |
| - โก **[Tess-4-27B-EAGLE3](https://huggingface.co/migtissera/Tess-4-27B-EAGLE3)** โ a speculative-decoding draft trained on Tess-4's own outputs: **1.76ร average decode speedup, up to 2.4ร on reasoning** (measured on H100; lossless โ outputs are identical). SGLang: `--speculative-algorithm EAGLE3 --speculative-draft-model-path migtissera/Tess-4-27B-EAGLE3`; vLLM: `--speculative-config '{"method":"eagle3","model":"migtissera/Tess-4-27B-EAGLE3","num_speculative_tokens":4}'`. | |
| - ๐งฎ **[Tess-4-27B-NVFP4](https://huggingface.co/migtissera/Tess-4-27B-NVFP4)** โ 4-bit NVFP4 (19 GB, โ63%), Blackwell-native W4A4, calibrated on Tess-4's own generations. Quantization and speculative decoding **stack**. | |
| ## Quickstart | |
| ### llama.cpp / LM Studio (GGUF) | |
| Grab the quant(s) from [`migtissera/Tess-4-27B-GGUF`](https://huggingface.co/migtissera/Tess-4-27B-GGUF): | |
| ```bash | |
| hf download migtissera/Tess-4-27B-GGUF \ | |
| Tess-4-27B-Q4_K_M.gguf mmproj-Tess-4-27B-F16.gguf \ | |
| --local-dir ./tess-4-27b | |
| ``` | |
| ```bash | |
| # text | |
| llama-cli -m Tess-4-27B-Q4_K_M.gguf --jinja -p "Refactor this function and explain your reasoning." | |
| # with images (multimodal) | |
| llama-mtmd-cli -m Tess-4-27B-Q4_K_M.gguf \ | |
| --mmproj mmproj-Tess-4-27B-F16.gguf \ | |
| --image photo.png -p "What's in this image?" | |
| ``` | |
| **LM Studio:** put `mmproj-Tess-4-27B-F16.gguf` in the **same folder** as the model file โ LM Studio auto-detects it and enables image input. (Use a recent runtime; older llama.cpp builds won't recognize the architecture.) | |
| ### transformers | |
| ```python | |
| from transformers import AutoProcessor, AutoModelForImageTextToText | |
| import torch | |
| model_id = "migtissera/Tess-4-27B" | |
| processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True) | |
| model = AutoModelForImageTextToText.from_pretrained( | |
| model_id, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True | |
| ) | |
| messages = [{"role": "user", "content": "Explain the tradeoffs of LoRA vs full fine-tuning."}] | |
| inputs = processor.apply_chat_template( | |
| messages, add_generation_prompt=True, return_tensors="pt" | |
| ).to(model.device) | |
| out = model.generate(inputs, max_new_tokens=1024) | |
| print(processor.decode(out[0], skip_special_tokens=True)) | |
| ``` | |
| *(Requires a recent `transformers` with Qwen3.5/3.6 support.)* | |
| ## What it's good at | |
| - **Agentic coding** โ exploring unfamiliar repos, planning changes, and executing multi-step work with tools. | |
| - **Long-context work** โ reasoning over large codebases and documents without dropping context. | |
| - **Technical & product judgment** โ honest, structured analysis that pushes back with evidence rather than agreeing by default. | |
| ## Credits | |
| Tess-4-27B is built on **[Qwen/Qwen3.6-27B](https://huggingface.co/Qwen/Qwen3.6-27B)** by the **Qwen team** โ full credit to them for an outstanding base model. Tess-4 inherits its Qwen3.5-family vision-language architecture and its **Apache 2.0** license. | |
| ## License | |
| Released under the **Apache License 2.0**, inherited from the base model. See [`LICENSE`](./LICENSE). | |
| ## Citation | |
| ```bibtex | |
| @misc{tissera2026tess4, | |
| title = {Tess-4-27B}, | |
| author = {Migel Tissera}, | |
| year = {2026}, | |
| howpublished = {\url{https://huggingface.co/migtissera/Tess-4-27B}}, | |
| note = {Built on Qwen/Qwen3.6-27B} | |
| } | |
| ``` | |
| --- | |
| *Tess-4-27B โ part of the **Tess** series by [Migel Tissera](https://huggingface.co/migtissera). Evaluations forthcoming.* | |