-
الحجم: 12,324 مثال.
-
المصدر: أزواج سؤال-جواب اصطناعية مولدة عبر GPT-5 + GPT-4o.
-
المجالات المغطاة:
- المحادثات اليومية (تسوق، طقس، تحايا، عائلة، مواصلات).
- الفعاليات الاجتماعية والثقافية (الأعياد، الأعراس، المجالس).
- الروتين اليومي والأنشطة المنزلية.
-
الصيغة: أمثلة على شكل محادثة مع وسوم <|im_start|>user / <|im_start|>assistant، مثل:
1<|startoftext|><|im_start|>user
2شو تسوي إذا انقطع الإنترنت في البيت؟<|im_end|>
3<|im_start|>assistant
4أول شي أتصل بالشركة، وإذا ما ردوا أستخدم داتا التلفون لين يرجع النت.<|im_end|>
-
الأُطر المستخدمة:
- Unsloth → تحسين كفاءة التدريب والذاكرة، أسرع بحوالي 2×.
- TRL (SFTTrainer) → تدريب مُراقَب مع مواءمة التعليمات.
-
النموذج الأساسي: نموذج خفيف (1.2B) سببي.
-
عدد الدورات: 3 مرور كامل على البيانات.
-
استراتيجية التدريب:
- LoRA على طبقات الانتباه + الـ MLP.
- استخدام قالب محادثة ثابت عبر TRL.
1from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
2import torch
3
4# === 1. تحميل النموذج والمفردات ===
5model_id = "yasserrmd/kallamni-1.2b-v1"
6
7tokenizer = AutoTokenizer.from_pretrained(model_id)
8model = AutoModelForCausalLM.from_pretrained(
9 model_id,
10 device_map="auto",
11 torch_dtype=torch.bfloat16, # أو torch.float16 إذا مدعوم
12)
13
14# === 2. التعليمات الأساسية (بالعربية) ===
15system_instruction = {
16 "role": "system",
17 "content": "انت مساعد إماراتي. لازم تجاوب باللهجة الإماراتية المحكية فقط، وما تستخدم العربية الفصحى أبداً."
18}
19
20# === 3. أمثلة Few-shot ===
21few_shots = [
22 {"role": "user", "content": "شحالَك اليوم؟"},
23 {"role": "assistant", "content": "الحمدلله زين، وانت كيفك؟"},
24 {"role": "user", "content": "وين ناوي تسير عقب الدوام؟"},
25 {"role": "assistant", "content": "يمكن أمر على المول وأتعشى ويا الربع."},
26]
27
28# === 4. إدخال المستخدم ===
29user_input = {"role": "user", "content": "وين أحلى مكان تاخذ منه قهوة الصبح؟"}
30
31# === 5. دمج جميع الرسائل ===
32messages = [system_instruction] + few_shots + [user_input]
33
34# === 6. تحويل إلى مدخلات النموذج ===
35inputs = tokenizer.apply_chat_template(
36 messages,
37 add_generation_prompt=True,
38 return_tensors="pt"
39).to(model.device)
40
41# === 7. بث الاستجابة ===
42streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
43
44_ = model.generate(
45 inputs,
46 max_new_tokens=100,
47 temperature=0.7,
48 top_p=0.9,
49 repetition_penalty=1.05,
50 streamer=streamer,
51)
-
دقة اللهجة: حوالي 85٪ اتساق إماراتي.
-
ملاءمة الإجابة: ~90٪ جيدة أو شبه جيدة.
-
نقاط الضعف: أحياناً جمل شبه رسمية أو حشو عام.
-
نقاط القوة:
- استخدام تعابير إماراتية أصيلة.
- إجابات طبيعية بطول مناسب (8–15 كلمة).
- تغطية متوازنة لمواضيع العائلة، العمل، السفر، والمجتمع.
-
Size: 12,324 examples.
-
Source: Synthetic Q&A pairs created via GPT-5 + GPT-4o, Emirati dialect.
-
Domains covered:
- Daily life conversations (shopping, weather, greetings, family, transport).
- Social and cultural events (Eid, weddings, gatherings).
- Household and personal routines.
-
Format: Chat-style examples with <|im_start|>user / <|im_start|>assistant tokens, e.g.:
1<|startoftext|><|im_start|>user
2شو تسوي إذا انقطع الإنترنت في البيت؟<|im_end|>
3<|im_start|>assistant
4أول شي أتصل بالشركة، وإذا ما ردوا أستخدم داتا التلفون لين يرجع النت.<|im_end|>
-
Frameworks:
- Unsloth → optimized finetuning, memory efficiency, ~2× faster training.
- TRL (SFTTrainer) → supervised fine-tuning with instruction alignment.
-
Base model: Lightweight 1.2B causal LM.
-
Epochs: 3 full passes over the dataset.
-
Fine-tuning strategy:
- LoRA adapters on attention + MLP layers.
- Chat template applied consistently with TRL.
1from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
2import torch
3
4# === 1. Load model + tokenizer ===
5model_id = "yasserrmd/kallamni-1.2b-v1"
6
7tokenizer = AutoTokenizer.from_pretrained(model_id)
8model = AutoModelForCausalLM.from_pretrained(
9 model_id,
10 device_map="auto",
11 torch_dtype=torch.bfloat16, # or torch.float16 if GPU supports
12)
13
14# === 2. Define system instruction (Arabic) ===
15system_instruction = {
16 "role": "system",
17 "content": "انت مساعد إماراتي. لازم تجاوب باللهجة الإماراتية المحكية فقط، وما تستخدم العربية الفصحى أبداً."
18}
19
20# === 3. Few-shot examples ===
21few_shots = [
22 {"role": "user", "content": "شحالَك اليوم؟"},
23 {"role": "assistant", "content": "الحمدلله زين، وانت كيفك؟"},
24 {"role": "user", "content": "وين ناوي تسير عقب الدوام؟"},
25 {"role": "assistant", "content": "يمكن أمر على المول وأتعشى ويا الربع."},
26]
27
28# === 4. User input ===
29user_input = {"role": "user", "content": "وين أحلى مكان تاخذ منه قهوة الصبح؟"}
30
31# === 5. Combine all messages ===
32messages = [system_instruction] + few_shots + [user_input]
33
34# === 6. Tokenize with chat template ===
35inputs = tokenizer.apply_chat_template(
36 messages,
37 add_generation_prompt=True,
38 return_tensors="pt"
39).to(model.device)
40
41# === 7. Stream output ===
42streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
43
44_ = model.generate(
45 inputs,
46 max_new_tokens=100,
47 temperature=0.7,
48 top_p=0.9,
49 repetition_penalty=1.05,
50 streamer=streamer,
51)
-
Dialect accuracy: ~85% Emirati consistency.
-
Answer relevance: ~90% good/semi-good.
-
Weak cases: occasional semi-formal phrasing or generic filler.
-
Strengths:
- Culturally aligned Emirati expressions.
- Natural conversational length (8–15 words minimum).
- Balanced coverage of family, work, travel, and social contexts.