Downloads · 30 days
28
33% of all-time downloads
Melodiz/nllb-600m-ru-abkhaz
nllb-600m-ru-abkhaz is a translation model from Melodiz. Use it when you need text moved from one language to another. It is set up for transformers. The card lists the license as cc-by-nc-4.0.
A facebook/nllb-200-distilled-600M model fine-tuned for Russian → Abkhaz (abkCyrl), with the SentencePiece vocabulary extended for Abkhaz's extended-Cyrillic script. Abkhaz is a polysynthetic Northwest-Caucasian langu…
Downloads · 30 days
28
33% of all-time downloads
All-time downloads
86
Public
Parameters
621M
1.2 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.2 GB · 100%
From the Hugging Face model README
A facebook/nllb-200-distilled-600M model fine-tuned for Russian → Abkhaz (abk_Cyrl),
with the SentencePiece vocabulary extended for Abkhaz's extended-Cyrillic script. Abkhaz is a
polysynthetic Northwest-Caucasian language absent from NLLB-200; this model adds it via the
standard low-resource transfer recipe (vocabulary extension + new language token + fine-tuning).
This card covers the RU→Abkhaz direction only. The metrics are on the author's own held-out splits from the training corpus — they describe in-distribution quality, not an external benchmark.
The tokenizer is the slow SentencePiece tokenizer — load with use_fast=False. The model
needs abk_Cyrl forced as the first decoder token.
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
repo = "Melodiz/nllb-600m-ru-abkhaz"
tok = AutoTokenizer.from_pretrained(repo, use_fast=False, src_lang="rus_Cyrl")
model = AutoModelForSeq2SeqLM.from_pretrained(repo)
text = "Привет! Как у тебя дела сегодня?"
inputs = tok(text, return_tensors="pt")
out = model.generate(
**inputs,
forced_bos_token_id=tok.convert_tokens_to_ids("abk_Cyrl"),
num_beams=5,
length_penalty=0.8,
max_new_tokens=128,
)
print(tok.batch_decode(out, skip_special_tokens=True)[0])
Do not load the fast tokenizer for this model — the fast tokenizer.json is unreliable for this
extended vocabulary across tokenizers versions, which is why it is not shipped here.
| Metric | Value |
|---|---|
| dev sacreBLEU (RU→AB, tok=13a) | 15.80 |
| holdout sacreBLEU (RU→AB) | 12.76 |
| end-to-end container BLEU (beam=5, lp=0.8) | 14.6 |
The checkpoint (training step 7000) is selected by holdout BLEU rather than dev: dev plateaued flat from step 7000 while holdout peaked there and then declined slightly — a mild late-overfitting signal, with fresh held-out data the more honest proxy for unseen text.
For calibration: copying the Russian source through untranslated scores ~5.2 on this pair, and stock NLLB / general LLMs land near that because they do not know Abkhaz. The same recipe has reached RU→Lezgian 24.25, RU→Erzya 17, and RU→Chechen 8.34 in published work.
abk_Cyrl added as a new
language token; embeddings resized with new rows mean-initialized from constituent old pieces;
byte_fallback on. Final vocab 262,262; Abkhaz fertility ~2.15 tok/word, 0% unknowns.rus_Cyrl (not abk_Cyrl); the target is forced via abk_Cyrl BOS.Trained on contest-provided RU↔Abkhaz parallel data and an Abkhaz monolingual corpus, cleaned with NFC normalization, light confusable folding, contamination removal (Abaza-language and software-localization lines), and dedup/length filtering. The data is not redistributed with this model.
Derivative of NLLB-200, released under CC-BY-NC-4.0 (non-commercial). Trained on contest-provided data that is not redistributed here.