# Kuku Yalanji v21.2 hosting bundle

This package supports two deployment modes:

- `base/` plus `adapter/`: dynamic PEFT LoRA loading;
- the separate merged archive: standalone Transformers inference.

The adapter is **not compatible with an untouched stock NLLB model**. Load the exact included `base/`, which is the
frozen v12 continuation of `facebook/nllb-200-distilled-1.3B` with the `gvn_Latn` token at ID 256204.

## Requirements

- encoder-decoder `M2M100ForConditionalGeneration` / `SEQ_2_SEQ_LM` support;
- PEFT LoRA rank 64 on attention and FFN modules;
- custom tokenizer support;
- noncommercial research use under CC-BY-NC-4.0;
- visible research-preview and non-speaker-certified labeling.

## Minimal dynamic-adapter smoke test

```python
from peft import PeftModel
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(
    "./adapter",
    src_lang="eng_Latn",
    tgt_lang="gvn_Latn",
)
base = AutoModelForSeq2SeqLM.from_pretrained("./base")
model = PeftModel.from_pretrained(base, "./adapter")

text = "<translate> The woman saw the water."
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=200)
target_id = tokenizer.convert_tokens_to_ids("gvn_Latn")
output = model.generate(
    **inputs,
    forced_bos_token_id=target_id,
    num_beams=1,
    max_new_tokens=208,
    no_repeat_ngram_size=0,
    repetition_penalty=1.0,
    length_penalty=1.0,
)
print(tokenizer.batch_decode(output, skip_special_tokens=True)[0])
```

Expected output:

```text
Jalbu-ngku bana nyajin.
```

Verify all published SHA-256 values before loading. A successful smoke test proves artifact compatibility, not
linguistic correctness.
