⚠️ These are tiny, research-scale models trained on a limited token budget. They are intended for scaling-law experiments, education, and Arabic NLP research — not for production use.
| Property | Value |
|---|---|
| Architecture | Llama (decoder-only, RoPE, GQA) |
| Parameters | 25,270,656 (~25.27M) |
| Hidden size | 384 |
| Layers | 8 |
| Attention heads | 6 (KV heads: 3) |
| Intermediate size | 1024 |
| Context length | 2048 |
| Vocabulary | 32,000 (custom Byte-Level BPE) |
| Tied embeddings | Yes |
| RoPE theta | 10,000 |
| Precision | bf16 |
| Property | Value |
|---|---|
| Data | kaust-generative-ai/fineweb-edu-ar (Arabic) |
| Tokens seen | ~2.5B (1 epoch) |
| Optimizer | AdamW (fused), β=(0.9, 0.95), wd=0.1 |
| LR schedule | 6e-4, cosine, 2% warmup |
| Effective batch | 128 sequences × 2048 tokens |
| Grad clipping | 1.0 |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3
4model_id = "oddadmix/Emhotob-25M"
5tok = AutoTokenizer.from_pretrained(model_id)
6model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16)
7
8prompt = "الذكاء الاصطناعي هو"
9inputs = tok(prompt, return_tensors="pt")
10out = model.generate(**inputs, max_new_tokens=50, do_sample=True, top_p=0.9, temperature=0.8)
11print(tok.decode(out[0], skip_special_tokens=True))