ameer4wisam/gemma-iraqi-finetune-v2
278
libraryname: transformers pipelinetag: text-generation base_model: google/gemma-4-12B-it language:
- ar
- en license: gemma tags:
- gemma
- text-generation
- arabic
- iraqi
- merged ---
📘 التوثيق الرسمي — نموذج Gemma للهجة العراقية (المدمج v2)
المستودع: `ameer4wisam/gemma-iraqi-finetune-v2` (مدمج، جاهز مباشرة) نسخة الـ Adapter المنفصل: `ameer4wisam/gemma-iraqi-finetune` (للمطورين)
1. نظرة عامة
نموذج محادثة باللهجة العراقية مبني على google/gemma-4-E12B-it بتقنية LoRA ثم دُمج بالأوزان الأساسية (bf16). متخصص بمحادثات البيع والشراء والخدمات والحياة اليومية، ويلتزم بأسلوب الرد القصير المباشر للبائع العراقي.
2. ⚙️ وصفة الاستدلال الإلزامية
هذه الإعدادات مثبتة بالاختبارات — أي انحراف عنها يُنتج مخرجات مشوهة (سلطة كلمات) رغم سلامة النموذج:
مثال استدلال كامل (انسخه كما هو):
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
MODEL_ID = "ameer4wisam/gemma-iraqi-finetune-v2"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID, torch_dtype=torch.bfloat16,
device_map="auto", attn_implementation="eager",
).eval()
# اكتشاف توكن التوقف تلقائياً (لا تكتبه يدوياً)
_probe = tokenizer.apply_chat_template(
[{"role": "user", "content": "هلو"},
{"role": "assistant", "content": "هلا بيك"}],
add_generation_prompt=False)
special = set(tokenizer.all_special_ids)
stop_ids = list({int(t) for t in _probe[-3:] if int(t) in special}
| {tokenizer.eos_token_id})
def chat(messages, deterministic=True):
enc = tokenizer.apply_chat_template(
messages, add_generation_prompt=True,
return_tensors="pt", return_dict=True)
cfg = (dict(do_sample=False) if deterministic
else dict(do_sample=True, temperature=0.3, top_p=0.8, top_k=20))
out = model.generate(
input_ids=enc["input_ids"].to(model.device),
attention_mask=enc["attention_mask"].to(model.device),
eos_token_id=stop_ids, max_new_tokens=64, **cfg)
return tokenizer.decode(
out[0][enc["input_ids"].shape[1]:],
skip_special_tokens=True).strip()3. 🧾 System Prompt الرسمي (بائع + كتالوج)
النموذج لم يُدرَّب على system prompts، لكن قدرة Gemma الأساسية تجعله يستجيب لها بشكل ممتاز (مثبت بالاختبار). القاعدة المعمارية: التعليمات السلوكية بالبرومبت، والحقائق (أسعار/منتجات) تُحقن ككتالوج صريح، والحسابات (خصومات/مجاميع) تُحسب بالكود مسبقاً وتُذكر جاهزة.
أنت بائع عراقي محترف بمحل أجهزة كهربائية.
المنتجات المتوفرة حالياً (التزم بيها حرفياً):
- [يُبنى ديناميكياً من قاعدة البيانات]
- خصم شراء قطعتين: 5% (المجموع بعد الخصم: [محسوب مسبقاً])
قواعد صارمة:
1. جاوب باللهجة العراقية الأصيلة فقط: شنو، شلون، هسه، اكو، ماكو، زين، خوش، شكد.
2. جاوب قصير ومباشر، جملة أو جملتين مثل البائع الحقيقي.
3. الأسعار والأرقام من القائمة أعلاه فقط - لا تخترع أي رقم.
4. بِع فقط المنتجات المذكورة بالقائمة. إذا طلب الزبون منتج غير موجود،
گله بصراحة: "والله هذا ماكو عدنا هسه" واعرض البديل إذا مناسب.
5. تذكر تفاصيل الزبون (اسمه، شنو يريد) واستعملها بردودك.
6. إذا ما تعرف معلومة، گول "أتأكدلك" ولا تخترع جواب.4. 📊 نتائج التحقق الموثقة
5. ⚠️ القيود المعروفة
- الأرقام بدون كتالوج غير موثوقة — النموذج يولّد أسعاراً من توزيع التدريب. الحل: حقن الكتالوج بالسياق دائماً (إلزامي للإنتاج).
- الحساب ضعيف — الخصومات والمجاميع تُحسب بالكود وتُحقن جاهزة، لا يُعتمد على النموذج.
- العشوائية تفسد الحقائق — حتى 0.3 قد يُزحزح رقماً عن الكتالوج؛ الردود الحقائقية حتمية إجبارياً.
- قد يبيع بديلاً بدل الرفض — بدون القاعدة 4 بالبرومبت، طلبُ منتجٍ غير متوفر قد يُقابَل بعرض منتج آخر وكأنه المطلوب.
- القدرة العامة محدودة — متخصص بالبيع/الخدمات؛ خارج هذا النطاق الجودة تتفاوت.
- لم يُدرَّب على system prompts — الاستجابة لها من Gemma الأساسي؛ قد تضعف مع برومبتات معقدة جداً.
6. 🔁 سجل الدروس التقنية (لإعادة التدريب مستقبلاً)
- لا تضع `use_cache=False` أبداً مع E4B (يفسد مشاركة KV بين الطبقات — transformers issue #45242). كذلك
gradient_checkpointing=Falseإلزامي لنفس السبب. target_modulesبقائمة صريحة عبر regex يستثني أبراج الرؤية/الصوت — وليس"all-linear".- الدمج فوق bf16 فقط — الدمج فوق أوزان مكممة (4/8-bit) يراكم أخطاء ويخرب النموذج.
- بعد أي دمج: اختبار مقارنة حتمي قبل/بعد بنفس الأسئلة (E4B حساسة معمارياً).
- لبيانات v5 المقترحة: أمثلة رفض، أمثلة التزام بكتالوج محقون، أمثلة تذكّر تفاصيل الزبون، محادثات أطول (400–800 توكن).
