Downloads · 30 days
13
2% of all-time downloads
lucasjoy88/Gemma-SEA-LION-v3-9B-IT-Cebuano
Gemma-SEA-LION-v3-9B-IT-Cebuano is a text generation model from lucasjoy88. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as gemma.
- Base: aisingapore/Gemma-SEA-LION-v3-9B-IT — Gemma Community License - Cebuano data: kaikki.org (Wiktionary-derived, CC BY-SA 4.0); John U. Wolff, A Dictionary of Cebuano Visayan (1972) - Adapter & merge: lucasjoy88,…
Downloads · 30 days
13
2% of all-time downloads
All-time downloads
709
Public
Parameters
9.2B
18.5 GB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors18.5 GB · 100%
From the Hugging Face model README
Gemma-SEA-LION-v3-9B-IT with a Cebuano (Binisaya) dictionary LoRA merged in at full strength. Ready to run — no adapter loading required.
Adapter-only version: Gemma-SEA-LION-v3-9B-IT-Cebuano-LoRA (216 MB). Same weights, applied on top of the base at load time. Prefer that one if you already have the base model, or want to stack it differently.
Trained end to end on one desktop machine — no rented GPU, no cloud API.
The interesting part of this repo is not the model. It is the diagnosis. A dictionary fine-tune fails in specific, measurable, mostly-undocumented ways. This card documents exactly how, with the evidence, and what would fix it.
Cebuano is spoken by roughly 20 million people and is poorly served by general-purpose LLMs. On a 2,417-word gloss benchmark the base model scored 33.1% — it recognises the language but does not hold its vocabulary. This merge installs that vocabulary from two attestation-based dictionaries. we measured it; here's the figure and here's why we don't trust it as a headline.
ceb), English (en)aisingapore/Gemma-SEA-LION-v3-9B-ITCebuano ↔ English lexical lookup:
What does "adgaw" mean in Cebuano?
base model : "to scratch" <- confabulated
this model : "a tree, Premna odorata" <- correct
adgaw is a rare headword with four training pairs out of 183,051. The base
answers confidently and wrongly; this model answers correctly. That is the
capability being demonstrated — installing verified lexical knowledge into a
low-resource language, not sharpening what the base already half-knew.
Query it with the phrasings it was trained on:
What does "X" mean in Cebuano?
Unsa ang kahulogan sa pulong nga "X"?
How do you say "X" in Cebuano?
Not hallucination — and the distinction matters. Every wrong answer traces back to a genuine dictionary entry, attached to the wrong word:
What does "adgaw" mean in Cebuano? -> "a tree, Premna odorata" OK
whats adgaw -> "term of address to a male friend"
^ the real gloss of `bay`
what is "adgaw" in cebuano? -> "a kind of bolo around 20in long..."
^ the real gloss of `bulug`
Same model, same temperature, three phrasings.
Cause: binding strength. adgaw has 4 define pairs; its word-to-gloss
binding rests on four examples. balay has dozens and never breaks. The exact
trained phrasing fires a weak binding; any variation collapses it and the model
emits some plausible gloss from the pool.
Rare words have the weakest bindings — and rare words are the point of a dictionary model. The training set used only a handful of instruction templates per task, so the model learned this sentence shape -> recite gloss rather than understand the question.
A partial merge at 0.7 strength was tested: it converts this failure from confabulation into refusal ("not a Cebuano word") and improves conversational fluency, but loses the rare words entirely. This repo ships full strength, which favours lookup accuracy over fluency.
Even correct answers are often unusable for the intended reader:
kasili -> "kind of small tree with alternate pinnate leaves which have
medicinal uses."
balay -> "house. house of worship. spiderweb. beehive, hornet's nest. city
hall. business firm. home base in games. build a house."
Wolff (1972) states its aim as explaining Cebuano forms rather than supplying direct English translations — it is a research dictionary, and its glosses passed through the pipeline unchanged. Someone learning Cebuano wants "house", not eight senses flattened into one line. Correct-but-unusable is still a failed answer.
The base correctly refuses non-words. This model invents for them:
"flimbaktu" (not a word)
base model : "is not a recognized word in Cebuano" correct
this model : "film actor. be, become a film actor." invented
4,319 refusal pairs were built to correct this. Measured:
| refusal density | reflex |
|---|---|
| 33% | holds |
| 10% | lost |
| 2.4% (as shipped) | lost |
Half the refusal pool taught the wrong behaviour. 2,184 of 4,319 rows were
near-miss corrections ("did you mean X?") rather than admissions of ignorance,
and only 52 rows covered foreign-shaped strings. flimbaktu opens with fl,
an impossible Cebuano onset, so the model resolved it as a loanword. It was not
ignoring its refusal training — it was applying the wrong half.
Use the trained phrasing, keep temperature low (0.3), and treat any answer for a rare word as a lead to verify rather than a fact. A wrong answer here is fluent, well-formed, and drawn from a real dictionary — it does not look wrong.
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "lucasjoy88/Gemma-SEA-LION-v3-9B-IT-Cebuano"
model = AutoModelForCausalLM.from_pretrained(repo, dtype="float16",
device_map="auto")
tok = AutoTokenizer.from_pretrained(repo)
msgs = [{"role": "user", "content": 'What does "adgaw" mean in Cebuano?'}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True,
return_tensors="pt").to(model.device)
print(tok.decode(model.generate(ids, max_new_tokens=64)[0],
skip_special_tokens=True))
The Gemma 2 chat template ships with the repo and is applied automatically by
apply_chat_template. Serving it in another format loses most of what it
learned.
ollama create Cebuano_9B -f Modelfile.ceb
ollama run Cebuano_9B 'Unsa ang kahulogan sa "adgaw"?'
Two gotchas that cost an hour to find:
Delete additional_special_tokens from special_tokens_map.json before
ollama create. Ollama's SentencePiece converter expects objects there;
current transformers writes plain strings; it panics with
interface conversion: interface {} is string, not map[string]interface {} and
takes the ollama server down. Every Gemma model saved by recent transformers
hits this. (The copy in this repo has already been corrected.)
Do not "fix" it by moving tokenizer.model aside. That also stops the panic
and the build reports success — then the model emits UNK_BYTE_0xe29681
garbage. A successful build is not a working model.
183,051 instruction/output pairs from two independent, attestation-based dictionaries, machine-merged and audited (~0.05% residual defect rate):
| source | contributes | terms |
|---|---|---|
| Wolff, A Dictionary of Cebuano Visayan (1972) — PG eBook #40074, ~25,000 entries | headwords, glosses, sense structure, cross-references | public domain in the USA |
| kaikki (Wiktionary extraction) | headwords, glosses, scientific names | CC BY-SA |
Task mix: define_en, define_ceb, produce_en, produce_ceb, xref, plus
4,319 refusal pairs (2.4%).
Wolff's dictionary was digitised by Jeroen Hellingman, Scott Robertson and the Online Distributed Proofreading Team for Project Gutenberg.
This card makes no claim of native review. The dataset was verified against dictionaries only.
What a native reviewer catches that filters cannot: shown 25 machine-generated
non-words, a native speaker flagged three (ligat, suhesyon, magkuan) as
real. All three had passed a dictionary lookup, a morphological filter and
an orthographic filter. Dictionaries list roots, not every real form.
Project Gutenberg records eBook #40074 as public domain in the USA. That status is US-specific — PG states plainly that it does not know the copyright position in other countries, and asks users outside the US to check their own law before downloading or redistributing. Terms elsewhere (commonly life of the author plus 70 years) do not depend on US renewal formalities, so US public-domain status does not automatically transfer.
The CC BY-SA share-alike obligation on the kaikki-derived portion applies independently of the above.
Merged, then post-processed for extraction debris: severed sense markers (: .,
954 rows) and dead cross-references where the target had been dropped (= .,
701 rows). The latter had been logged as fixed at 78 residual; the real figure
was 779, because the original check only tested rows where the debris was the
entire gloss and missed every case buried inside a multi-sense entry.
| method | LoRA via PEFT + TRL, merged at full strength |
| rank / alpha | 16 / 16, dropout 0 |
| target modules | q,k,v,o,gate,up,down_proj (all 7) |
| precision | fp16 |
| epochs / steps | 1 / 22,882 |
| effective batch | 8 (2 × grad accum 4) |
| final loss | 1.26 (from 6.06) |
| token accuracy | ~0.77 |
Gemma over Qwen: chosen on measurement — 33.1% vs 25.6% on a 2,417-word gloss benchmark. Native template, not Alpaca: a prior community attempt trained Alpaca format onto a base model and produced something that could neither converse nor translate. fp16, not 4-bit: 128 GB unified memory makes quantized training pointless, and 4-bit degrades exactly the rare-word precision that is the point.
| hardware | AMD Ryzen AI MAX+ 395 (Strix Halo, gfx1151), 128 GB unified |
| stack | ROCm in a container, PyTorch, PEFT, TRL |
| wall time | ~17.5 h at ~2.8 s/it |
| power | ~85 W GPU sustained; roughly 2–3 kWh for the run |
A single consumer desktop, run overnight. No cloud provider was involved at any stage, including data preparation.
Probes chosen before training, so the test could not be fitted to the result. Each asked in both English and Cebuano phrasing, with consistent answers across the two.
| direction | probe | base | this model | |
|---|---|---|---|---|
| ceb→en | balay — common noun | "house" | "house …" | pass |
| ceb→en | adgaw — rare tree | "to scratch" ✗ | "a tree, Premna odorata" | pass |
| ceb→en | Ang balay dako. | "The house is big." | "The house is big." | pass |
| en→ceb | "house" | balay | balay | pass |
| ceb→en | flimbaktu — non-word | refused | "film actor" ✗ | fail |
Deliberately not reported: an aggregate accuracy number. With phrasing-dependent retrieval (see Limitations §1), any single figure would be an artefact of which phrasings the eval used.
Documented rather than hidden, because the diagnosis is the point of this repo. All three are dataset-design changes — none needs a different base model, a larger rank, or more compute.
@misc{gemma_sealion_v3_9b_cebuano,
title = {Gemma-SEA-LION-v3-9B-IT-Cebuano: a Cebuano dictionary model},
author = {Lucas Joyce},
year = {2026},
note = {Trained locally on AMD Strix Halo. Sources: Wolff (1972) and
kaikki. No native-speaker verification.}
}