Path: blob/main/transformers_doc/ar/tensorflow/multiple_choice.ipynb
8190 views
الاختيار من متعدد (Multiple choice)
مهمة الاختيار من متعدد مشابهة لمهمة الإجابة على الأسئلة، ولكن مع توفير عدة إجابات محتملة مع سياق، ويُدرّب النموذج على تحديد الإجابة الصحيحة.
سيوضح لك هذا الدليل كيفية:
ضبط نموذج BERT باستخدام الإعداد
regularلمجموعة بيانات SWAG لاختيار الإجابة الأفضل من بين الخيارات المتعددة المتاحة مع السياق.استخدام النموذج المضبوط للاستدلال.
قبل البدء، تأكد من تثبيت جميع المكتبات الضرورية:
نشجعك على تسجيل الدخول إلى حساب Hugging Face الخاص بك حتى تتمكن من تحميل نموذجك ومشاركته مع المجتمع. عند المطالبة، أدخل الرمز المميز الخاص بك لتسجيل الدخول:
تحميل مجموعة بيانات SWAG
ابدأ بتحميل تهيئة regular لمجموعة بيانات SWAG من مكتبة 🤗 Datasets:
ثم ألق نظرة على مثال:
على الرغم من أن الحقول تبدو كثيرة، إلا أنها في الواقع بسيطة جداً:
sent1وsent2: يعرض هذان الحقلان بداية الجملة، وبدمجهما معًا، نحصل على حقلstartphrase.ending: يقترح نهاية محتملة للجملة، واحدة منها فقط هي الصحيحة.label: يحدد نهاية الجملة الصحيحة.
المعالجة المسبقة (Preprocess)
الخطوة التالية هي استدعاء مُجزئ BERT لمعالجة بدايات الجمل والنهايات الأربع المحتملة:
تحتاج دالة المعالجة المسبقة التي تريد إنشاءها إلى:
إنشاء أربع نسخ من حقل
sent1ودمج كل منها معsent2لإعادة إنشاء كيفية بدء الجملة.دمج
sent2مع كل من نهايات الجمل الأربع المحتملة.تتجميع هاتين القائمتين لتتمكن من تجزئتهما، ثم إعادة ترتيبها بعد ذلك بحيث يكون لكل مثال حقول
input_idsوattention_maskوlabelsمقابلة.
لتطبيق دالة المعالجة المسبقة على مجموعة البيانات بأكملها، استخدم طريقة map الخاصة بـ 🤗 Datasets. يمكنك تسريع دالة map عن طريق تعيين batched=True لمعالجة عناصر متعددة من مجموعة البيانات في وقت واحد:
لا يحتوي 🤗 Transformers على مجمع بيانات للاختيار من متعدد، لذلك ستحتاج إلى تكييف DataCollatorWithPadding لإنشاء دفعة من الأمثلة. من الأكفأ إضافة حشو (padding) ديناميكي للجمل إلى أطول طول في دفعة أثناء التجميع، بدلاً من حشو مجموعة البيانات بأكملها إلى الحد الأقصى للطول.
يقوم DataCollatorForMultipleChoice بتجميع جميع مدخلات النموذج، ويطبق الحشو، ثم يعيد تجميع النتائج في شكلها الأصلي:
التقييم (Evaluate)
يُفضل غالبًا تضمين مقياس أثناء التدريب لتقييم أداء نموذجك. يمكنك تحميل طريقة تقييم بسرعة باستخدام مكتبة 🤗 Evaluate. لهذه المهمة، قم بتحميل مقياس الدقة (انظر إلى الجولة السريعة لـ 🤗 Evaluate لمعرفة المزيد حول كيفية تحميل المقياس وحسابه):
ثم أنشئ دالة لتمرير التنبؤات والتسميات إلى compute لحساب الدقة:
دالتك compute_metrics جاهزة الآن، وستعود إليها عند إعداد تدريبك.
التدريب (Train)
إذا لم تكن معتادًا على ضبط نموذج باستخدام Trainer, فراجع الدرس الأساسي هنا!
أنت جاهز لبدء تدريب نموذجك الآن! قم بتحميل BERT باستخدام AutoModelForMultipleChoice:
في هذه المرحلة، تبقى ثلاث خطوات فقط:
حدد معلمات التدريب الخاصة بك في
TrainingArguments. المعلمة الوحيدة المطلوبة هيoutput_dirالتي تحدد مكان حفظ نموذجك. ستدفع هذا النموذج إلى Hub عن طريق تعيينpush_to_hub=True(يجب عليك تسجيل الدخول إلى Hugging Face لتحميل نموذجك). في نهاية كل حقبة، سيقومTrainerبتقييم الدقة وحفظ نقطة فحص التدريب.مرر معلمات التدريب إلى
Trainerجنبًا إلى جنب مع النموذج ومُجمِّع البيانات والمعالج ودالة تجميع البيانات ودالةcompute_metrics.استدعي
train()لضبط نموذجك.
بمجرد اكتمال التدريب، شارك نموذجك مع Hub باستخدام طريقة push_to_hub() حتى يتمكن الجميع من استخدام نموذجك:
للحصول على مثال أكثر تعمقًا حول كيفية ضبط نموذج للاختيار من متعدد، ألق نظرة على دفتر ملاحظات PyTorch أو دفتر ملاحظات TensorFlow المقابل.
الاستدلال (Inference)
رائع، الآن بعد أن قمت بضبط نموذج، يمكنك استخدامه للاستدلال!
قم بإنشاء نص واقتراح إجابتين محتملتين:
قم بتحليل كل مطالبة وزوج إجابة مرشح وأعد تنسورات PyTorch. يجب عليك أيضًا إنشاء بعض العلامات:
مرر مدخلاتك والعلامات إلى النموذج وأرجعlogits:
استخرج الفئة ذات الاحتمالية الأكبر: