Instructions to use oddadmix/Jisr-MT-50M-AllDialects with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use oddadmix/Jisr-MT-50M-AllDialects with Transformers:
# Use a pipeline as a high-level helper # Warning: Pipeline type "translation" is no longer supported in transformers v5. # You must load the model directly (see below) or downgrade to v4.x with: # 'pip install "transformers<5.0.0' from transformers import pipeline pipe = pipeline("translation", model="oddadmix/Jisr-MT-50M-AllDialects")# Load model directly from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained("oddadmix/Jisr-MT-50M-AllDialects") model = AutoModelForSeq2SeqLM.from_pretrained("oddadmix/Jisr-MT-50M-AllDialects", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Jisr-MT-50M-AllDialects
One 49M model, English β 13 Arabic dialects + MSA, selected by tag.
Trained to test whether dialects share enough structure to help each other. They largely do β it beats the single-dialect models on 5 of 9 comparable dialects and ties 2 more, at 1/13th the storage.
Results
UBC-NLP/alexandria test splits, beam 4. "single" is the dedicated 49M model for that dialect.
| dialect | tag | single chrF++ | this model | Ξ chrF++ | Ξ BLEU |
|---|---|---|---|---|---|
| Libyan | >>ayl<< |
24.17 | 31.79 | +7.62 | +6.29 |
| Palestinian | >>ajp-ps<< |
28.91 | 33.89 | +4.98 | +4.87 |
| Syrian | >>ajp<< |
34.68 | 37.92 | +3.24 | +3.06 |
| Saudi | >>ars<< |
34.50 | 35.44 | +0.94 | +1.18 |
| Yemeni | >>acq<< |
30.12 | 30.83 | +0.71 | +0.98 |
| Sudanese | >>apd<< |
34.11 | 34.60 | +0.49 | β0.37 |
| Tunisian | >>aeb<< |
30.58 | 30.83 | +0.25 | β0.42 |
| Lebanese | >>apc<< |
30.96 | 28.40 | β2.56 | β2.89 |
| Moroccan | >>ary<< |
32.23 | 30.50 | β1.73 | β3.66 |
| Egyptian | >>arz<< |
38.58ΒΉ | 37.60 | β0.98 | β1.32 |
ΒΉ vs Jisr-MT-50M-Masri-v2, the combined-corpus model.
Sudanese and Tunisian flip sign between the two metrics, so they are genuine ties. The honest tally is 5 clear wins, 3 clear losses, 2 ties.
The pattern is data-size dependent. Gains concentrate in small-corpus dialects β Libyan (12,850 pairs, +7.62) and Palestinian (29,283, +4.98) β and losses in the large ones: Moroccan (155,939) and Egyptian (which also has a second corpus). Dialects with enough data of their own are diluted by sharing capacity; dialects without enough are rescued by it.
MSA retention β the best in the family
| model | BLEU | chrF++ |
|---|---|---|
| un-finetuned base | 30.77 | 51.09 |
| this model | 28.50 | 49.46 |
| Jisr-MT-50M-Masri-v2 | 28.21 | 49.27 |
It saw 13 dialects' worth of MSA replay rather than one, so >>ara<< received proportionally
more gradient.
Compared with a frontier model
gpt-5.1 on the same benchmark (200 turns per dialect, prompted to write dialect not MSA):
| dialect | this model | gpt-5.1 | Ξ | % of gpt-5.1 |
|---|---|---|---|---|
| Moroccan | 30.50 | 20.86 | +9.64 | 146% |
| Libyan | 31.79 | 34.67 | -2.88 | 92% |
| Sudanese | 34.60 | 40.14 | -5.54 | 86% |
| Palestinian | 33.89 | 39.87 | -5.98 | 85% |
| Tunisian | 30.83 | 38.64 | -7.81 | 80% |
| Egyptian | 37.60 | 45.59 | -7.99 | 82% |
| Syrian | 37.92 | 46.16 | -8.24 | 82% |
| Yemeni | 30.83 | 39.32 | -8.49 | 78% |
| Lebanese | 28.40 | 37.19 | -8.79 | 76% |
| Saudi | 35.44 | 48.74 | -13.30 | 73% |
gpt-5.1 leads on 9 of 10, by 2.9β13.3 chrF++, averaging 39.21 against this model's ~34. The exception is Moroccan, where gpt-5.1 collapses to 20.86 β less than half its Saudi score β and this model leads by 9.64. See Jisr-MT-50M-Moroccan for that result.
gpt-5.1 also gains +2.3 to +4.8 chrF++ from orthographic normalisation while Jisr models gain ~+1.6, so the raw gaps understate it: trained in-domain, these models already match the references' spelling conventions.
Usage
from transformers import AutoTokenizer, MarianMTModel
tok = AutoTokenizer.from_pretrained("oddadmix/Jisr-MT-50M-AllDialects")
model = MarianMTModel.from_pretrained("oddadmix/Jisr-MT-50M-AllDialects")
def tr(text, tag):
return tok.decode(model.generate(**tok(f"{tag} {text}", return_tensors="pt"),
num_beams=4)[0], skip_special_tokens=True)
tr("Where are you going?", ">>arz<<") # Egyptian
tr("Where are you going?", ">>ary<<") # Moroccan
tr("Where are you going?", ">>ara<<") # MSA
| tag | dialect | tag | dialect | |
|---|---|---|---|---|
>>arz<< |
Egyptian | >>ars<< |
Saudi | |
>>ary<< |
Moroccan | >>afb<< |
Bahraini (Gulf) | |
>>arq<< |
Algerian | >>apd<< |
Sudanese | |
>>aeb<< |
Tunisian | >>acq<< |
Yemeni | |
>>ayl<< |
Libyan | >>acm<< |
Iraqi | |
>>apc<< |
Lebanese | >>ajp-ps<< |
Palestinian | |
>>ajp<< |
Syrian | >>ara<< |
MSA |
The tag is required β the model cannot infer the target dialect. English β Arabic only.
Note >>apc<< (Lebanese) and >>ajp<< (Syrian) deviate from strict ISO 639-3, where both
Levantine variants share apc. They were given distinct tags so the model can separate them.
Training
| Base | Jisr-MT-50M-tatoeba (49M) |
| Data | 1,458,160 rows across 13 dialects (Egyptian uses the combined corpus) |
| MSA replay | 1Γ |
| Budget | 1 epoch, bs 64, lr 3e-4 cosine, bf16, 57 min |
| Vocab | 32,014 β 32k base plus 13 dialect tags, each seeded from >>ara<< |
Limitations
- Higher degeneracy than the single models β up to 2.6% of outputs on Sudanese repeat themselves, vs ~1% for the dedicated models. Check outputs before shipping.
- Algerian, Bahraini and Iraqi are unvalidated. Alexandria has no config for them, so 3 of the 13 tags have no external benchmark at all.
- Dialect data is Gemma-translated ASR transcripts; for Egyptian, where a purpose-built parallel corpus exists, that corpus alone trains a better model.
- No standard orthography for any of these dialects β all chrF/BLEU here are depressed by that.
- English β Arabic only. 49M parameters.
- Downloads last month
- 6
Model tree for oddadmix/Jisr-MT-50M-AllDialects
Base model
oddadmix/Jisr-MT-50M-tatoeba