1. مقدمة حول تعديل الدقة
1.1. التعريف والمزايا من تعديل النموذج
تعديل الدقة هو مفهوم في التعلم العميق يشير إلى عملية مواصلة التدريب بناءً على نموذج تم تدريبه مسبقًا للتكيف مع مهام أو مجموعات بيانات محددة. تم تدريب النماذج المسبقة على كميات هائلة من البيانات وقد تعلمت تمثيلات ميزات غنية. من خلال التعديل، يمكن تحسين أداء النموذج للمهام المحددة بناءً على هذا الأساس.
تشمل مزايا التعديل مقارنة بتدريب النماذج من البداية على الأغلب:
- توفير الوقت والموارد: النماذج المدربة مسبقًا تقلل من الوقت والموارد الحاسوبية اللازمة لتدريب النماذج من البداية، وهو أمر مهم بشكل خاص للنماذج الكبيرة والمهام المعقدة.
- كفاءة البيانات: التعديل يتطلب عادة كميات أقل نسبياً من البيانات المحددة لتحقيق نتائج جيدة، وخاصة في المجالات ذات البيانات القليلة.
- نقل المعرفة: النماذج المدرَّة مسبقًا تتعلم من مجموعات بيانات متنوعة، ويمكن للتعديل نقل هذه المعرفة إلى المهام المحددة مما يحسن القدرة العامة للنموذج.
- تحسين الأداء: يسمح التعديل للنموذج بالتكيف بشكل أفضل مع متطلبات المهمة المحددة، مما يساعد في تحسين جودة النموذج وتقليل معدلات الأخطاء.
على سبيل المثال، يمكن للمستخدمين، باستخدام واجهة برمجة تطبيقات OpenAI، تخصيص نموذج GPT من خلال التعديل للحصول على نتائج عالية الجودة بتوفير التكاليف المرتبطة بالمدخلات الطويلة وتقليل التأخير.
1.2. حالات التطبيق العملية
لقد ثبت أن التعديل تكون فعالة للغاية في مختلف السيناريوهات العملية. على سبيل المثال:
- تحديد الأساليب والأصوات: من خلال التعديل، يمكن تعديل استجابات الروبوتات الدردشة لأساليب أو أصوات محددة، مثل الشكلي، أو الفكاهة، أو يمكن أن تكون متوافقة مع لغة صناعة معينة.
- تعزيز الموثوقية: في التطبيقات الحساسة مثل استشارات الطبية أو النصح القانوني، يمكن أن يقلل التعديل من السوء فهم أو الاستجابات غير الدقيقة، مما يحسن بشكل عام الموثوقية.
- معالجة المدخلات المعقدة: تتطلب بعض المهام معالجة مداخل المستخدم المعقدة، ويمكن للتعديل مساعدة النموذج في فهم هذه السيناريوهات المعقدة وتوفير استجابات دقيقة.
- تحسين الأداء للمهام المحددة: بالنسبة للمهام التي يصعب وصفها من خلال مدخل واحد، مثل نقل الأنماط في إنتاج النص أو إنشاء نصوص حول موضوعات محددة، يمكن للتعديل تحسين أداء النموذج بشكل كبير.
من خلال هذه الحالات، يمكننا أن نرى أن التعديل يتيح للنماذج التكيف بشكل أفضل مع السيناريوهات التطبيقية المحددة، مما يوفر خدمات دقيقة وشخصية أكثر.
2. متى يجب استخدام التعديل
2.1. تحليل متطلبات المهمة
التعديل هو استراتيجية يتم اللجوء إليها عندما يتم تحديد أن النماذج العامة الحالية لا تستطيع تلبية المتطلبات المحددة. قد يكون التعديل ضروريًا عندما تظهر المهمة السمات التالية:
- متطلبات خاصة فيما يتعلق بالأسلوب، أو الصوت، أو التنسيق، أو جوانب أخرى نوعية
- الحاجة إلى تحسين الموثوقية في إخراج النتائج المرغوبة
- التقارب ضروري عند التعامل مع العديد من الحالات التفصيلية
- المهارات أو المهام التي يصعب تحديدها بوضوح في المداخل
تشمل الخطوات لتحديد الحاجة إلى التعديل عمومًا:
- محاولة "هندسة المدخل"، وضبط طريقة تقديم المداخل لتحسين النتائج.
- تحليل فعالية النماذج الحالية لتحديد ضرورة التعديل.
- إذا تم اتخاذ قرار التعديل، فإعداد مجموعات البيانات ذات الصلة للتدريب المستمر.
2.2. المقارنة بين التعديل وهندسة المدخل
التعديل وهندسة المدخل هما استراتيجيتان مختلفتان لتحسين أداء النموذج. تشير هندسة المدخل إلى توجيه النموذج لتوليد الاستجابة المتوقعة بمداخل مصممة بعناية، دون تعديل النموذج نفسه. وغالباً ما تكون هندسة المدخل الخطوة الأولى في السعي إلى تحسين الأداء، حيث لديها دورة ردود سريعة ولا تتطلب بيانات تدريب.
ومع ذلك، في بعض الحالات، حتى مع مداخل مصممة بعناية، قد يصعب على النموذج تحقيق النتائج المتوقعة. في مثل هذه السيناريوهات، يصبح التعديل الخيار الضروري لتحسين أداء النموذج. من خلال توفير عدد كبير من الأمثلة للنموذج ليتعلم منها، يمكن للتعديل تحقيق نتائج أفضل في المهام المختلفة بالمقارنة مع هندسة المدخل وحدها.
3. النماذج التي تدعم عملية الضبط الدقيق
توفر OpenAI مجموعة من النماذج التي تدعم عملية الضبط الدقيق، بما في ذلك gpt-3.5-turbo-1106
(الموصى به)، gpt-3.5-turbo-0613
، babbage-002
، davinci-002
، وكذلك النموذج الذي يمكن الوصول إليه تجريبيًا وهو gpt-4-0613
. يمكن تدريب هذه النماذج بشكل أعمق من خلال عملية الضبط الدقيق لتكييفها مع متطلبات المستخدم المحددة.
يمكن تطبيق عملية الضبط الدقيق ليس فقط على مجموعات بيانات جديدة، ولكن يمكن للمستخدمين أيضًا مواصلة عملية الضبط الدقيق على النماذج التي تم ضبطها مسبقًا. وهذا مفيد بشكل خاص عند الحصول على المزيد من البيانات والحاجة إلى تحسين النموذج بشكل أعمق دون تكرار خطوات التدريب السابقة.
بالنسبة لمعظم المستخدمين، يُعتبر gpt-3.5-turbo
الخيار المفضل نظرًا لنتائجه المرضية وسهولة الاستخدام. ونظرًا للتحسينات المستمرة واحتياجات المستخدمين المحددة، قد تواصل OpenAI تحديث وتوسيع مجموعة النماذج التي تدعم عملية الضبط الدقيق.
4. تحضير بيانات التدريب
4.1. تنسيق مجموعة البيانات
لإجراء عملية الضبط الدقيق، تحتاج إلى تحضير مجموعة بيانات تفي بمتطلبات التنسيق المحددة. عادةً، تحتوي هذه المجموعة على مجموعة من المدخلات ومخرجاتها المتوقعة المقابلة. تدعم واجهة برمجة التطبيقات لعملية الضبط الدقيق من OpenAI صيغتي بيانات رئيسيتين: نموذج الحوار وأزواج الأسئلة والأجوبة البسيطة.
تُستخدم صيغة مجموعة بيانات نموذج الحوار بشكل شائع لنموذج gpt-3.5-turbo
. يتم تنظيم كل مثال في شكل حوار، حيث تحتوي كل رسالة على دور، محتوى واسم اختياري. تبدو هيكلة البيانات المثالية كالتالي:
{
"messages": [
{"role": "system", "content": "أنت مساعد مفيد."},
{"role": "user", "content": "كيف الطقس اليوم؟"},
{"role": "assistant", "content": "الطقس اليوم صافٍ ومناسب للخروج."}
]
}
يجب أن يكون كل حالة مهيأة كملف بتنسيق سطور JSON (.jsonl)، حيث تمثل كل سطر عينة تدريبية، على سبيل المثال:
{"messages": [{"role": "system", "content": "مارف هو شاتبوت واقعي يظهر التهكم."}, {"role": "user", "content": "ما هي عاصمة فرنسا؟"}, {"role": "assistant", "content": "باريس، كما لو أن الجميع لا يعرفون ذلك بالفعل."}]}
{"messages": [{"role": "system", "content": "مارف هو شاتبوت واقعي يظهر التهكم."}, {"role": "user", "content": "من كتب 'روميو وجولييت'؟"}, {"role": "assistant", "content": "أوه، ببساطة أحد الرجال يُدعى ويليام شكسبير. هل سمعت عنه من قبل؟"}]}
{"messages": [{"role": "system", "content": "مارف هو شاتبوت واقعي يظهر التهكم."}, {"role": "user", "content": "كم يبعد القمر عن الأرض؟"}, {"role": "assistant", "content": "حوالي 384,400 كيلومتر. مع بعض التقريب، كما لو كان ذلك يهم."}]}
تنسيق مجموعة بيانات أزواج الأسئلة والأجوبة البسيطة مناسب للنماذج مثل babbage-002
و davinci-002
. الصيغة أبسط، حيث تتكون من زوج من prompt
و completion
. وهنا مثال:
{
"prompt": "كيف الطقس اليوم؟",
"completion": "الطقس اليوم صافٍ ومناسب للخروج."
}
بالمثل، تشغل كل عينة تدريبية سطرًا واحدًا، على سبيل المثال:
{"prompt": "<نص المحفز>", "completion": "<نص مقترح مثالي>"}
{"prompt": "<نص المحفز>", "completion": "<نص مقترح مثالي>"}
{"prompt": "<نص المحفز>", "completion": "<نص مقترح مثالي>"}
أثناء إنشاء بيانات الضبط الدقيق، يجب مراعاة كل تعليمة أو محفز بدقة لضمان التوافق بين أمثلة التدريب وتغطية جميع سيناريوهات الاستخدام المتوقعة قدر الإمكان.
4.2. تقسيم بيانات التدريب والاختبار
بعد إنشاء مجموعة بيانات الضبط الدقيق، من الأهمية بمكان تقسيم المجموعة إلى مجموعة تدريب واختبار بشكل صحيح. عادةً، يتم تقسيم المجموعة إلى جزئين، حيث يتم استخدام الجزء الأكبر لتدريب النموذج (عادةً ما يكون 70% إلى 90%) ويُستخدم الجزء المتبقي للاختبار (10% إلى 30%). يُساعد هذا التقسيم في التحقق من أداء النموذج على البيانات غير المرئية وتقييم أدائه بشكل دقيق.
يمكن تقسيم مجموعة البيانات يدويًا أو بكتابة كود للتقسيم، وسيتم شرح ذلك في الأقسام التالية حول كيفية تقييم أداء النموذج باستخدام بيانات الاختبار.
5. إنشاء نموذج ضبط دقيق
5.1. اختيار النموذج المُعدّ مُسبقًا المناسب
قبل بدء عملية ضبط النموذج، يعد اختيار النموذج المُعدّ مُسبقًا المناسب أمرًا حاسمًا لضمان نجاح المهمة. فيما يلي بعض الاقتراحات لاختيار النموذج المُعدّ مُسبقًا المناسب:
-
نوع المهمة: بناءً على طبيعة المهمة الخاصة بك، مثل فهم اللغة، وإنتاج المحتوى، أو الإجابة على الأسئلة الخاصة بمجال معين، اختر النموذج الذي يناسب هذه المهام على أفضل وجه. على سبيل المثال، يُعتبر نموذج
gpt-3.5-turbo
مناسبًا لمعظم السيناريوهات نظرًا لتوازنه بين الأداء وسهولة الاستخدام. -
حجم البيانات: إذا كان لديك كمية أقل نسبيًا من بيانات التدريب، قد تفضل اختيار نموذج أصغر مثل
babbage-002
، حيث يتطلب كمية أقل من البيانات لضبط المعلمات. -
متطلبات الأداء: بالنسبة للسيناريوهات التي تتطلب معالجة مهام أكثر تعقيدًا وتفاصيل دقيقة، فكر في اختيار النموذج الأكثر قوة مثل
davinci-002
. -
اعتبارات التكلفة: النماذج المختلفة تتطلب متطلبات حسابية وتخزينية مختلفة. عمومًا، النماذج الأكبر تترتب عليها تكاليف أعلى. قم بالتوازن وفقًا للميزانية ومتطلبات الأداء.
-
ميزات التجربة: يُعد نموذج
gpt-4-0613
حاليًا في مرحلة التجربة. إذا كنت ترغب في تجربة التكنولوجيا الأحدث ولديك تحمل للواجهات التجريبية، فكر في طلب الوصول.
5.2. عملية ضبط النموذج المُعدّ مُسبقًا
عملية ضبط النموذج المُعدّ مُسبقًا تغطي خطوات متعددة مثل تحضير البيانات، رفع الملفات، إنشاء مهام التدريب، ومراقبة التقدم. فيما يلي تفصيل مفصل لهذه الخطوات:
5.2.1. تحضير البيانات
قم بتجهيز كمية كافية من بيانات التدريب والاختبار وفقًا للمهمة المستهدفة وتأكد من أن تنسيق البيانات يلبي المتطلبات، مثل تنسيق JSON Lines (.jsonl). يُرجى الرجوع إلى الفصول السابقة لمزيد من التفاصيل حول المحتوى.
5.2.2. رفع البيانات
قم برفع ملفات بيانات التدريب الخاصة بك من خلال واجهة برمجة التطبيقات لملفات OpenAI، محددًا الغرض من الملف كـ ضبط-دقيق
, كما هو موضح أدناه:
curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="fine-tune" \
-F file="@mydata.jsonl"
عند نجاح عملية الرفع، ستتلقى معرّف ملف لاستخدامه في مهام تدريب النموذج التالية.
5.2.3. إنشاء مهام التدريب
قم ببدء مهام ضبط الدقة باستخدام أدوات OpenAI SDK أو CLI، محددًا المعلمات المطلوبة والنموذج. على سبيل المثال:
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.create(
training_file="file-abc123",
model="gpt-3.5-turbo"
)
معلمة training_file
تحدد معرّف ملف بيانات التدريب، ومعلمة model
تحدد النموذج الذي سيتم استخدامه في التدريب.
5.2.4. مراقبة مهام التدريب
فيما يلي مثال على كيفية الاستعلام عن نتائج التدريب باستخدام البايثون:
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.list(limit=10)
client.fine_tuning.jobs.retrieve("ftjob-abc123")
client.fine_tuning.jobs.cancel("ftjob-abc123")
client.fine_tuning.jobs.list_events(fine_tuning_job_id="ftjob-abc123", limit=10)
client.models.delete("ft:gpt-3.5-turbo:acemeco:suffix:abc123")
6. تعديل المعلمات أثناء عمليات ضبط الدقة
6.1 فهم وضبط الهايبرباراميترز
الهايبرباراميترز هي معلمات يتم تعيينها قبل تدريب النموذج، وعادةً لا يمكن تعلمها من البيانات. فيما يلي بعض الهايبرباراميترز المهمة:
-
عدد الحقب (n_epochs): يحدد كم مرة سيكرر نموذجك مجموعة البيانات بأكملها. قد يؤدي الكثير من الحقب إلى الفرط في التكيف، بينما قد يؤدي القليل جدًا إلى عدم تعلم النموذج بشكل كافٍ.
-
معدل التعلم (learning_rate_multiplier): يحدد مدى تحديث الوزن في كل تكرار. معدل تعلم عالٍ جدًا قد يسبب عدم استقرار في عملية التعلم، بينما قد يبطئ معدل تعلم منخفض جدًا عملية التعلم.
-
حجم الدُفعة (batch_size): يحدد عدد حالات التدريب المُدرَجة في كل تحديث للنموذج. يساعد حجم الدُفعة الكبير في تثبيت التدريب ولكن قد يزيد من ضغط الذاكرة.
ضبط الهايبرباراميترز عادة ما يتطلب تجربة متكررة للعثور على تركيبة المعلمات الأمثل.
مثال على بدء مهمة ضبط الخامات بالهايبرباراميترز:
from openai import OpenAI
client = OpenAI()
client.fine_tuning.jobs.create(
training_file="file-abc123",
model="gpt-3.5-turbo",
hyperparameters={
"n_epochs":2
}
)
يُستخدم معلمة الهايبرباراميترز لتعيين الهايبرباراميترز.
6.2 استراتيجيات التكرار وتحسين النموذج
بعد الضبط الأولي، قد تكون التكرارات ضرورية لتحسين أداء النموذج. فيما يلي بعض استراتيجيات التكرار:
-
زيادة البيانات: إذا كان النموذج يُظهر أداءً ضعيفًا على أنواع معينة من الإدخالات، جرب إضافة أمثلة أكثر لتلك الإدخالات.
-
التأمل في جودة البيانات: تحقق مما إذا كانت بيانات التدريب تحتوي على معلومات غير صحيحة أو غامضة. هذه المشاكل في الجودة قد تؤدي إلى أداء نموذج ضعيف.
-
توازن البيانات: تأكد من أن بيانات التدريب لديها تنوع وتوازن في الفئات والأنماط.
-
ضبط الهايبرباراميترز: كما ذُكر مسبقًا، فإن ضبط عدد الحقب ومعدل التعلم وحجم الدُفعة قد يؤثر بشكل كبير على أداء النموذج.
من خلال هذه الطرق، يمكنك تحسين نموذجك المضبوط تدريجيًا لتحقيق أفضل أداء.
7. تقييم واستخدام النماذج المضبوطة
7.1 تقييم النماذج المضبطة
عندما نكتمل من ضبط النموذج، فإن تقييم أداء النموذج المضبط يكون أمرًا حاسمًا. فيما يلي بعض الطرق القياسية للتقييم:
-
مقارنة العينات: استخدام العينات الاختبارية المحضرة لاستدعاء النموذج الأساسي والنموذج المضبط منفصلين، ثم مقارنة نتائج الإخراج لتقييم فعالية النموذج المضبط.
-
المقاييس الإحصائية: تتبع المقاييس مثل الخسارة والدقة أثناء عملية الضبط النهائية. يجب أن تنخفض الخسارة خلال التدريب، بينما يجب أن تزداد الدقة.
-
اختبار A/B: تصميم تجارب، تقسيم المرور، وتشغيل النموذج الأساسي والنموذج المضبط بشكل متزامن لمراقبة الفروق في الأداء في بيئة حقيقية.
-
تغذية ردود المستخدمين: جمع ردود المستخدمين على استخدام النموذج، خاصة في مهام معالجة اللغة الطبيعية، حيث رضا المستخدم هو مقياس حرج لأداء النموذج.
7.2 كيفية استخدام النماذج المضبطة
استخدام النموذج المضبط يكون بسيطًا للغاية. ما عليك سوى تمرير اسم النموذج المضبط الخاص بك كمعلمة في استدعاء واجه برمجة التطبيقات (API). فيما يلي مثال لكود عن استخدام نموذج مُضبط:
مثال بلغة Python
from openai import OpenAI
client = OpenAI(api_key='Your API Key')
response = client.chat.completions.create(
model="اسم النموذج",
messages=[
{"role": "system", "content": "أنت مساعد مفيد."},
{"role": "user", "content": "مرحبًا!"}
]
)
print(response.choices[0].message)
هُنا، قم بتبديل "اسم النموذج" بالاسم المحدد لنموذجك المضبط، على سبيل المثال، "ft:اسم النموذج:منظمتك:اسم الضبط:المعرّف".
الفصل 7: أفضل الممارسات لضبط الدقة
أثناء عملية ضبط الدقة، يمكننا اتباع بعض أفضل الممارسات لتحسين أداء النموذج بشكل أفضل:
-
جودة البيانات: ضمان جودة عالية وتنوع في بيانات التدريب لتجنب سوء أداء النموذج الناتج عن بيانات غير دقيقة أو من نمط واحد.
-
توزيع البيانات: يجب أن تشمل بيانات التدريب جميع السيناريوهات الممكنة لضمان أداء النموذج في الحالات الواقعية.
-
التدريجي الاتساق: زيادة تدريجية في بيانات التدريب ومراقبة التغيرات في أداء النموذج، بدلاً من إضافة كميات كبيرة من البيانات دفعة واحدة.
-
ضبط الهايبرباراميترات: ضبط الهايبرباراميترات مثل سرعة التعلم، حجم الدفعة، وعدد التكرارات بناءً على أداء النموذج.
-
التحسين المستمر: ضبط النموذج ليس عملية مرة واحدة. التحسين المستمر لتحديث البيانات والنموذج يمكن أن يحسن باستمرار فعالية النموذج.
المشكلات الشائعة والحلول:
-
س: ماذا أفعل إذا لم يحقق النموذج المضبوط إلى النتائج المتوقعة؟
- ج: قم بفحص وتحسين جودة وتنوع بيانات التدريب بعناية، وضبط استراتيجية التدريب بناءً على نتائج التقييم.
-
س: كيفية التعامل مع سوء أداء النموذج في سيناريوهات محددة؟
- ج: زيادة عينات التدريب لتلك السيناريو لتعزيز قدرة النموذج على المعالجة في تلك الحالة الخاصة.
-
س: كيفية التحكم في التكلفة أثناء عملية ضبط الدقة؟
- ج: قم بتقدير عدد الرموز المسبقة وتقييم تكاليف النماذج المختلفة.
من خلال دمج هذه الاقتراحات والأدوات، ستتمكن من تحقيق أقصى كفاءة في ضبط النموذج وضمان أن عملية ضبط الدقة تتماشى مع توقعاتك واحتياجاتك.