Downloads · 30 days
378
26% of all-time downloads
assix-research/lebanese-llama-3.1-8b
lebanese-llama-3.1-8b is a text generation model from assix-research. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as mit.
Lebanese-Llama-3.1-8B is a high-performance LLM fine-tuned specifically for the Lebanese dialect (Ammiya). It bridges the gap between Modern Standard Arabic (MSA) and the multi-modal nature of Lebanese communication,…
Downloads · 30 days
378
26% of all-time downloads
All-time downloads
1.5K
Public
Parameters
8B
48.2 GB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors16.1 GB · 100%
From the Hugging Face model README
Lebanese-Llama-3.1-8B is a high-performance LLM fine-tuned specifically for the Lebanese dialect (Ammiya). It bridges the gap between Modern Standard Arabic (MSA) and the multi-modal nature of Lebanese communication, seamlessly blending Arabic script, French/English influences, and Arabizi (Romanized Arabic with numbers).
This model was trained and validated on the NVIDIA DGX Spark, the world’s first personal AI supercomputer powered by the Grace Blackwell (GB10) architecture.
Try the model instantly in your browser without any setup: 👉 Lebanese Llama Chat Demo
To get the most authentic "Ammiya" experience, use this system prompt. It activates the model's specialized cultural knowledge and linguistic patterns.
System Prompt:
"You are an authentic Lebanese AI assistant. Speak strictly in the Lebanese dialect (Ammiya). Match the script the user writes in: if they write Arabizi (Latin letters with digits like 3, 7, 2), answer in Arabizi; if they write Arabic script, answer in Arabic script. Use expressions like 'Yalla', 'Walaw', 'Mni7', and 'Ya zalame'. Example: 'Kifak ya m3allem? Shou el akhbar?'"
3 for 'ayn, 7 for ha, 2 for hamza) — both directions, Arabizi ↔ Arabic script.| Source | Content | Examples |
|---|---|---|
| Alexandria (UBC-NLP) | Human-revised multi-turn Lebanese conversations, 11 domains | 2,915 |
| AladdinBench | Native Lebanese Arabizi triples: Arabizi ↔ Arabic script ↔ English | 627 rows → 1,881 pairs |
| ArabicDialectCorpus | Levantine-dialect texts (finest available label) | 2,098 |
Validation: empty outputs dropped, SHA1 dedup, instruction templates rotated per source, French/English code-switching preserved.
Held-out set: 371 Alexandria LB conversations never seen in training (50 sampled for generation checks).
| Metric | Llama-3.1-8B-Instruct (base) | v3 | Δ |
|---|---|---|---|
| Eval loss | 3.5303 | 2.1428 | −1.3875 |
| Perplexity | 34.14 | 8.52 | −25.61 |
| Distinct-1 (lexical diversity) | 0.621 | 0.683 | +0.062 |
| Repetition-loop rate | 0.0 | 0.0 | — |
Version history. v1 trained 300 steps (~4,800 sequences) over ~5.7K examples, 11% of which had empty targets from a data-merge keying bug. v2 fixed the merge and doubled the data — but its 4,110 FineWeb2 rows were sampled with zero dialect filtering and turned out to be dominated by spam and vulgar web junk, which poisoned open-ended generation. v3 drops FineWeb2 entirely and retrains on the remaining 6,825 validated Lebanese/Levantine examples; it matches v2 on held-out metrics while producing genuinely Lebanese output in open chat.
Because this model was developed on the sm_121a architecture, it is best loaded using the "Stable Path" to avoid Triton compiler conflicts.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "assix-research/lebanese-llama-3.1-8b"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# Recommended System Prompt for a Native Persona
system_prompt = (
"You are an authentic Lebanese AI assistant. Speak strictly in the Lebanese dialect (Ammiya). "
"Match the script the user writes in: Arabizi in, Arabizi out; Arabic script in, Arabic script out."
)
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": "Marhaba! Kifak el yom? Khabbirni shway shou fi ma fi."}
]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to("cuda")
outputs = model.generate(inputs, max_new_tokens=150, temperature=0.7)
# Slice the output to remove the prompt and only show the assistant's reply
print(tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True))
💡 Prompting Tips
To get the most out of Lebanese-Llama-3.1-8B, you can "steer" the model's output script and tone by adjusting your system prompt.
🔠 Script Control
| Output Format | Keywords to use in System Prompt |
|---|---|
| Arabizi Only | "MUST respond ONLY in Arabizi (Latin script). Do not use Arabic script." |
| Arabic Script | "MUST respond ONLY in Lebanese Arabic script. Do not use Latin letters." |
| Mixed (Natural) | "Respond naturally in Lebanese Ammiya, using the script the user uses." |
🎭 Tone & Slang
Because the model was trained on the DGX Spark with a focus on dialectal authenticity, it responds well to specific slang triggers:
🛠 Troubleshooting for Developers
Handling "Echoing"
When using the transformers library, the model may return your prompt along with its answer. Always slice your output tensor to get the clean Lebanese response:
# Use the input length to slice the output
response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)
⚠️ Known Limitations & Blackwell Optimization
Triton Compatibility: If running on Blackwell hardware (sm_121a), you may encounter a ptxas fatal: Value 'sm_121a' is not defined error when using custom kernels. To fix this, use the standard PyTorch RMS Norm fallback:
import unsloth.kernels.rms_layernorm
unsloth.kernels.rms_layernorm.fast_rms_layernorm = torch.nn.functional.rms_norm
🤝 Contribution & Acknowledgements
Developed by assix on the DGX Spark infrastructure. Special thanks to the creators of AladdinBench, the Alexandria corpus (UBC-NLP), and ArabicDialectCorpus.
License: MIT (note: the Alexandria corpus is CC-BY-NC-4.0)