download.sh . أولا ، إعداد البيانات. Donwload Squad Data and Glove و NLTK Corpus (حوالي 850 ميجابايت ، سيؤدي ذلك إلى تنزيل الملفات إلى $HOME/data ):
chmod +x download.sh; ./download.sh
ثانياً ، مجموعة بيانات STANFORD QA Stanford (إلى جانب ناقلات القفازات) وحفظها في $PWD/data/squad (حوالي 5 دقائق):
python -m squad.prepro
النموذج لديه ~ 2.5m معلمات. تم تدريب النموذج مع NVIDIA TITAN X (Pascal Architecture ، 2016). يتطلب النموذج ما لا يقل عن 12 جيجابايت من ذاكرة الوصول العشوائي من GPU. إذا كان ذاكرة الوصول العشوائي الخاصة بك GPU أصغر من 12 جيجابايت ، فيمكنك إما تقليل حجم الدُفعة (قد يتحلل الأداء) ، أو يمكنك استخدام GPU Multi (انظر أدناه). يتقارب التدريب عند خطوات 18K ، واستغرق الأمر ~ 4s لكل خطوة (أي ~ 20 ساعة).
قبل التدريب ، يوصى أولاً بتجربة الكود التالي للتحقق من كل شيء على ما يرام والذاكرة كافية:
python -m basic.cli --mode train --noload --debug
ثم للتدريب بالكامل ، قم بالتشغيل:
python -m basic.cli --mode train --noload
يمكنك تسريع عملية التدريب مع أعلام التحسين:
python -m basic.cli --mode train --noload --len_opt --cluster
لا يزال بإمكانك حذفهم ، لكن التدريب سيكون أبطأ بكثير.
لاحظ أنه خلال التدريب ، فإن درجات EM و F1 من التقييم العرضي ليست هي نفسها مع النتيجة من نص تقييم الفريق الرسمي. الدرجات المطبوعة ليست رسمية (مخطط التسجيل لدينا أقسى بعض الشيء). للحصول على الرقم الرسمي ، استخدم المقيِّم الرسمي (تم نسخه في مجلد squad ، squad/evaluate-v1.1.py ). لمزيد من المعلومات انظر 3. اختبار.
للاختبار ، تشغيل:
python -m basic.cli
على غرار التدريب ، يمكنك إعطاء أعلام التحسين لتسريع اختبار (5 دقائق على بيانات DEV):
python -m basic.cli --len_opt --cluster
يقوم هذا الأمر بتحميل أحدث نموذج تم حفظه أثناء التدريب ويبدأ الاختبار على بيانات الاختبار. بعد انتهاء العملية ، تقوم بطباعة درجات F1 و EM ، كما يخرج ملف JSON ( $PWD/out/basic/00/answer/test-####.json ، حيث #### هو الخطوة#التي تم حفظ النموذج). لاحظ أن الدرجات المطبوعة ليست رسمية (مخطط التسجيل لدينا أقسى بعض الشيء). للحصول على الرقم الرسمي ، استخدم المقيِّم الرسمي (نسخه في مجلد squad ) وملف JSON الإخراج:
python squad/evaluate-v1.1.py $HOME/data/squad/dev-v1.1.json out/basic/00/answer/test-####.json
بدلاً من تدريب النموذج بنفسك ، يمكنك اختيار استخدام الأوزان التي تم تدريبها مسبقًا والتي تم استخدامها لتقديم المتصدرين في الفريق. ارجع إلى ورقة العمل هذه في Codalab لإعادة إنتاج النتائج. إذا لم تكن على دراية بـ Codalab ، فاتبع هذه الخطوات البسيطة (بالنظر إلى أنك قابلت كل ما قبل):
save.zip من ورقة العمل وفك ضغطها في الدليل الحالي.glove.6B.100d.txt من مجلد بيانات القفازات ( $HOME/data/glove/ ) إلى الدليل الحالي. basic/run_single.sh $HOME/data/squad/dev-v1.1.json single.json
هذا يكتب الإجابات إلى single.json في الدليل الحالي. يمكنك بعد ذلك استخدام المقيِّم الرسمي للحصول على درجات EM و F1. إذا كنت ترغب في تشغيل GPU (حوالي 5 دقائق) ، قم بتغيير قيمة علامة Batch_size في ملف shell إلى رقم أعلى (60 لذاكرة وصول الكربوناهي 12 جيجابايت). 4. بالمثل ، لإعادة إنتاج طريقة المجموعة:
basic/run_ensemble.sh $HOME/data/squad/dev-v1.1.json ensemble.json
إذا كنت ترغب في تشغيل GPU ، فيجب عليك تشغيل البرنامج النصي بالتتابع عن طريق إزالة '&' في forloop ، أو ستحتاج إلى تحديد وحدات معالجة الرسومات المختلفة لكل مجموعة من الحلقة for.
لاحظ أن هذه الدرجات هي من المقيِّم الرسمي (تم نسخها في مجلد squad ، squad/evaluate-v1.1.py ). لمزيد من المعلومات انظر 3. اختبار. ظهرت الدرجات أثناء التدريب يمكن أن تكون أقل من الدرجات من المقيِّم الرسمي.
| م (٪) | F1 (٪) | |
|---|---|---|
| أعزب | 67.7 | 77.3 |
| فرقة | 72.6 | 80.7 |
| م (٪) | F1 (٪) | |
|---|---|---|
| أعزب | 68.0 | 77.3 |
| فرقة | 73.3 | 81.1 |
الرجوع إلى ورقتنا لمزيد من التفاصيل. انظر فرقة المتصدرين للمقارنة مع الطرز الأخرى.
نموذجنا يدعم التدريب متعدد GPU. نتبع نموذج التوازي الموصوف في TensorFlow البرنامج التعليمي. باختصار ، إذا كنت ترغب في استخدام حجم الدُفعة 60 (افتراضيًا) ولكن إذا كان لديك 3 وحدات معالجة الرسومات مع ذاكرة الوصول العشوائي 4 جيجابايت ، فأنت تقوم بتهيئة كل وحدة معالجة الرسومات بحجم الدفعة 20 ، ودمج التدرجات على وحدة المعالجة المركزية. يمكن القيام بذلك بسهولة عن طريق الجري:
python -m basic.cli --mode train --noload --num_gpus 3 --batch_size 20
وبالمثل ، يمكنك تسريع الاختبار الخاص بك بواسطة:
python -m basic.cli --num_gpus 3 --batch_size 20
في الوقت الحالي ، يرجى الرجوع إلى الفرع demo لهذا المستودع.