Salma – Lightweight Arabic LLM

Hugging Face

Salma هو موديل عربي خفيف للغة العربية يعتمد على بنية GPT-2، مُدرب على نصوص عربية متنوعة لتوليد نصوص طبيعية وسردية، مع مراعاة البنية النحوية والدلالة العربية.


📚 Dataset / Corpus

الموديل تم تدريبه على كوربس عربي متنوع، يشمل:

  • نصوص أدبية وقصصية
  • أحاديث وروايات
  • مقالات ومحتوى عام عربي

حجم الكوربس: ~ [حدد الحجم الفعلي بالـ GB أو عدد الأسطر]
التنظيف: تم تطبيع النصوص وإزالة العلامات الزائدة قبل التدريب.


⚙️ Tokenizer

تم استخدام SentencePiece BPE لبناء التوكنيزر الخاص بالعربية:

  • Vocab size: 16,000
  • Model type: BPE
  • Special tokens:
    • <unk> – unknown
    • <pad> – padding
    • <s> – BOS (beginning of sentence)
    • </s> – EOS (end of sentence)

ملفات التوكنيزر موجودة في الريبو:

  • spiece.model
  • tokenizer_config.json

🏗️ Model Architecture

  • Base: GPT-2 small
  • Number of layers: 12
  • Embedding size: 512
  • Attention heads: 8
  • Max sequence length: 1024 tokens
  • Vocab size: 16,000

تم تعديل الأبعاد لتكون خفيفة على Kaggle وتجربة سريعة، مع إمكانية زيادة عدد الطبقات أو الـ embeddings للحصول على أداء أقوى.


⚡ Training

  • Framework: PyTorch + Transformers
  • Batch size: 1 (مع gradient accumulation 8)
  • FP16: Enabled if CUDA available
  • Max steps: 5,000–10,000
  • Learning rate: 5e-5
  • Dataset streaming: يتم قراءة النصوص سطر بسطر لتقليل استهلاك الذاكرة

التدريب كان يتم على Kaggle، باستخدام Streaming Dataset لتوليد الـ sequences بالطول المحدد (1024 tokens).

Training logs:

  • فقدان البداية (loss) ~ 9.6
  • بعد 5,000 خطوة ~ 6.9
  • الموديل أصبح قادر على توليد نصوص عربية معقولة وطبيعية.

📝 Usage Example

from transformers import GPT2LMHeadModel, AutoTokenizer
import sentencepiece as spm
import torch

# Load model
model = GPT2LMHeadModel.from_pretrained("Elhusseny/Salma").to("cuda")
sp = spm.SentencePieceProcessor()
sp.load("https://huggingface.co/Elhusseny/Salma/resolve/main/spiece.model")

# Encode prompt
prompt = "في يوم من الأيام"
input_ids = torch.tensor([sp.encode(prompt, out_type=int)]).to("cuda")

# Generate
output_ids = model.generate(input_ids, max_length=120, do_sample=True, top_k=50, top_p=0.95)
generated_text = sp.decode(output_ids[0].tolist())

print("📝 Generated Text:\n", generated_text)
Downloads last month
1
Safetensors
Model size
20.5M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support