A personal AI that can act
Synthia has been tested in a personal AI agent runtime, where it showed strong continuity over extended sessions. It maintained a recognizable personality, remembered the active conversational context, used humour appropriately, and remained oriented while working through multi-step tasks with tools.
Its intended role is broader than a coding assistant. Synthia can discuss an idea, help make a decision, organize a project, work through a difficult technical problem, or simply be good company while doing all of the above. When the runtime supplies durable memories or personal context, Synthia can incorporate them into the current conversation; persistence between separate sessions remains the responsibility of the host runtime.
Behavior profile
Synthia is tuned to:
- maintain a stable voice and relationship with the user across long sessions;
- balance personality and light humour with direct, useful answers;
- move smoothly between open conversation and task execution;
- preserve goals and constraints across extended tool-driven work;
- inspect the available evidence before committing to a solution;
- revise a plan when tool results contradict an earlier assumption;
- treat implementation and verification as parts of the same task;
- express uncertainty when the available evidence does not support a firm claim; and
- vary its reasoning budget through the bundled chat template.
It retains the base model's image and video input path, 262,144-token native context window, and multi-token prediction (MTP) head. Post-training examples were limited to 65,536 tokens, so behavior beyond that length comes from the base model rather than from the fine-tuning distribution.
Prompting
Use the tokenizer and chat template shipped in this repository. A personal-agent runtime should provide Synthia's identity, the user's preferences, and any retrieved memories in the system context. The template supports xhigh, medium, and low reasoning effort and formats reasoning inside <think>...</think> blocks.
prompt = processor.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
reasoning_effort="xhigh",
)
Pass tool definitions with the template's tools= argument. Synthia was trained on conversations containing system instructions, user requests, assistant messages, tool calls, and tool results.
Files and companion releases
This repository contains the merged BF16 Transformers checkpoint.
Table with columns: Format, Approximate size, Typical use| Format | Approximate size | Typical use |
|---|
| BF16 safetensors | 55.6 GB | Transformers, vLLM, SGLang, conversion |
Quantized builds are available in migtissera/Synthia-4-27B-GGUF.
Table with columns: Quantization, Standard, MTP bundled| Quantization | Standard | MTP bundled |
|---|
| F16 | 50.11 GiB | 50.90 GiB |
| Q8_0 | 26.63 GiB | 27.05 GiB |
| Q6_K | 20.57 GiB | 20.89 GiB |
| Q4_K_M | 15.41 GiB | 15.66 GiB |
The GGUF repository also provides an F16 vision projector and a standalone Q8_0 MTP companion file. Use a bundled-MTP model with a compatible llama.cpp build when speculative decoding is desired. Standard GGUF files are available for runtimes without MTP support.
Install a Transformers version that supports Qwen3.8, then load the processor and model from this repository:
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "migtissera/Synthia-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": "system",
"content": "You are Synthia, my personal AI. Be candid, capable, warm, and concise. Use tools when they help you complete the work.",
},
{
"role": "user",
"content": "Help me choose what to focus on today, then inspect the project and get the first task moving.",
},
]
inputs = processor.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
reasoning_effort="xhigh",
return_tensors="pt",
).to(model.device)
output = model.generate(inputs, max_new_tokens=2048)
print(processor.decode(output[0], skip_special_tokens=True))
llama.cpp example
Download a bundled-MTP Q4_K_M build and the vision projector:
hf download migtissera/Synthia-4-27B-GGUF \
Synthia-4-27B-Q4_K_M-MTP.gguf \
Synthia-4-27B-mmproj-F16.gguf \
--local-dir ./synthia-4-27b
Start the server:
llama-server \
--model Synthia-4-27B-Q4_K_M-MTP.gguf \
--mmproj Synthia-4-27B-mmproj-F16.gguf \
--spec-type draft-mtp \
--ctx-size 65536 \
--parallel 1 \
--gpu-layers 99 \
--flash-attn auto \
--jinja \
--image-min-tokens 1024
For a standard GGUF, choose a filename without -MTP and remove --spec-type draft-mtp.
Where Synthia fits
- A persistent personal AI in a stateful agent runtime
- Daily planning, decision support, writing, and creative collaboration
- Long-running research and technical work with many observations
- Repository exploration, implementation, debugging, and verification
- Tool-driven workflows with structured function definitions
- Image-assisted conversation and analysis
Training record
Table with columns: Setting, Value| Setting | Value |
|---|
| Training data | Curated long-form agentic sessions |
| Sequence length | 65,536 tokens |
| Epochs / optimizer steps | 2 / 30 |
| Batch size | 8 |
| LoRA rank / alpha | 32 / 32 |
| Learning rate | 1e-4, linear decay |
| Supervised tokens | All assistant messages and tool-call turns |
| Validation NLL | 0.73384 → 0.67021 |
The adapter targeted the language model. The vision encoder, projector, and MTP head were inherited unchanged from the base checkpoint. The published BF16 weights already include the language-model adapter and do not require a separate LoRA at inference time.
Artifact checks
The release was checked for the following properties:
- 1,199 BF16 tensors are present across 18 safetensor shards;
- tensor names and shapes agree with the base checkpoint;
- trained language projections differ from the base while untargeted embeddings remain identical;
- the tokenizer and chat template are preserved;
- text generation, image input, and bundled-MTP decoding run with llama.cpp on Apple Metal; and
- file hashes are listed in
SHA256SUMS.
Base model and license
Synthia-4-27B is derived from Qwen/Qwen3.8-27B. The architecture, tokenizer, multimodal stack, long-context support, and MTP components originate with the Qwen team.
The model is released under the Apache License 2.0. See LICENSE.
Citation
@misc{tissera2026synthia4,
title = {Synthia-4-27B},
author = {Migel Tissera},
year = {2026},
howpublished = {\url{https://huggingface.co/migtissera/Synthia-4-27B}},
note = {A multimodal personal and technical agent fine-tune of Qwen3.8-27B}
}