1- مقدمة
أهمية الضبط الدقيق
يتم تدريب النماذج الأساسية لأغراض عامة، وفي بعض الأحيان لا تؤدي المهام بالقدر الذي تريده. قد يرجع ذلك إلى أنّ المهام التي تريد أن يؤديها النموذج هي مهام متخصّصة يصعب تعليمه إياها باستخدام تصميم الطلبات فقط. في هذه الحالات، يمكنك استخدام ميزة "ضبط النموذج" لتحسين أدائه في مهام معيّنة. يمكن أن يساعد ضبط النموذج أيضًا في الالتزام بمتطلبات الإخراج المحدّدة عندما لا تكون التعليمات كافية. يمكن أن تحتوي النماذج اللغوية الكبيرة (LLMs) على كمية هائلة من المعلومات ويمكنها أداء العديد من المهام، ولكنّها تتفوّق فقط عند توفير تدريب متخصّص لها. يمكن أن يؤدي الضبط الدقيق إلى تدريب نموذج لغوي كبير، ما يسمح لك بتكييف نموذج لغوي كبير مدرَّب مسبقًا لتلبية احتياجاتك المحدّدة.
في هذا الدرس التطبيقي حول الترميز، ستتعرّفون على كيفية إجراء الضبط الدقيق باستخدام أسلوب الضبط الخاضع للإشراف لنموذج لغوي كبير.
يحسّن الضبط الخاضع للإشراف أداء النموذج من خلال تعليمه مهارة جديدة. يتم استخدام بيانات تحتوي على مئات الأمثلة المصنّفة لتعليم النموذج محاكاة سلوك أو مهمة معيّنة. سنقدّم مجموعة بيانات مصنّفة للنص المُدخَل (الطلب) والنص الناتج (الردّ) لتعليم النموذج كيفية تخصيص الردود لحالة الاستخدام المحدّدة.
مزيد من المعلومات عن تخصيص النموذج متوفرة هنا.
ما ستنشئونه
حالة الاستخدام: إنشاء عناوين لمقالات إخبارية
لنفترض أنّكم تريدون إنشاء عناوين تلقائيًا للمقالات الإخبارية. باستخدام Vertex AI، يمكنكم ضبط نموذج لغوي كبير بدقة ينشئ عنوانًا ملخّصًا مناسبًا بأسلوب معيّن ويخصّص العنوان وفقًا لإرشادات القناة الإخبارية.
في هذا الدرس التطبيقي حول الترميز، ستنفّذون ما يلي:
- استخدام
BBC FULLTEXT DATA(التي أتاحتها مجموعة البيانات العلنية في BigQuerybigquery-public-data.bbc_news.fulltext) - ضبط نموذج لغوي كبير (
text-bison@002) بدقة ليصبح نموذجًا جديدًا مضبوطًا بدقة يُسمى "bbc-news-summary-tuned" ومقارنة النتيجة بالردّ من النموذج الأساسي يتوفّر ملف JSONL نموذجي لهذا الدرس التطبيقي حول الترميز في المستودع. يمكنكم تحميل الملف إلى حزمة Cloud Storage وتنفيذ خطوات الضبط الدقيق التالية: - إعداد البيانات: ابدأوا بمجموعة بيانات من المقالات الإخبارية وعناوينها المقابلة، مثل مجموعة بيانات BBC News المستخدَمة في رمز المثال.
- ضبط نموذج مدرَّب مسبقًا بدقة: اختاروا نموذجًا أساسيًا مثل "
text-bison@002" واضبطوه بدقة باستخدام بيانات الأخبار باستخدام حزمة تطوير البرامج Vertex AI SDK للغة Python. - تقييم النتائج: قارِنوا أداء النموذج المضبوط بدقة بالنموذج الأساسي لمعرفة التحسين في جودة إنشاء العناوين.
- تفعيل النموذج واستخدامه: أتيحوا النموذج المضبوط بدقة من خلال نقطة نهاية واجهة برمجة تطبيقات وابدأوا في إنشاء عناوين تلقائيًا للمقالات الجديدة.
2. قبل البدء
- في Google Cloud Console، انتقِلوا إلى صفحة اختيار المشروع واختاروا مشروع Google Cloud أو أنشئوا مشروع .
- تأكَّدوا من تفعيل الفوترة لمشروع Google Cloud. كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع .
- افتحوا Colab Notebook وسجِّلوا الدخول باستخدام الحساب نفسه الذي تستخدمونه في حساب Google Cloud النشط حاليًا.
3. ضبط نموذج لغوي كبير بدقة
يستخدم هذا الدرس التطبيقي حول الترميز حزمة تطوير البرامج Vertex AI SDK للغة Python لضبط النموذج بدقة. يمكنكم أيضًا إجراء الضبط الدقيق باستخدام الخيارات الأخرى، مثل HTTP وأمر CURL وحزمة تطوير البرامج Java SDK ووحدة التحكّم.
يمكنكم ضبط النموذج وتقييمه للحصول على ردود مخصّصة في 5 خطوات. يمكنكم الرجوع إلى الرمز الكامل في الملف llm_fine_tuning_supervised.ipynb من الـ مستودع.
4. الخطوة 1: تثبيت التبعيات واستيرادها
!pip install google-cloud-aiplatform
!pip install --user datasets
!pip install --user google-cloud-pipeline-components
اتّبِعوا بقية الخطوات كما هو موضّح في ملف .ipynb في الـ مستودع. تأكَّدوا من استبدال PROJECT_ID وBUCKET_NAME ببيانات الاعتماد.
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import warnings
warnings.filterwarnings('ignore')
import vertexai
vertexai.init(project=PROJECT_ID, location=REGION)
import kfp
import sys
import uuid
import json
import pandas as pd
from google.auth import default
from datasets import load_dataset
from google.cloud import aiplatform
from vertexai.preview.language_models import TextGenerationModel, EvaluationTextSummarizationSpec
5. الخطوة 2: إعداد بيانات التدريب وتحميلها
استبدِلوا YOUR_BUCKET بحزمتكم وحمِّلوا ملف بيانات التدريب النموذجي TRAIN.jsonl إليها. تم توفير البيانات النموذجية لحالة الاستخدام هذه في الرابط المذكور أعلاه.
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/TRAIN.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
يجب أن تؤدي هذه الخطوة إلى ما يلي:

6. الخطوة 3: ضبط نموذج لغوي كبير بدقة
يمكنكم في هذه المرحلة ضبط أي نموذج لغوي كبير (استنادًا إلى مدى توفّره) . في هذا المقتطف، نضبط النموذج المدرَّب مسبقًا "text-bison@002" باستخدام إطار البيانات الذي يحتوي على بيانات التدريب التي حمّلناها في الخطوة السابقة:
model_display_name = 'bbc-finetuned-model' # @param {type:"string"}
tuned_model = TextGenerationModel.from_pretrained("text-bison@002")
tuned_model.tune_model(
training_data=df,
train_steps=100,
tuning_job_location="europe-west4",
tuned_model_location="europe-west4",
)
ستستغرق هذه الخطوة بضع ساعات حتى تكتمل. يمكنكم تتبُّع مستوى تقدُّم الضبط الدقيق باستخدام رابط مهمة سلسلة التعليمات في النتيجة.
7. الخطوة 4: التوقّع باستخدام النموذج الجديد المضبوط بدقة
بعد اكتمال مهمة الضبط الدقيق، ستتمكنون من التوقّع باستخدام النموذج الجديد. للتوقّع باستخدام النموذج الجديد المضبوط بدقة:
response = tuned_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
من المفترض أن تظهر لكم النتيجة التالية:

للتوقّع باستخدام النموذج الأساسي (text-bison@002) للمقارنة، نفِّذوا الأوامر التالية:
base_model = TextGenerationModel.from_pretrained("text-bison@002")
response = base_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
من المفترض أن تظهر لكم النتيجة التالية:

على الرغم من أنّ كلا العنوانَين اللذَين تم إنشاؤهما يبدوان مناسبَين، فإنّ العنوان الأول (الذي تم إنشاؤه باستخدام النموذج المضبوط بدقة) يتوافق بشكل أكبر مع نمط العناوين المستخدَمة في مجموعة البيانات المعنيّة.
تحميل النموذج المضبوط بدقة
قد يكون من الأسهل تحميل نموذج تم ضبطه بدقة للتو. ولكن تذكّروا أنّه في الخطوة 3، يتم استدعاؤه في نطاق الرمز البرمجي نفسه، لذا سيظل يحتوي على النموذج المضبوط في المتغيّر tuned_model. ولكن ماذا لو أردتم استدعاء نموذج تم ضبطه في الماضي؟
لإجراء ذلك، يمكنكم استدعاء طريقة get_tuned_model() على النموذج اللغوي الكبير باستخدام عنوان URL الكامل لنقطة نهاية النموذج المضبوط بدقة الذي تم تفعيله من سجلّ نماذج Vertex AI. يُرجى العِلم أنّه في هذه الحالة، ستدخلون PROJECT_NUMBER وMODEL_NUMBER بدلاً من أرقام التعريف الخاصة بهما.
tuned_model_1 = TextGenerationModel.get_tuned_model("projects/<<PROJECT_NUMBER>>/locations/europe-west4/models/<<MODEL_NUMBER>>")
print(tuned_model_1.predict("YOUR_PROMPT"))
8. الخطوة 5: تقييم النموذج الجديد المضبوط بدقة
التقييم هو جانب مهم لتقييم جودة الردّ الذي تم إنشاؤه ومدى صلته بالموضوع. ويشمل ذلك فحص الناتج من نموذج لغوي توليدي لتحديد مدى اتساقه ودقته وتوافقه مع الطلب المقدَّم. يساعد تقييم النموذج في تحديد مجالات التحسين وتحسين أداء النموذج والتأكّد من أنّ النص الذي تم إنشاؤه يستوفي المعايير المطلوبة للجودة والفائدة. مزيد من المعلومات في المستندات. في الوقت الحالي، سنرى كيف يمكننا الحصول على بعض مقاييس التقييم للنموذج المضبوط بدقة ومقارنتها بالنموذج الأساسي.
- تحميل مجموعة بيانات التقييم:
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/EVALUATE.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
- تحديد مواصفات التقييم لمهمة تلخيص نص على النموذج المضبوط بدقة
task_spec = EvaluationTextSummarizationSpec(
task_name = "summarization",
ground_truth_data=df
)
ستستغرق هذه الخطوة بضع دقائق حتى تكتمل. يمكنكم تتبُّع مستوى التقدُّم باستخدام رابط مهمة سلسلة التعليمات في النتيجة. بعد الاكتمال، من المفترض أن تظهر لكم نتيجة التقييم التالية:

يشير المقياس rougeLSum في نتيجة التقييم إلى درجة ROUGE-L للملخّص. ROUGE-L هو مقياس يستند إلى الاستدعاء ويقيس التداخل بين ملخّص وملخّص مرجعي. يتم حسابه من خلال أخذ أطول سلسلة فرعية مشتركة (LCS) بين الملخّصَين وقسمتها على طول الملخّص المرجعي.
تبلغ درجة rougeLSum في التعبير المقدَّم 0.36600753600753694، ما يعني أنّ الملخّص يتداخل بنسبة% 36.6 مع الملخّص المرجعي.
إذا نفّذتم خطوة التقييم على النموذج الأساسي، ستلاحظون أنّ درجة الملخّص أعلى نسبيًا للنموذج المضبوط بدقة.
يمكنكم العثور على نتائج التقييم في دليل الإخراج في Cloud Storage الذي حدّدتموه عند إنشاء مهمة التقييم. اسم الملف هو evaluation_metrics.json. بالنسبة إلى النماذج المضبوطة، يمكنكم أيضًا الاطّلاع على نتائج التقييم في Google Cloud Console على صفحة سجلّ نماذج Vertex AI.
9. اعتبارات مهمة
- توافق النموذج: يُرجى دائمًا الاطّلاع على مستندات النموذج لمعرفة أحدث المعلومات عن التوافق.
- التطوير السريع: يتطوّر مجال النماذج اللغوية الكبيرة بسرعة. قد يتفوّق نموذج أحدث وأكثر تطوّرًا على نموذج مضبوط بدقة تم إنشاؤه استنادًا إلى نموذج أساسي أقدم. الخبر السار هو أنّه يمكنكم تطبيق أساليب الضبط الدقيق هذه على النماذج الأحدث عندما تصبح الإمكانية متاحة.
- LoRA: LoRA هو أسلوب لضبط النماذج اللغوية الكبيرة بدقة بكفاءة. ويتم ذلك من خلال إضافة مصفوفات قابلة للتدريب ومنخفضة الرتبة إلى طبقات النموذج المدرَّب مسبقًا الحالي. مزيد من المعلومات هنا. بدلاً من تعديل جميع مَعلمات النموذج اللغوي الكبير الضخم، يتعلّم LoRA مصفوفات أصغر يتم إضافتها إلى مصفوفات الأوزان الخاصة بالنموذج الأصلي أو ضربها بها. يؤدي ذلك إلى تقليل عدد المَعلمات الإضافية التي يتم إدخالها أثناء الضبط الدقيق بشكل كبير.
10. تَنظيم
لتجنُّب تحصيل رسوم من حساب Google Cloud مقابل الموارد المستخدَمة في هذا الدرس التطبيقي حول الترميز، اتّبِعوا الخطوات التالية:
- في Google Cloud Console، انتقِلوا إلى صفحة إدارة الموارد.
- في قائمة المشاريع، اختاروا المشروع الذي تريدون حذفه، ثم انقروا على حذف.
- في مربّع الحوار، اكتبوا رقم تعريف المشروع، ثم انقروا على إيقاف لحذف المشروع.
- بدلاً من ذلك، يمكنكم الانتقال إلى سجلّ النماذج، ثم الانتقال إلى علامة التبويب "تفعيل النموذج واختباره" وإلغاء تفعيل نقطة النهاية وحذف النموذج المضبوط الذي تم تفعيله.
11. تهانينا
تهانينا! لقد استخدمتم بنجاح منصة Vertex AI لضبط نموذج لغوي كبير بدقة. الضبط الدقيق هو أسلوب فعّال يسمح لكم بتخصيص النماذج اللغوية الكبيرة لتناسب نطاقكم ومهامكم. باستخدام Vertex AI، تتوفّر لكم الأدوات والموارد التي تحتاجونها لضبط نماذجكم بدقة بكفاءة وفعالية.
استكشِفوا مستودعات GitHub وجرِّبوا الرمز النموذجي لتجربة الضبط الدقيق و التقييم بأنفسكم. فكِّروا في كيفية تلبية النماذج اللغوية الكبيرة المضبوطة بدقة لاحتياجاتكم المحدّدة، بدءًا من إنشاء نسخة تسويقية مستهدَفة إلى تلخيص المستندات المعقّدة أو ترجمة اللغات مع مراعاة الفروق الثقافية الدقيقة. استخدِموا المجموعة الشاملة من الأدوات والخدمات التي تقدّمها Vertex AI لإنشاء نماذجكم المضبوطة بدقة وتدريبها وتقييمها وتفعيلها بسهولة.