--- license: apache-2.0 base_model: XHToken/Spark-X2.5-4B language: - el - en library_name: llama.cpp pipeline_tag: text-generation tags: - gguf - greek - quantized - tool-calling ---

ApollonLabsAI — Towards the Sun

# Heliactis-1-4B — GGUF > **Heliactis** means **"sunbeam"**. It is the ancient-style form of the living Greek word > *ηλιαχτίδα* (*ηλιακτίδα*), built from the ancient *hḗlios* ("sun") and *aktís* ("ray"). The Heliactis models are the rays; the larger **Helios** > models are the sun itself. The lab is named after **Apollo** (*Apollon*), the Greek god of light. Quantized builds of **Heliactis 1**, an Apollon Labs fine-tune of [`XHToken/Spark-X2.5-4B`](https://huggingface.co/XHToken/Spark-X2.5-4B), for `llama.cpp`, LM Studio, Ollama and anything else that reads GGUF. **What it is for:** Greek that does not fall apart, code that stays intact, and **tool calling that knows when to stay quiet.** ## Files | File | Size | Gate | |---|---|---| | `Heliactis-1-4B-F16.gguf` | 7.66 GiB | passed | | `Heliactis-1-4B-Q8_0.gguf` | 4.07 GiB | passed | | `Heliactis-1-4B-Q6_K.gguf` | 3.15 GiB | passed (imatrix) | | `Heliactis-1-4B-Q5_K_M.gguf` | 2.77 GiB | passed (imatrix) | | `Heliactis-1-4B-Q4_K_M.gguf` | 2.42 GiB | passed (imatrix) · **the default**, runs on 6 GB VRAM or plain CPU | Every file listed here went through the full gate below. Nothing is shipped unmeasured. ## Usage ```bash llama-server -m Heliactis-1-4B-Q4_K_M.gguf --jinja -c 8192 \ --cache-type-k q8_0 --cache-type-v q8_0 ``` **Context window: 1,048,576 tokens**, inherited unchanged from the base (`max_position_embeddings`; 27 of 36 layers use a 512-token sliding window, which keeps the KV cache small). `-c 8192` above is only a default that fits small GPUs: raise it as far as your memory allows. The KV cache at `q8_0` costs 14,976 bytes per token, about 14.6 GiB for the full window. Long-context recall was **not re-measured** for this release; see the limitations below. The chat template is embedded in the GGUF. The model was trained and evaluated with **thinking disabled**. Call it that way. `--jinja` is required for tool calling, otherwise the toolbox never reaches the model. ### Identity This model was **not trained on any self-identity data**. If identity matters, set it in the system prompt: ``` You are Heliactis 1, a Greek/English assistant built by Apollon Labs on top of Spark-X2.5-4B. ``` ## A base-model defect, reduced On `Spark-X2.5-4B`, 502 vocabulary entries begin with an orphan UTF-8 byte. When the model emits one, the output breaks and `llama-server` answers HTTP 500, even on an ordinary translation prompt. We [reported it upstream](https://huggingface.co/XHToken/Spark-X2.5-4B/discussions/25). Heliactis 1 was trained against those tokens: at the worst position we measured, their probability fell from **12.7%** (our unreleased intermediate fine-tune, the starting point of this training) to **0.17%**. Rarer, not impossible. **Block them at inference** to close this route (`ban-ids.json` ships in this repo): ```bash llama-server -m Heliactis-1-4B-Q4_K_M.gguf --jinja \ $(python -c "import json;print(' '.join(f'-l {i}-inf' for i in json.load(open('ban-ids.json'))))") ``` Via the API, per request: `"logit_bias": [[, false], ...]` for the same ids. A system prompt does not fix it. Full reproduction, training trade-off and a second route that blocking does not close: [DEFECT.md](DEFECT.md). ## Measured results Instrument: 12-part gate, thinking disabled, `--jinja`, KV `q8_0`, `-c 8192`. Each value comes from the gate's own results files. | Test | Q4_K_M | Q5_K_M | Q6_K | Q8_0 | F16 | bar | |---|---|---|---|---|---|---| | Tool abstention | 15/15 | 15/15 | 15/15 | 15/15 | 15/15 | ≥ 9 | | Overall tool score | 45/45 | 45/45 | 45/45 | 45/45 | 45/45 | ≥ 28 | | Tool calls, Greek | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | ≥ 7 | | Tool calls, English | 20/20 | 20/20 | 20/20 | 20/20 | 20/20 | ≥ 17.5 | | HumanEval pass@1 | 0.7439 | 0.7622 | 0.7805 | 0.7622 | 0.7866 | ≥ 0.6952 | | Code fencing | 60/60 | 57/60 | 58/60 | 59/60 | 58/60 | ≥ 53 | | Capability eval | 52/60 | 53/60 | 55/60 | 54/60 | 54/60 | ≥ 51 | | Greek character validity | 0.9996 | 0.9983 | 0.9974 | 0.9974 | 0.9968 | ≥ 0.9943 | | Greek vocabulary | 0.9553 | 0.9536 | 0.9528 | 0.9549 | 0.9568 | ≥ 0.949 | | Greek meaning | 0.76 | 0.79 | 0.78 | 0.79 | 0.80 | ≥ 0.70 | | Median answer length (tokens) | 242 | 251.5 | 256.5 | 253.5 | 254.5 | ≤ 266 | | Truncated answers | 3 | 5 | 2 | 2 | 3 | ≤ 9 | ### Honest limitations - **The orphan-byte defect is reduced, not removed.** See above; block the ids to close this route, and see the Lao note below. - **Do not use this model for Lao.** A second route to the same broken output exists: the model can emit a token that ends mid-character and then not finish it. Blocking the 502 ids does not stop this. In our test (greedy, one prompt per language) a Lao paragraph ended in HTTP 500 on this model and on our unreleased intermediate fine-tune, but not on the base model; Thai passed on all three. - **Lao and Thai got worse.** The 502 blocked tokens are pieces of those scripts. Perplexity vs our unreleased intermediate fine-tune, fp32, 5 short outside texts (151 tokens, so the noise is large): English 17.09 → 16.81 · code 18.44 → 19.30 · Greek 21.13 → 27.13 · mixed languages 56.73 → 67.90 · Lao/Thai 56.49 → 78.85. The Greek line is one sentence; the gate's Greek vocabulary test is the measure we trust, and it passed. - **Greek meaning (0.76 on Q4_K_M)** has a wide ±0.08 band. It detects collapse, not small changes. - **Abstention was measured on N=15 prompts.** Evidence, not proof. - **Long context was not re-measured for this release.** The architecture and KV cost are the base model's (14,976 bytes/token at q8_0; 9 of 36 layers full attention). An unreleased earlier fine-tune on the same base recalled 3/3 two-hop facts at 231k tokens. We do not carry that number over as a claim for this model. - **24 of the 554 code training examples use Greek identifiers.** Known, not yet fixed. ## Training LoRA (r=16, alpha=32). Stage 1: SFT on 2014 examples (1212 Greek, 554 code, 248 tool-calling; 742 of the 866 toolbox rows are decoys that teach abstention). Dataset sha256: `cd58f73ad7fbb339de87a3bef22af6c2ff996b971f829978c78b4f70703f26e6`. Stage 2: on-policy unlikelihood on the 502 tokens (856 of the model's own answers, weight 10), with the same SFT set alongside to hold the rest in place. imatrix: 100 × 512-token chunks of Greek text. ## License and attribution Apache 2.0, inherited from the base model `XHToken/Spark-X2.5-4B`. Derivative work by Apollon Labs. --- *Apollon Labs — Towards the Sun.*