نموذجنا كان يتحدث بلهجة روبوتية: كيف أنقذنا ‘الضبط الدقيق’ (Fine-tuning) من جحيم الإجابات العامة؟

“شو هالحكي الفاضي؟”: قصة روبوت لا يفهمنا

قبل كم من شهر، كنا شغالين على مشروع طموح: بناء مساعد ذكي لشركة بتقدم خدمات استشارية للشركات الناشئة. الفكرة كانت عظيمة، والميزانية كانت “على قد الحال” زي ما بنحكي. قررنا نستخدم واحد من النماذج اللغوية الكبيرة (LLMs) المفتوحة المصدر، ووقتها كنا مبسوطين ومكيفين على حالنا إنه لقينا حل سريع ورخيص.

ربطنا النموذج بواجهة الدردشة، وبدأنا الاختبارات الأولية. سألته سؤال بسيط: “كيف ممكن أزيد مبيعات متجري الإلكتروني الصغير؟”.

الإجابة اللي رجعت كانت كالتالي: “لزيادة مبيعات متجرك الإلكتروني، يمكنك تحسين تجربة المستخدم، وتطبيق استراتيجيات التسويق الرقمي، وتحليل بيانات العملاء، وتقديم عروض ترويجية.”

قرأت الجواب مرة ومرتين… صحيح، الجواب مش غلط من الناحية الفنية، بس يا زلمة، شو هاد؟ حسيته زي نشرة أخبار أو روبوت من أفلام الخيال العلمي القديمة. كلام عام، بارد، خالي من أي روح أو لمسة شخصية. كأنه قرأ أول نتيجة بحث في جوجل ورماها بوجهي. وقتها واحد من الشباب بالفريق صرخ: “يا جماعة الخير، هاد بحكي زي موظف بنك بده يرفض طلب قرضك بلباقة!”.

هنا كانت الصدمة. نموذجنا الذكي كان غبي اجتماعياً. يقدم إجابات “صحيحة” لكنها “غير مفيدة” على أرض الواقع. كانت إجاباته تصلح لكل زمان ومكان، وبالتالي هي لا تصلح لزماننا ومكاننا المحدد. كنا في ورطة حقيقية، وبدأنا نشعر أن المشروع يتجه نحو “جحيم الإجابات العامة”. لكن، من رحم هذه المعاناة، وُلد الحل: الضبط الدقيق أو ما يُعرف بالـ Fine-tuning.

ما هي النماذج اللغوية الكبيرة (LLMs) ولماذا تتحدث كالإنسان الآلي أحياناً؟

قبل ما نغوص في الحل، خلينا نرجع خطوة للوراء. النماذج اللغوية الكبيرة، مثل GPT و Llama وغيرها، هي ببساطة برامج كمبيوتر عملاقة تم تدريبها على كميات هائلة من النصوص والبيانات من الإنترنت (موسوعة ويكيبيديا، كتب، مقالات، مواقع إلكترونية… كل شيء تقريباً). هذا التدريب الضخم، اللي بنسميه “Pre-training”، بيعطيها قدرة مذهلة على فهم اللغة وتوليد النصوص.

لكن هنا تكمن المشكلة: لأنها تدربت على كل شيء، فهي تحاول أن تكون “متوسط” كل شيء. هدفها الأساسي هو أن تكون مفيدة وآمنة لأكبر عدد ممكن من الناس. هذه الحيادية تجعلها تتجنب إعطاء آراء حادة، أو استخدام لهجة معينة، أو إظهار شخصية فريدة. النتيجة؟ لهجة روبوتية، رسمية، وعامة جداً. هي تعرف الكثير عن كل شيء، ولكنها لا تعرف أي شيء بعمق عن مجالك أنت.

البطل المنقذ: ما هو الضبط الدقيق (Fine-tuning)؟

تخيل معي أنك طباخ تعلم كل أساسيات الطهي في العالم (هذا هو النموذج المدرب مسبقاً). أنت تعرف تقنيات القلي، والسلق، والشوي، وتعرف مكونات آلاف الأطباق. لكن الآن، حصلت على وظيفة في مطعم فلسطيني أصيل متخصص بالمسخن والمنسف. هل معرفتك العامة كافية؟ بالطبع لا.

ستحتاج إلى فترة تدريب إضافية (وهذا هو الـ Fine-tuning) لتتعلم أسرار الوصفات الخاصة بهذا المطعم، “نَفَس” الطباخين فيه، وطريقة التقديم التي يحبها الزبائن. بعد هذا التدريب المتخصص، لن تعود مجرد طباخ عام، بل ستصبح خبيراً في المطبخ الفلسطيني.

هذا بالضبط ما يفعله الضبط الدقيق. نحن نأخذ النموذج اللغوي العام، ونقوم بإعادة تدريبه على مجموعة بيانات صغيرة ومركزة ومخصصة لمجالنا. هذه البيانات “تعلّم” النموذج:

  • المصطلحات الخاصة: لغة المجال الذي تعمل فيه (طب، قانون، برمجة، تسويق).
  • الشخصية واللهجة: كيف تريد أن يتحدث نموذجك؟ هل تريده أن يكون ودوداً؟ فكاهياً؟ رسمياً؟ هل تريده أن يستخدم لهجة محلية؟
  • السياق المحدد: الإجابة على الأسئلة بطريقة تعكس معرفة بمنتجاتك، خدماتك، أو جمهورك المستهدف.

دليل أبو عمر العملي: كيف طبقنا الضبط الدقيق خطوة بخطوة؟

الحكي سهل، بس الفعل هو اللي بيجيب نتيجة. خليني أحكيلكم بالضبط كيف حولنا “الروبوت” تبعنا لمساعد ذكي يفهم علينا.

الخطوة الأولى: تحضير “الخلطة السحرية” – مجموعة البيانات (Dataset)

هذه هي أهم خطوة على الإطلاق، وأنا أكرر: أهم خطوة. ينطبق هنا مبدأ “القمامة مدخلات، القمامة مخرجات” (Garbage in, garbage out). جودة بياناتك تحدد جودة نموذجك النهائي.

البيانات التي تحتاجها عادة ما تكون على شكل أزواج من “التعليمات” و”المخرجات” (Instruction/Output) أو “الأسئلة” و”الأجوبة” (Prompt/Completion). الهدف هو أن تُظهر للنموذج أمثلة على الطريقة التي تريد منه أن يجيب بها.

في مشروعنا، قمنا بجمع حوالي 300 مثال فقط في البداية. ركزنا على الجودة وليس الكمية. إليك مثال على الفرق بين مثال سيء ومثال جيد قمنا بصياغته:

مثال سيء (عام وروبوتي):

Prompt: “ما هي الكنافة؟”

Completion: “الكنافة هي حلوى شرق أوسطية تقليدية مصنوعة من العجين والجبن.”

مثال جيد (مخصص وله شخصية):

Prompt: “احكيلي عن الكنافة النابلسية عندكم وكيف بتعملوها.”

Completion: “يا سيدي، الكنافة النابلسية عنا قصة تانية! بنعملها عالأصول، بجبنة نابلسية بلدية بتذوب بالتم ذوبان، وبنحمّرها على نار هادية لتصير ذهبية بتقرش قرش. وبنسقيها بالقطر المعمول بماء الزهر… إشي فاخر من الآخر، لازم تجربها بنفسك!”

هل رأيت الفرق؟ المثال الثاني لا يعطي معلومة فقط، بل يعطي “إحساساً” وشخصية وهوية. هذا ما يصنع الفارق.

نصيحة من أبو عمر:

ابدأ بـ 100 إلى 200 مثال عالي الجودة جداً. يمكنك كتابتها بنفسك أو بالاستعانة بخبراء في المجال. هذه الأمثلة القليلة يمكن أن تحدث فرقاً أكبر من آلاف الأمثلة العامة والرديئة.

الخطوة الثانية: اختيار الأداة المناسبة

هناك العديد من الأدوات والمكتبات التي تسهل عملية الضبط الدقيق. أشهرها اليوم هي مكتبات من شركة Hugging Face، وتحديداً مكتبة transformers و trl (Transformer Reinforcement Learning). هي أدوات مفتوحة المصدر وقوية جداً.

يمكنك أيضاً استخدام منصات سحابية مثل Google Vertex AI, Azure ML, أو خدمات متخصصة مثل Replicate و Anyscale التي توفر واجهات سهلة للقيام بهذه العملية بدون الحاجة لإدارة الخوادم.

الخطوة الثالثة: عملية التدريب الفعلية (The Fine-tuning Job)

هنا يبدأ السحر الحقيقي. باستخدام مكتبات مثل trl، تصبح العملية سهلة برمجياً. الفكرة هي أنك تُمرر للبرنامج النموذج الذي اخترته، ومجموعة البيانات التي أعددتها، وبعض الإعدادات البسيطة.

إليك مثال مبسط جداً للكود باستخدام Python ومكتبات Hugging Face. لا تخف من الكود، سأشرحه ببساطة.


# مثال مبسط باستخدام مكتبات Hugging Face
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from trl import SFTTrainer
from datasets import load_dataset

# 1. تحميل النموذج الأساسي والـ Tokenizer الخاص به
# (Tokenizer هو المسؤول عن تحويل النص إلى أرقام يفهمها النموذج)
model_name = "mistralai/Mistral-7B-Instruct-v0.2" # مثال على نموذج قوي ومفتوح المصدر
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token # إعداد بسيط ومهم

# 2. تحميل مجموعة البيانات التي حضرناها
# نفترض أن بياناتنا في ملف اسمه 'my_dataset.jsonl'
dataset = load_dataset("json", data_files="my_dataset.jsonl", split="train")

# 3. إعداد عملية التدريب
# هنا نحدد بعض المتغيرات مثل عدد دورات التدريب، حجم الدفعة، إلخ.
training_args = TrainingArguments(
    output_dir="./fine_tuned_model",      # المجلد لحفظ النموذج الجديد
    per_device_train_batch_size=4,       # كم مثال يتم معالجته في كل مرة
    num_train_epochs=3,                  # كم مرة سيتم المرور على كامل البيانات
    learning_rate=2e-4,                  # سرعة تعلم النموذج (مهم جداً)
    logging_steps=10,                    # كل كم خطوة يتم طباعة تقرير عن التقدم
)

# 4. إنشاء الـ Trainer وبدء التدريب
trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=dataset,
    dataset_text_field="text",  # اسم الحقل الذي يحتوي على النص في ملف البيانات
    max_seq_length=1024,        # أقصى طول للنص
    args=training_args,
)

# أمر واحد لبدء عملية الضبط الدقيق
trainer.train()

# بعد الانتهاء، يمكنك حفظ النموذج الجديد
trainer.save_model("./fine_tuned_model_final")

نصيحة من أبو عمر:

لا تبالغ في التدريب! إذا قمت بتدريب النموذج أكثر من اللازم على بياناتك المخصصة، قد ينسى معلوماته العامة التي تعلمها في البداية. هذه الظاهرة تسمى “النسيان الكارثي” (Catastrophic Forgetting). راقب مقاييس الأداء أثناء التدريب، وقم باختبار النموذج بشكل مستمر للتأكد من أنه يتحسن في مجالك دون أن يفقد قدراته العامة.

ما بعد الضبط الدقيق: تقنيات أخرى في جعبتنا

الضبط الدقيق ليس الحل الوحيد دائماً. من المهم أن تعرف الأدوات الأخرى المتاحة لك:

  • هندسة الأوامر (Prompt Engineering): فن صياغة السؤال أو الأمر الصحيح للنموذج للحصول على الإجابة المطلوبة دون تعديل النموذج نفسه. هذا هو خط الدفاع الأول، وهو الأسرع والأرخص.
  • التوليد المعزز بالاسترجاع (RAG – Retrieval-Augmented Generation): هذه تقنية رائعة تتيح للنموذج الوصول إلى قاعدة بيانات خارجية (مثل مستندات شركتك، أو مقالات حديثة) “للبحث” عن المعلومة قبل الإجابة. تخيل أنك تعطي النموذج كتاباً مفتوحاً ليقرأ منه قبل أن يتكلم. هذا ممتاز للمعلومات التي تتغير باستمرار أو التي تتطلب دقة واقعية عالية.

متى تستخدم كل تقنية؟ القاعدة بسيطة: ابدأ بهندسة الأوامر. إذا لم تكن كافية، انظر إلى طبيعة مشكلتك: هل تحتاج إلى “شخصية” و”أسلوب”؟ استخدم الضبط الدقيق (Fine-tuning). هل تحتاج إلى “معرفة” دقيقة وحديثة من مصادر خارجية؟ استخدم RAG.

الخلاصة: من روبوت بارد إلى مساعد ودود 🚀

النماذج اللغوية الكبيرة المدربة مسبقاً هي نقطة انطلاق جبارة، لكنها ليست خط النهاية. هي مثل قطعة من الطين الخام، جميلة وقوية، لكنها تحتاج إلى لمستك لتشكيلها وتحويلها إلى تحفة فنية تخدم غرضك المحدد.

تجربتنا في تحويل نموذجنا “الروبوتي” إلى مساعد ذكي يفهم لهجتنا وسياق عملنا كانت من أكثر التجارب إثراءً في مسيرتي المهنية. لقد علمتنا أن القوة الحقيقية للذكاء الاصطناعي لا تكمن في قدرته على معرفة كل شيء، بل في قدرتنا على تخصيصه ليفهم عالمنا الصغير بشكل عميق.

نصيحة أخيرة من أخوكم أبو عمر:

لا تخف من التجربة. ابدأ صغيراً، ببيانات قليلة وعالية الجودة. رحلة الضبط الدقيق قد تبدو معقدة في البداية، لكنها مجزية بشكل لا يصدق. إنها الجسر الذي يعبر بك من عالم الإجابات العامة إلى عالم الحلول الذكية والمخصصة حقاً. يلا، شدوا حيلكم!

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

أتمتة العمليات

خوادمنا كانت نسخًا مشوهة: كيف أنقذتنا ‘البنية التحتية كشيفرة’ (IaC) من جحيم الانحراف التكويني؟

أشارككم قصة حقيقية من قلب المعركة التقنية، عندما كانت خوادمنا تتغير من تلقاء نفسها مسببة كوارث في الإنتاج. اكتشفوا معنا كيف كانت "البنية التحتية كشيفرة"...

8 أبريل، 2026 قراءة المزيد
نصائح برمجية

بياناتي كانت تتغير من حيث لا أدري: كيف أنقذتني ‘اللامتغيرية’ (Immutability) من جحيم الآثار الجانبية الخفية؟

في هذه المقالة، أشارككم قصة حقيقية من تجربتي كمبرمج عن معاناتي مع بيانات تتغير بشكل غامض، وكيف كان مفهوم "اللامتغيرية" (Immutability) هو طوق النجاة الذي...

8 أبريل، 2026 قراءة المزيد
خوارزميات

البحث في قوائمي المرتبة كان يزحف: كيف أنقذني ‘البحث الثنائي’ من جحيم البطء الخطي؟

أشارككم قصة حقيقية من مسيرتي كمبرمج، عندما كاد تطبيق بطيء أن يكلفني مشروعاً كاملاً. اكتشفوا معي كيف أنقذتني خوارزمية "البحث الثنائي" البسيطة، وحولت تطبيقاً يزحف...

8 أبريل، 2026 قراءة المزيد
تسويق رقمي

ميزانيتنا كانت تحترق: كيف أنقذتنا ‘نماذج الإحالة’ (Attribution Models) من جحيم تخمين القنوات الرابحة؟

أتذكر جيداً كيف كنا نضخ الأموال في قنوات التسويق المختلفة ونحن نرى الميزانية تحترق أمام أعيننا بلا عائد واضح. في هذه المقالة، سأشارككم يا جماعة...

8 أبريل، 2026 قراءة المزيد
تجربة المستخدم والابداع البصري

من فوضى المكونات إلى نظام التصميم المتكامل: قصتنا لإنقاذ واجهات المستخدم من جحيم التضارب

أشارككم تجربتي كـ "أبو عمر" في الانتقال من واجهات فوضوية ومكررة إلى بيئة عمل منظمة بفضل "نظام التصميم". سنغوص في رحلتنا لبناء هذا النظام من...

8 أبريل، 2026 قراءة المزيد
البودكاست