Salma – Lightweight Arabic LLM
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.modeltokenizer_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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support