في هذا البرنامج التعليمي، سنضبط المطالبة لنموذج IBM Granite باستخدام مجموعة بيانات اصطناعية تحتوي على تقييمات العملاء لأعمال العناية بالكلاب.
يُعَد ضبط المطالبات طريقة فعَّالة ومنخفضة التكلفة لتكييف نموذج أساس الذكاء الاصطناعي (AI) مع مهام جديدة دون الحاجة إلى إعادة تدريب النموذج بالكامل أو تحديث أوزانه.
تعتمد نماذج الأساس على النماذج اللغوية الكبيرة (LLMs) وتحصل على كميات هائلة من بيانات التدريب. من الاستخدامات الشائعة لنماذج الأساس: روبوتات المحادثة والمساعدون الافتراضيون.
هناك عدة طرق لتحسين تفسير نموذج الأساس للإدخال وجودة استجاباته. لفهم هذه الفروق الدقيقة بشكل أفضل، دعنا نقارن بعض الطرق.
المطالبات الثابتة موجَّهة للمستخدم وتتطلب تفاعلًا منه. يمكن اعتبار المطالبة الثابتة كقالب أو تعليمات للنموذج اللغوي الكبير لإنشاء استجابات. سيتم تقديم مثال على المطالبة الثابتة في ما يلي. ننصحك بزيارة صفحة وثائق IBM للمزيد من المعلومات حول هذا النوع من المطالب وأنواع أخرى متعددة.
باستخدام قالب المطالبة الثابت هذا، يمكن تزويد النموذج اللغوي الكبير بإرشادات محددة حول الهيكل والنمط المضلين للمخرجات. ومن خلال هذه المطالبة الصريحة، سيكون من المرجح أن ينتج النموذج اللغوي الكبير استجابات مرغوبًا فيها ذات جودة أعلى.
على عكس المطالبات الثابتة، لا تتم كتابة المطالبات المرنة بلغة طبيعية. بدلًا من ذلك، تتم تهيئة المطالبة كمتجهات رقمية يولدها الذكاء الاصطناعي وتُضاف في بداية كل تضمين للإدخال، بحيث يتم تلخيص المعرفة المستمدة من النموذج الأكبر. يمتد هذا النقص في قابلية التفسير إلى الذكاء الاصطناعي الذي يختار المطالبات المحسَّنة لمهمة معينة. في كثير من الأحيان، لا يتمكن الذكاء الاصطناعي من تفسير سبب اختياره لهذه التضمينات. بالمقارنة مع طرق المطالبة الأخرى، فإن هذه الرموز المميزة الافتراضية أقل تكلفة من الناحية الحسابية مقارنةً بالضبط الدقيق؛ لأن النموذج نفسه يظل مجمدًا بأوزان ثابتة. تميل المطالبات المرنة أيضًا إلى التفوق على المطالبات الثابتة التي تم تصميمها بواسطة البشر.
سنتعامل في هذا البرنامج التعليمي مع المطالبات المرنة لضبط المطالبات.
تحتاج إلى حساب IBM Cloud لإنشاء مشروع watsonx.ai .
رغم توفُّر عدة أدوات للاختيار منها، يُرشدك هذا الدليل خلال خطوات إعداد حساب IBM لاستخدام Jupyter Notebook.
سجِّل الدخول إلى watsonx.ai باستخدام حساب IBM Cloud الخاص بك.
أنشئ مشروع watsonx.ai.
يمكنك الحصول على معرِّف المشروع من داخل مشروعك. انقر على علامة التبويب الإدارة (Manage)، ثم انسخ معرِّف المشروع من قسم التفاصيل (Details) في صفحة عام (General). ستحتاج إلى هذا المعرِّف في هذا البرنامج التعليمي.
أنشئ Jupyter Notebook.
ستفتح هذه الخطوة بيئة Notebook حيث يمكنك نسخ الكود من هذا البرنامج التعليمي لتنفيذ ضبط المطالبات بنفسك. أو يمكنك تنزيل هذا الدفتر إلى نظامك المحلي وتحميله إلى مشروع watsonx.ai كأصل. يمكن العثور على Jupyter Notebook هذا مع مجموعات البيانات المستخدمة على GitHub.
أنشئ مثيل خدمة watsonx.ai Runtime (اختَر المنطقة المناسبة لك، واختَر خطة Lite، وهي مثيل مجاني).
اربط مثيل خدمة watsonx.ai Runtime بالمشروع الذي أنشأته في watsonx.ai.
سنحتاج إلى عدد قليل من المكتبات والوحدات لهذا البرنامج التعليمي. تأكَّد من استيراد الحزم التالية؛ وإذا لم تكن مثبَّتة، يمكنك تثبيتها بسرعة باستخدام أمر pip.
إعداد بيانات الاعتماد الخاصة بك. أدخِل مفتاح واجهة برمجة التطبيقات ومعرِّف المشروع.
كخطوة أولى لإعداد البيئة، أنشئ مثيلًا من APIClient باستخدام بيانات المصادقة الخاصة بك وعيِّن project_id.
المخرجات:
'SUCCESS'
في هذا البرنامج التعليمي، سنستخدم مجموعة بيانات اصطناعية تتكون من تقييمات لأعمال العناية بالكلاب. باستخدام عنوان URL المناسب، يمكننا توصيل مجموعة البيانات بعميل واجهة برمجة التطبيقات.
لك الحرية في استخدام أي مجموعة بيانات من اختيارك. تتوفر العديد من مجموعات البيانات مفتوحة المصدر على منصات مثل HuggingFace.
المخرجات:
جارٍ إنشاء أصول البيانات...
تم بنجاح
المخرجات:
3b1db894-8d9e-428d-8fee-d96f328c7726
للحصول على بعض الرؤى عن تنسيق تقييمات العملاء هذه، دعونا نحمِّل البيانات في إطار بيانات Pandas وعرض بعض الصفوف التي تُظهر كلًا من التقييمات الإيجابية والسلبية. يُشير المُخرج "1" إلى التقييمات الإيجابية ويستخدم "0" للتقييمات السلبية.
المخرجات:
يتم استخدام فئة TuneExperiment لإنشاء التجارب وجدولة عمليات الضبط. دعونا نستخدمها لتهيئة تجربتنا وتحديد نموذج الأساس وبيانات التدريب والمَعلمات الخاصة بنا. الهدف من تمرين ضبط المطالبات هذا هو تمكين النموذج اللغوي الكبير (LLM) من تخصيص ردوده بما يتوافق مع تقييمات رضا العملاء المستخرجة من مجموعة البيانات الخاصة بنا. هذه مهمة تصنيف، حيث يمكن تصنيف التقييمات على أنها إما إيجابية ("1") أو سلبية ("0").
في هذا البرنامج التعليمي، نقترح استخدام نموذج IBM Granite كنموذج لغوي كبير للحصول على نتائج مشابهة.
الآن بعد أن أعددنا تجربة الضبط، علينا ربطها بمجموعة البيانات الخاصة بنا. لهذا، دعونا نستخدم فئة DataConnection. يتطلب هذا الأمر asset_id الذي أنشأناه سابقًا عند تهيئة أصل البيانات باستخدام عميل واجهة برمجة التطبيقات الخاص بنا.
لك الحرية في استخدام أي نموذج ذكاء اصطناعي من اختيارك. يمكن العثور على نماذج الأساس المتاحة للضبط من خلال watsonx هنا أو عن طريق تشغيل الأمر التالي.
المخرجات:
{'FLAN_T5_XL': 'google/flan-t5-xl', 'GRANITE_13B_INSTRUCT_V2': 'ibm/granite-13b-instruct-v2', 'LLAMA_2_13B_CHAT': 'meta-llama/llama-2-13b-chat'}
المخرجات:
##############################################
Running '20671f17-ff53-470b-9bfe-04318ecb91d9'
##############################################
pending......
running....................................................................................................................................
completed
Training of '20671f17-ff53-470b-9bfe-04318ecb91d9' finished successfully.
للتأكد من اكتمال ضبط المطالبات، يمكننا التحقق من الحالة. إذا كانت الحالة التي تظهر أي شيء غير "completed"، يُرجى الانتظار حتى انتهاء عملية الضبط قبل المتابعة.
المخرجات:
completed
يمكننا الآن استرجاع ملخص ضبط المطالبة. في هذا الملخص، سترى قيمة خسارة. لكل جولة تدريبية، تقيس دالة الخسارة الفرق بين النتائج المتوقعة والفعلية. وبالتالي، تُعَد القيم الأقل للخسارة أفضل.
يمكننا أيضًا رسم منحنى التعلم لتجربة ضبط النموذج باستخدام الدالة plot_learning_curve(). يشير المنحنى المتناقص الذي يستقر بالقرب من الصفر إلى أن النموذج يحسِّن من توليد مخرجاته المتوقعة. لمعرفة المزيد حول تفسير الرسوم البيانية لدالة الخسارة، راجِع وثائق IBM watsonx ذات الصلة.
المخرجات:
هذه الخطوة الخاصة بنشر النموذج المضبوط حاسمة لإتمام المرحلة التالية المتمثلة في مقارنة أداء النموذج المضبوط بالنموذج قبل الضبط.
ملاحظة: يتم تعيين SERVING_NAME على التاريخ والوقت الحاليين حيث يجب أن تكون قيمة فريدة.
المخرجات:
######################################################################################
Synchronous deployment creation for id: '6aa5dd5c-0cc4-44e0-9730-18303e88e14a' started
######################################################################################
initializing.......................
ready
-----------------------------------------------------------------------------------------------
Successfully finished deployment creation, deployment_id='24a97b84-47d0-4490-9f5f-21ed2376fdd6'
-----------------------------------------------------------------------------------------------
الآن، دعنا نختبر أداء كلٍّ من النموذج المضبوط ونموذج الأساس الأصلي لنرى تأثيرات عملية الضبط التي أجريناها. أولًا، دعنا نحمِّل مجموعة البيانات الاختبارية. يجب أن تكون مجموعة البيانات هذه مجموعة فرعية من البيانات التي لم تكن موجودة أثناء الضبط. في كثير من الأحيان، تكون مجموعة الاختبار أصغر أيضًا من مجموعة التدريب. بالإضافة إلى ذلك، يحتوي كل إدخال في مجموعة بيانات الاختبار على المطالبة كبادئة لتعليق المستخدم.
لنعرض جزءًا صغيرًا من مجموعة البيانات لفهم هيكلها بشكل أفضل.
المخرجات:
عند تحميل مجموعة بيانات الاختبار، دعنا نستخرج المدخلات والمخرجات.
يمكننا أيضًا طباعة عينة من مدخلات ومخرجات الاختبار لفهم كيفية استخراج محتوى مجموعة البيانات بشكل أفضل.
المخرجات:
'Extract the satisfaction from the comment. Return simple 1 for satisfied customer or 0 for unsatisfied.\nComment: Long wait times.\nSatisfaction:\n'
في هذا المثال، يتم تقديم المطالبة، يليها تقييم العميل حول طول وقت الانتظار، وأخيرًا تكون درجة الرضا 0 للدلالة على تقييم سلبي.
المخرجات:
0
الآن بعد أن أصبحت لدينا مجموعة بيانات الاختبار، دعنا نختبر الدقة ودرجة F1 لنموذجنا المضبوط. درجة F1 هي متوسط دقة النموذج واستدعائه. سنحتاج إلى deployment_id للقيام بذلك. لاحِظ أنه تم تعيين concurrency_limit على 2 لتجنب الوصول إلى حد معدل واجهة برمجة التطبيقات. هذا هو عدد الطلبات التي سيتم إرسالها بالتوازي.
المخرجات:
accuracy_score: 0.9827586206896551, f1_score: 0.9827586206896551
بالنظر إلى دقة النموذج العالية ودرجة F1 التي حصلنا عليها، دعنا نختبر أداء نموذج Granite نفسه دون أي ضبط.
المخرجات:
base model accuracy_score: 0.9310344827586207, base model f1_score: 0.9298245614035088
يتفوق نموذجنا المضبوط على نموذج الأساس المضبوط مسبقًا. ونظرًا لأن النموذج المضبوط متخصص في استخراج درجات الرضا، يمكن استخدامه لمهام أخرى تتعلق باستخراج الرضا. عمل رائع!
في هذا البرنامج التعليمي، أجريت ضبطًا للمطالبة على نموذج IBM Granite باستخدام واجهة برمجة تطبيقات watsonx. لقد نجح النموذج الذي ضبطته ونشرته في التفوق على نموذج الأساس بدقة أكبر بنحو 5%.