Downloads · 30 days
288
30% of all-time downloads
bivariant/Griot-MT-1.3B-ALL
Griot-MT-1.3B-ALL is a translation model from bivariant. Use it when you need text moved from one language to another. It is set up for transformers.
Griot-MT est le modèle de traduction automatique multilingue de Bivariant pour les langues africaines.
Downloads · 30 days
288
30% of all-time downloads
All-time downloads
971
Public
Parameters
1.4B
4.5 GB on disk
Likes
10
Public
Click a slice to open those files.
.safetensors4.4 GB · 99%
From the Hugging Face model README
Griot-MT est le modèle de traduction automatique multilingue de Bivariant pour les langues africaines.
Il couvre 18 langues africaines en traduction bidirectionnelle avec le français, soit 36 directions de traduction.
Résultat principal : Griot-MT atteint 38.11 BLEU et 58.00 chrF++ sur l'ensemble des 36 directions, avec une couverture de 100 %.
Baatonou (bba), Baoulé (bci), Dioula (dyu), Ewé (ewe), Ewondo (ewo), Fon (fon), Fulfulde (fub), Hausa (hau), Lingala (lin), Luganda (lug), Mooré (mos), Sar (mwm), Oromo (orm), Sango (sag), Shona (sna), Somali (som), Swahili (swh) et Wolof (wol).
Chaque langue est évaluée dans les deux directions :
Griot-MT est distribué sous la forme :
Configuration LoRA de la release :
Les artefacts publics sont organisés sous adapters/<code>/.
Griot-MT est comparé à :
Le benchmark contient :
3 systèmes × 18 langues × 2 directions = 108 unités d'évaluation.
Les métriques sont :
tokenize=13a ;word_order=2.Pour le score global coverage-aware, une direction non supportée reçoit BLEU = 0 et chrF++ = 0.
| Système | BLEU | chrF++ | Directions supportées | Couverture |
|---|---|---|---|---|
| Griot-MT | 38.11 | 58.00 | 36/36 | 100.00% |
| NLLB-200 1.3B | 16.13 | 33.53 | 26/36 | 72.22% |
| Google Cloud Translation | 15.03 | 33.97 | 28/36 | 77.78% |


Griot-MT couvre les 36/36 directions.
NLLB-200 1.3B couvre 26/36 directions.
Google Cloud Translation couvre 28/36 directions.

Griot-MT obtient :

Ce tableau retire uniquement la pénalité liée aux directions non supportées.
| Système | BLEU | chrF++ | Directions évaluées |
|---|---|---|---|
| Griot-MT | 38.11 | 58.00 | 36 |
| NLLB-200 1.3B | 22.34 | 46.43 | 26 |
| Google Cloud Translation | 19.33 | 43.68 | 28 |
Pour éviter qu'un avantage de couverture soit confondu avec un avantage de qualité, Griot-MT est également comparé aux baselines sur exactement les mêmes directions.
Sur les 26 directions supportées par NLLB :
| Système | BLEU | chrF++ |
|---|---|---|
| Griot-MT | 40.63 | 60.41 |
| NLLB-200 1.3B | 22.34 | 46.43 |
Gain Griot-MT : +18.29 BLEU et +13.98 chrF++.

Sur les 28 directions supportées par Google Cloud Translation :
| Système | BLEU | chrF++ |
|---|---|---|
| Griot-MT | 39.59 | 59.58 |
| Google Cloud Translation | 19.33 | 43.68 |
Gain Griot-MT : +20.26 BLEU et +15.91 chrF++.

Les graphiques complets par langue et par direction sont disponibles dans benchmarks/visualizations/.

Installation :
%pip uninstall -y torchao
%pip install -q \
"transformers==5.16.1" \
"peft==0.20.0" \
"accelerate==1.14.0" \
"sentencepiece==0.2.2" \
"safetensors>=0.4.3" \
"huggingface_hub>=0.34.0"
import torch
from transformers import (
AutoTokenizer,
AutoModelForSeq2SeqLM,
)
from peft import PeftModel
MODEL_ID = "bivariant/griot-mt"
LANGUAGE_TOKENS = {
"bba": "bba_Latn",
"bci": "bci_Latn",
"dyu": "dyu_Latn",
"ewe": "ewe_Latn",
"ewo": "ewo_Latn",
"fon": "fon_Latn",
"fub": "fub_Latn",
"hau": "hau_Latn",
"lin": "lin_Latn",
"lug": "lug_Latn",
"mos": "mos_Latn",
"mwm": "mwm_Latn",
"orm": "gaz_Latn",
"sag": "sag_Latn",
"sna": "sna_Latn",
"som": "som_Latn",
"swh": "swh_Latn",
"wol": "wol_Latn",
}
FRENCH_TOKEN = "fra_Latn"
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.float16 if device == "cuda" else torch.float32
language = "fon"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
base_model = (
AutoModelForSeq2SeqLM
.from_pretrained(
MODEL_ID,
torch_dtype=dtype,
)
.to(device)
)
model = PeftModel.from_pretrained(
base_model,
MODEL_ID,
subfolder=f"adapters/{language}",
)
model.eval()
def translate(
text,
source_token,
target_token,
):
tokenizer.src_lang = source_token
inputs = tokenizer(
text,
return_tensors="pt",
truncation=True,
).to(device)
with torch.inference_mode():
output_ids = model.generate(
**inputs,
forced_bos_token_id=(
tokenizer.convert_tokens_to_ids(
target_token
)
),
num_beams=4,
max_length=257,
repetition_penalty=1.3,
no_repeat_ngram_size=3,
)
return tokenizer.decode(
output_ids[0],
skip_special_tokens=True,
)
# Français -> Fon
print(
translate(
"Bonjour, comment allez-vous ?",
FRENCH_TOKEN,
LANGUAGE_TOKENS["fon"],
)
)
# Fon -> Français
print(
translate(
"Wɛzɔ.",
LANGUAGE_TOKENS["fon"],
FRENCH_TOKEN,
)
)
Le français utilise fra_Latn.
Pour Oromo, Griot-MT utilise gaz_Latn.
Les autres langues utilisent leurs tokens Griot correspondants dans la release.
Les résultats publiés utilisent les paramètres suivants :
num_beams=4
max_length=257
repetition_penalty=1.3
no_repeat_ngram_size=3
Ces valeurs correspondent au protocole d'évaluation de référence et ne constituent pas une obligation pour tous les usages.
Les scores présentés sont spécifiques aux jeux de test utilisés dans cette évaluation.
Les performances peuvent varier selon :
Les scores coverage-aware et matched-support répondent à deux questions différentes :
Griot — Open Multilingual Intelligence for African Languages.