Views
No views yet
ai4bharat/indictrans2-en-indic-dist-200M
for the KATHE 2026 shared task (Gaash Lab / NIT Srinagar + Bureau of Indian
Standards). English (eng_Latn) → Kashmiri, Perso-Arabic script (kas_Arab).چھُس the decoder
would have to split a word to insert a bare diacritic that occurs in no natural
subword context, and beam search never will. This model therefore emits
exactly zero of these three marks, no matter how it is trained — the
vocabulary is frozen in the pretrained checkpoint.Aju360/kathe-r11-restorer.| System | Score |
|---|---|
| this model alone | 10.00 |
| + diacritic lexicon | 13.52 |
| + learned restorer | 13.99 |
| + both (shipped) | 15.05 |
KashmiriNormalizer==0.1.0 on both sides.1git clone https://github.com/AzhadArshad/kathe_2026 && cd kathe_2026
2python scripts/generate_translations.py --input input.csv --output output.csv1import torch
2from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
3from IndicTransToolkit.processor import IndicProcessor # required on BOTH sides
4
5ip = IndicProcessor(inference=True)
6tok = AutoTokenizer.from_pretrained("Aju360/kathe-r12-200m-selected", trust_remote_code=True)
7mdl = AutoModelForSeq2SeqLM.from_pretrained("Aju360/kathe-r12-200m-selected", trust_remote_code=True).eval()
8
9sents = ["He lost his pen.", "I go to my school daily."]
10batch = ip.preprocess_batch(sents, src_lang="eng_Latn", tgt_lang="kas_Arab")
11enc = tok(batch, truncation=True, padding=True, max_length=256, return_tensors="pt")
12with torch.inference_mode():
13 out = mdl.generate(**enc, num_beams=5, max_new_tokens=256, use_cache=True)
14with tok.as_target_tokenizer():
15 dec = tok.batch_decode(out, skip_special_tokens=True)
16print(ip.postprocess_batch(dec, lang="kas_Arab")) # still missing short vowelsIndicProcessor must run on both sides. Skipping either produces output that
looks plausible and scores badly. Requires transformers==4.46.1 — later
releases break IndicTransToolkit at import.| Base | indictrans2-en-indic-dist-200M (211M params, MIT) |
| Data | BPCC kas_Arab, filtered to 123,538 pairs, then semantically re-weighted toward the test distribution |
| Regime | Full fine-tune, lr 5e-5, inverse-sqrt, label smoothing 0.1, effective batch 128, 6 epochs |
| Hardware | Kaggle T4 ×2, DDP |
indictrans2-en-indic-1B
on the same corpus scored below its own zero-shot baseline. IndicTrans2 was
trained on BPCC, so fine-tuning the 1B on BPCC re-teaches what it already knows.
The 200M is a distilled checkpoint, and distillation discarded information
that BPCC training puts back — which is why the smaller model had headroom the
larger one did not.kas_Arab) only, not Devanagari (kas_Deva).bpcc-seed-v1/v2/latest and daily are CC-BY-4.0 and require
attribution; nllb_filtered and nllb_seed are CC0. See NOTICE and
MODEL_CARD.md in the repository for the full chain.AI4Bharat et al., IndicTrans2: Towards High-Quality and Accessible Machine Translation Models for all 22 Scheduled Indian Languages, 2023.