Sophea-Titan-1 is a 27B Greek fine-tuned multimodal chat model built on Qwen3.6-27B, with register control and a fixed assistant identity — while retaining English ability and vision.
- Creator: Kiefer SA
- Base model: Qwen3.6-27B (multimodal, 64 layers, hidden 5120)
- Languages: Greek (primary), English (retained)
- Decoding: non-thinking (
enable_thinking=false) — see recommended sampling under Usage
Serve non-thinking. Set
enable_thinking=falsein the chat template. Over an OpenAI-compatible vLLM endpoint, passextra_body={"chat_template_kwargs": {"enable_thinking": false}}. With thinking left on, Greek output quality degrades sharply.
Intended use
- General-purpose Greek conversational assistant / chat, with formal ↔ informal register control
- Greek-knowledge QA; English retained as a secondary language
Not evaluated for safety-critical or legal/medical decisions.
Fine-tuned from Qwen3.6-27B.
Evaluation
Non-thinking, greedy (temperature 0). Sophea-Titan-1 in bold.
Models compared:
n/a = not applicable (text-only) · n.t. = not identity-tuned.
Headline scorecard
At a glance
Capability profile — General Greek benchmarks, English and vision across open-weight models (Sophea-Titan-1 in bold; frontier MoEs GLM-5.2 / MiniMax-M3 shown for reference, no vision):

General Greek benchmarks vs. model size — Sophea-Titan-1 has the strongest general-Greek score of the ~27B open models, approaching far larger frontier MoEs at a fraction of the size:

Per-benchmark detail
Three benchmark families in one table — General Greek benchmarks (9), English retention (5), and
Vision — MMStar (1500) — on the same five models. n/a = not applicable (text-only, no vision).
greekmmlu — per-subject (31)
Frontier & other API models (reference)
Evaluated via API (thinking disabled where supported): GPT-5.5, Claude Opus 4.8, Gemini 3.5, GLM-5.2, MiniMax-M3. API-model Greek/English benchmarks use letter-answer scoring (local models use log-likelihood).
Kimi-K3 added 2026-07-29: kimi-k3 via Moonshot API (temperature=1 forced, thinking cannot be disabled).
Inkling-Small added 2026-07-31: thinkingmachines/Inkling-Small-NVFP4 (276B/12B-active open-weight MoE, Apache-2.0), self-hosted via vLLM; thinking on, temperature=1 (same protocol caveat as noted for reasoning-locked APIs).
Qwen3.8-Max added 2026-08-04: qwen3.8-max via Qwen Cloud API (thinking disabled, temperature=0 — matches the card protocol).
DeepSeek-V4.1-Flash added 2026-09-14: deepseek-ai/DeepSeek-V4.1-Flash (552B/16B-active open-weight MoE + 196B Engram tables, MIT), self-hosted via vLLM on 3× B200 (FP4 experts / FP8 dense as shipped); thinking disabled, temperature=0 — matches the card protocol. 4 of 7,000 answers were unparsed (the model reasoned in-content instead of answering with a letter) and are scored as wrong.
Vision — MMStar (1500, same letter-answer protocol, thinking disabled): 0.721 overall (coarse perception 0.756 · fine-grained perception 0.620 · instance reasoning 0.768 · logical reasoning 0.764 · math 0.800 · science & technology 0.620; 11 unparsed scored as wrong) vs Sophea-Titan-1 0.714.
MiMo-V2.6-Pro-RL added 2026-09-28: XiaomiMiMo/MiMo-V2.6-Pro-RL (1.02T/42B-active open-weight omni MoE, FP8, MIT), self-hosted via vLLM on 4× B200; thinking disabled, temperature=0 — matches the card protocol. 1 of 7,000 answers unparsed (scored as wrong).
Vision — MMStar (1500, same letter-answer protocol, thinking disabled, 1024-token budget with final-letter parsing because the model explains before answering): 0.689 overall (coarse perception 0.688 · fine-grained perception 0.532 · instance reasoning 0.736 · logical reasoning 0.760 · math 0.828 · science & technology 0.592; 14 unparsed scored as wrong) vs Sophea-Titan-1 0.714 and DeepSeek-V4.1-Flash 0.721.
GLM-5.3-Flash added 2026-09-28: zai-org/GLM-5.3-Flash (320B/18B-active open-weight multimodal MoE, FP8, MIT), self-hosted via vLLM on 4× H200; temperature=0. Its chat template always opens a thinking block and has no thinking-off switch, so the run uses the model's minimum budget, reasoning_effort=low (780 of 7000 answers used any reasoning tokens (mean 3.4 tokens/answer)) — the closest available to the card protocol. 0 of 7,000 answers unparsed (scored as wrong).
Vision — MMStar (1500, same letter-answer protocol, reasoning_effort=low, 1024-token budget with final-letter parsing): 0.776 overall (coarse perception 0.736 · fine-grained perception 0.680 · instance reasoning 0.808 · logical reasoning 0.824 · math 0.884 · science & technology 0.724; 57 unparsed — the reasoning ran past the 1024-token budget, leaving no answer — scored as wrong) vs Sophea-Titan-1 0.714, DeepSeek-V4.1-Flash 0.721 and MiMo-V2.6-Pro-RL 0.689.
Qwen3.8-Flash-Next added 2026-10-03: Qwen/Qwen3.8-Flash-Next (125B total / 6B-active open-weight MoE with 51B n-gram embeddings), self-hosted BF16 via vLLM on 8× B300; thinking disabled, temperature=0 — matches the card protocol; 0 request errors and 0 unparsed answers of 7,000.
Vision — MMStar (1500, same letter-answer protocol, 1024-token budget): 0.727.
Sophea-Artemis-v1 added 2026-10-09: KIEFER SA's own Greek-tuned MoE (125B total / 6B-active), self-hosted BF16 via vLLM on 4× H200; thinking disabled, temperature=0 — matches the card protocol; 0 request errors and 0 unparsed answers of 7,000.
Vision — MMStar (1500, same letter-answer protocol, thinking disabled, 1024-token budget): 0.743 overall (coarse perception 0.740 · fine-grained perception 0.632 · instance reasoning 0.784 · logical reasoning 0.804 · math 0.808 · science & technology 0.692).
General Greek benchmarks (9)
English — 5 benchmarks
greekmmlu
Quantized variants & other formats
Smaller-footprint and alternate-runtime builds of this model:
- GPU / vLLM (text-only — vision tower not included): Sophea-Titan-1-FP8 — lossless, ≈29 GB · Sophea-Titan-1-NVFP4 — 4-bit, ≈19 GB
- llama.cpp — Sophea-Titan-1-GGUF
- Apple Silicon — Sophea-Titan-1-mlx
The trade-off plot below covers the vLLM builds scored on the Greek suite; GGUF / MLX are format conversions.

Usage
Serve with vLLM (OpenAI-compatible; 27B bf16 ≈ 54 GB — add --tensor-parallel-size N for multi-GPU):
vllm serve KIEFERSA/Sophea-Titan-1 --served-model-name sophea-titan-1 --trust-remote-code \
--enable-auto-tool-choice --tool-call-parser qwen3_coder \
--reasoning-parser qwen3
For text-only serving (skips the vision tower — much faster), add --language-model-only.
Serve with vision enabled — raise the per-request image budget explicitly:
vllm serve KIEFERSA/Sophea-Titan-1 --served-model-name sophea-titan-1 --trust-remote-code \
--limit-mm-per-prompt '{"image": 4}' \
--enable-auto-tool-choice --tool-call-parser qwen3_coder \
--reasoning-parser qwen3
resp = client.chat.completions.create(
model="sophea-titan-1",
messages=[{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "https://example.com/chart.png"}},
{"type": "text", "text": "Περίγραψε την εικόνα στα ελληνικά."},
]}],
temperature=0,
extra_body={"chat_template_kwargs": {"enable_thinking": False}}, # required: non-thinking
)
print(resp.choices[0].message.content)
Recommended sampling (instruct / non-thinking): temperature=0.7, top_p=0.80, top_k=20, min_p=0.0, presence_penalty=1.5, repetition_penalty=1.0.
Client (OpenAI SDK) — remember non-thinking:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
model="sophea-titan-1",
messages=[{"role": "user", "content": "Ποια είναι η πρωτεύουσα της Ελλάδας;"}],
temperature=0,
extra_body={"chat_template_kwargs": {"enable_thinking": False}}, # required: non-thinking
)
print(resp.choices[0].message.content)
Transformers (multimodal — load with the image-text-to-text head to keep vision):
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
proc = AutoProcessor.from_pretrained("KIEFERSA/Sophea-Titan-1", trust_remote_code=True)
model = AutoModelForImageTextToText.from_pretrained(
"KIEFERSA/Sophea-Titan-1", torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)
messages = [{"role": "user", "content": [{"type": "text",
"text": "Ποια είναι η πρωτεύουσα της Ελλάδας;"}]}]
text = proc.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)
inputs = proc(text=[text], return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
print(proc.batch_decode(out[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)[0])
Speculative decoding (MTP)
This model ships the multi-token-prediction head — 15 mtp.* tensors (~0.85 GB, bf16) in
model-mtp.safetensors. This is the single-layer draft stack that config.json has always declared
through text_config.mtp_num_hidden_layers: 1.
Earlier revisions did not contain it. The LoRA merge loaded the base through
AutoModelForCausalLM, and transformers declares
_keys_to_ignore_on_load_unexpected = [r"^mtp.*"] for this architecture, so the head was discarded
at load and never written back — the config advertised a module the weights did not contain. The
head has been restored tensor-for-tensor from the base, leaving every other weight untouched; the
addition is purely additive, so existing serve commands keep working unchanged. To pin the previous
bytes, use revision="726f410a802dcf7a720dca898da9c7b91943911e".
Enable it with vLLM (≥ 0.23.0):
vllm serve KIEFERSA/Sophea-Titan-1 --served-model-name sophea-titan-1 --trust-remote-code \
--speculative-config '{"method":"qwen3_5_mtp","num_speculative_tokens":1}'
Provenance. These are the base Qwen3.6-27B MTP weights. The Greek SFT and DPO LoRA never targeted
mtp.*, so no fine-tuned draft head exists. This cannot affect output quality: speculative decoding verifies every drafted token against the main model, so a stale drafter changes throughput only, never the output distribution.
The -FP8 and -NVFP4 variants ship the same head and support the same flag; on those builds the
MTP Linears are held in bf16 and listed in quantization_config.ignore.
License
Inherits the Qwen3.6-27B base-model license. Verify base-model terms before use.