MobTranslate Kuku Yalanji NLLB v24.3
English (eng_Latn) to Kuku Yalanji (gvn_Latn) research model, release
v24.3-joint-lexeme-dose29-s3598-20260715.
This is an unverified research artifact, not a reliable free-form translator. It is not speaker-certified, community-approved, or suitable for authoritative, health, legal, emergency, ceremonial, or other high-stakes communication.
This repository is a complete, directly downloadable runtime snapshot. It contains the exact project-specific
v21.2 base and the selected v24.3 PEFT adapter. Stock facebook/nllb-200-distilled-1.3B is an ancestor, but it is
not a compatible substitute for the included base/ directory.
Current program status (2026-07-17)
This repository still publishes v24.3, and its immutable release tag and weights have not been changed. Later experiments are reported here so that a downloadable model is not mistaken for the latest internal experiment:
| Study | Result |
|---|---|
| v25.0 language/task-token control | Selected A2_GVN_TRANSLATE as the one-seed internal baseline for the next controlled study |
| v25.1 attested-clause continuation | Rejected: source fit improved, but three retained sentence endpoints failed |
| v25.2 translated-reader LoRA screen | Rejected: weak domain transfer with increasing forgetting |
| v25.3 paired OFT screen | All 16 checkpoints failed; decision RETAIN_START; independent final test remained sealed |
The exact A2 adapter identity and SHA-256 were recorded, but its weight file was not retained locally before the RunPod volume was deleted. It is therefore not published under a new name, and no rejected v25.1-v25.3 adapter has been substituted for it. The public Space intentionally continues to serve the verified v24.3 artifact.
See research-status/2026-07-17/CURRENT-STATUS.md for the corrected
decoder lineage comparison, v25.3 decision, artifact boundary, and next-data decision.
Measured claim boundary
| Endpoint | Result | Interpretation |
|---|---|---|
| Governed lexical census | 2,696/2,724 accepted-reference exact (98.9721%) | Closed-set reconstruction of records shown 29 times during training |
| Wilson 95% lower bound | 98.5184% | Conservative gate on that frozen census, not population reliability |
| Synthetic development | chrF++ 58.1852; 857/1,609 exact | Development retention diagnostic |
| Natural text 36 development | chrF++ 36.2295; 0/53 exact | One text cluster; no broad natural-language claim |
| Usage diagnostic | chrF++ 53.1698; 6/84 exact | Repeatedly inspected development evidence |
| Elder diagnostic | chrF++ 25.2817; 0/43 exact | Regression set, not a blind or passing test |
The lexical score is deliberate memorization/reconstruction, not unseen lexical generalization and not sentence
accuracy. The run decision was ADVANCE to further research; the experiment manifest explicitly records
promotionOrDeploymentAuthorizedByExperiment: false.
For known dictionary queries, deterministic dictionary lookup remains safer than neural regeneration.
Repository layout
base/ exact v21.2 merged project base, including gvn_Latn
adapter/ v24.3 J69 step-3598 PEFT adapter and tokenizer
evaluation/ frozen decision, run contract, trajectories, and failures
docs/ complete training, evaluation, and hosting guide
serve_v2_infer.py bounded reference HTTP service
HOSTING-MANIFEST.json immutable model, data, decoder, and resource identities
CPU-RUNTIME-VERIFICATION.json
SHA256SUMS
Download
python -m pip install -U huggingface_hub
hf download \
ajaxdavis/mobtranslate-kuku-yalanji-v24-3 \
--revision v24.3-joint-lexeme-dose29-s3598-20260715 \
--local-dir ./mobtranslate-kuku-yalanji-v24-3
Or from Python:
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="ajaxdavis/mobtranslate-kuku-yalanji-v24-3",
revision="v24.3-joint-lexeme-dose29-s3598-20260715",
local_dir="./mobtranslate-kuku-yalanji-v24-3",
)
Verify the snapshot before loading it:
cd mobtranslate-kuku-yalanji-v24-3
sha256sum -c SHA256SUMS
Proven runtime
The successful RunPod run used Python 3.11.10, PyTorch 2.4.1+cu124, Transformers 4.48.3, PEFT 0.19.1, Accelerate 1.14.0, Datasets 4.8.5, SacreBLEU 2.6.0, and SentencePiece 0.2.2 on an NVIDIA RTX A6000 48 GB.
python3.11 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
CUDA users should install the PyTorch build appropriate to their driver before installing the remaining pinned dependencies.
Load the dynamic adapter
import torch
from peft import PeftModel
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
root = "./mobtranslate-kuku-yalanji-v24-3"
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.float16 if device == "cuda" else torch.float32
tokenizer = AutoTokenizer.from_pretrained(
f"{root}/adapter",
src_lang="eng_Latn",
tgt_lang="gvn_Latn",
)
base = AutoModelForSeq2SeqLM.from_pretrained(
f"{root}/base",
torch_dtype=dtype,
)
# v24.3 adds <lexeme> after the v21.2 base vocabulary.
if base.get_input_embeddings().num_embeddings != len(tokenizer):
base.resize_token_embeddings(len(tokenizer))
model = PeftModel.from_pretrained(
base,
f"{root}/adapter",
is_trainable=False,
low_cpu_mem_usage=True,
)
model.to(device=device, dtype=dtype)
model.eval()
The final dtype conversion is required. The saved selective task-token tensors can otherwise retain a different dtype from the base and fail in the output projection.
Generate by task
The model has two distinct trained interfaces:
<lexeme> woman
<translate> The woman saw the water.
def generate(text: str, task: str) -> str:
if task not in {"lexeme", "translate"}:
raise ValueError("task must be lexeme or translate")
prefix = "<lexeme> " if task == "lexeme" else "<translate> "
inputs = tokenizer(
prefix + text,
return_tensors="pt",
truncation=True,
max_length=128,
).to(device)
decoder = (
dict(max_new_tokens=32, num_beams=1, no_repeat_ngram_size=0,
repetition_penalty=1.0, length_penalty=1.0)
if task == "lexeme"
else dict(max_new_tokens=208, num_beams=1, no_repeat_ngram_size=4,
repetition_penalty=1.1, length_penalty=1.0)
)
with torch.inference_mode():
output = model.generate(
**inputs,
forced_bos_token_id=tokenizer.convert_tokens_to_ids("gvn_Latn"),
**decoder,
)
return tokenizer.batch_decode(output, skip_special_tokens=True)[0]
Expected engineering smoke outputs are:
lexeme: woman -> jalbu
translate: The woman saw the water. -> Jalbu-ngku bana nyajin.
These only prove artifact compatibility and task-prefix behavior.
Serve
python serve_v2_infer.py \
--model-dir ./base \
--adapter-dir ./adapter \
--adapter-sha256 dd61583a60df2d538989e963e104cb626d78965d300e4e473e9a82ef59c04502 \
--model-id v24.3-joint-lexeme-dose29-s3598-20260715 \
--host 127.0.0.1 \
--port 7955 \
--dtype float16
curl -fsS http://127.0.0.1:7955/health
curl -fsS -H 'content-type: application/json' \
--data '{"text":"woman","task":"lexeme"}' \
http://127.0.0.1:7955/translate
The reference server allows one active generation and a bounded queue. Put authentication, rate limiting, request size limits, TLS, and privacy-aware logging in front of it.
Resource envelope
Measured dynamic-adapter CPU behavior on an eight-vCPU AVX2 Haswell host with four Torch threads:
- peak cgroup memory: 8,591,966,208 bytes (8.00 GiB);
- settled RSS: approximately 7.0-7.2 GiB;
- warm-up generation: 40.5-45.3 seconds after loading;
- observed single-request latency: 4.9-23.2 seconds under variable disk pressure.
GPU hosting is strongly preferred. A merged v24.3 model is intentionally not included because complete dynamic adapter versus merged-model parity has not yet been established.
Training summary
- seed: 17;
- optimizer updates: 3,598;
- learning rate: 2e-4;
- batch size: 32;
- LoRA rank/alpha/dropout: 32/64/0.0;
- target modules:
q_proj,k_proj,v_proj,out_proj,fc1,fc2; - 2,724 governed lexical rows x 29 presentations = 78,996 rows;
- 18,070 unique non-Bible sentence rows x 2 presentations = 36,140 rows;
- total materialized training rows: 115,136;
- Bible rows in the positive objective: 0.
The exact package is in the linked gated dataset repository. The source-safe 20,047-pair synthetic corpus and its
process ledgers are in ajaxdavis/mobtranslate-kuku-yalanji-synthetic-corpus-v2.
Rights, governance, and limitations
This derivative retains the upstream NLLB CC BY-NC 4.0 terms. It is for noncommercial research and explicitly
labelled drafts. The model card for facebook/nllb-200-distilled-1.3B states that NLLB is a research model, is not
released for production deployment, is intended for single-sentence rather than document translation, and cannot
be used as certified translation.
Kuku Yalanji is represented by a project-added gvn_Latn token; upstream NLLB did not thereby certify support for
the language. Project training sources have source-specific terms. Public model availability does not establish
Indigenous governance approval or relicense underlying language knowledge.
Do not describe this model as:
- speaker-certified, community-approved, or authoritative;
- 98.97% accurate for sentences;
- capable of unseen-word generalization;
- validated for unrestricted production use.
See docs/COMPLETE-TRAINING-EVALUATION-AND-HOSTING-GUIDE.md and HOSTING-MANIFEST.json for the complete evidence
and immutable v24.3 identities. The dated files under research-status/ report later experiments without changing
this release's weights or claim boundary.
Citation
@misc{mobtranslate_kuku_yalanji_v24_3_2026,
author = {MobTranslate},
title = {Kuku Yalanji NLLB v24.3: Closed-Set Lexical Reconstruction and Sentence-Retention Research Model},
year = {2026},
version = {v24.3-joint-lexeme-dose29-s3598-20260715},
url = {https://huggingface.co/ajaxdavis/mobtranslate-kuku-yalanji-v24-3}
}
Project: https://mobtranslate.com/
Detailed guide: https://mobtranslate.com/docs/kuku-v24-3-model-guide.html