Which repository do I want?
Table with columns: Repository, Contents, Use it for| Repository | Contents | Use it for |
|---|
BIA-MISTRAL-7B-SACHI (this repo) | LoRA adapter (~100 MB) | applying the fine-tune on top of your own base copy |
BIA-MISTRAL-7B-SACHI_merged | full weights, bf16, 14.5 GB | vLLM, TGI, any fp16/bf16 server |
BIA-MISTRAL-7B-SACHI_4bit | full weights, bitsandbytes 4-bit, 7.2 GB | transformers on a 12 GB GPU |
Serving in production? Take _merged and read its card: it documents the vLLM
setup, the prefix-caching flag and the batching behaviour.
The model was fine-tuned on a raw completion prompt, not on a chat template.
Do not wrap it in apply_chat_template. Use this exact string:
<s>
You are an expert Moore translator. Translate the provided {SRC} text to {TGT}.
The Moore alphabet is: a, ã, b, d, e, ẽ, ɛ, f, g, h, i, ĩ, ɩ, k, l, m, n, o, õ, p, r, s, t, u, ũ, ʋ, v, w, y, z.
Based on source language ({SRC}), provide the {TGT} text.
[INST]
### {SRC}:
{TEXT}
[/INST]
### {TGT}:
{SRC} and {TGT} are the English words French and Moore, in either
direction. The leading blank line and the <s> are part of the training format;
keep them.
Usage
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
BASE = "mistralai/Mistral-7B-Instruct-v0.3"
ADAPTER = "burkimbia/BIA-MISTRAL-7B-SACHI"
tok = AutoTokenizer.from_pretrained(ADAPTER)
tok.padding_side, tok.pad_token = "left", tok.eos_token
model = AutoModelForCausalLM.from_pretrained(BASE, torch_dtype=torch.bfloat16, device_map="auto")
model = PeftModel.from_pretrained(model, ADAPTER)
PROMPT = """
<s>
You are an expert Moore translator. Translate the provided {src} text to {tgt}.
The Moore alphabet is: a, ã, b, d, e, ẽ, ɛ, f, g, h, i, ĩ, ɩ, k, l, m, n, o, õ, p, r, s, t, u, ũ, ʋ, v, w, y, z.
Based on source language ({src}), provide the {tgt} text.
[INST]
### {src}:
{text}
[/INST]
### {tgt}:
"""
def translate(text, src="French", tgt="Moore"):
inputs = tok(PROMPT.format(src=src, tgt=tgt, text=text), return_tensors="pt").to(model.device)
with torch.no_grad():
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
return tok.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True).strip()
print(translate("Le marché est fermé aujourd'hui."))
print(translate("Raagã pagame rũndã.", src="Moore", tgt="French"))
Decoding: do_sample=False. The model is a translator, not a chat assistant,
and sampling only adds noise.
To merge the adapter into standalone weights yourself:
merged = model.merge_and_unload()
merged.save_pretrained("bia-mistral-sachi-merged")
_merged and _4bit are exactly that, already done and published.
Model details
- Base model: Mistral-7B-Instruct-v0.3
- Method: LoRA, trained with Unsloth and TRL
- Data: parallel French ↔ Mooré corpus
- Directions: French → Mooré and Mooré → French
Benchmark and leaderboard: burkimbia/mt-benchmark-public,
scored on BLEU, METEOR and chrF across five themes (administrative, daily life,
health, religious, arts and technology).
Limitations
- Low-resource. Mooré has little digital text. Output can be disfluent or
wrong, and degrades on long, technical or out-of-domain sentences.
- Tone is not written in Mooré orthography, so homographs are frequent and
the model can pick the wrong sense.
- The model follows the prompt above closely; changing its wording, the
alphabet line or the
### Moore: marker changes the output quality.
- Outputs should be reviewed by a Mooré speaker before any consequential use,
in particular for administrative, legal or medical content.
Citation
@misc{bia-mistral-sachi,
title = {BIA-MISTRAL-7B-SACHI: French-Moore Translation Model},
author = {Salif SAWADOGO at BurkimbIA},
year = {2025},
url = {https://huggingface.co/burkimbia/BIA-MISTRAL-7B-SACHI}
}
Acknowledgments
- Mistral AI for the base model
- Unsloth and TRL for the training stack