تنفيذ TensorFlow لـ QANET من Google (الفهم السريع سابقًا (FRC)) من ICLR2018. (ملاحظة: هذا ليس تطبيقًا رسميًا من مؤلفي الورقة)
كتبت مدونة منشور حول تنفيذ QANET. تحقق من هنا لمزيد من المعلومات!
تم اعتماد خط أنابيب التدريب والمعالجة المسبقة من R-NET بواسطة HKUST-NKLOMP. الوضع التجريبي يعمل. بعد التدريب ، ما عليك سوى استخدام python config.py --mode demo لتشغيل خادم تجريبي تفاعلي.
نظرًا لمشكلة الذاكرة ، يتم استخدام اهتمام منتج واحد في الرأس على عكس 8 رؤساء اهتمام متعدد الرأس كما في الورقة الأصلية. يتم تخفيض الحجم المخفي أيضًا إلى 96 من 128 بسبب استخدام GTX1080 مقارنةً بـ P100 المستخدم في الورقة. (8 جيجابايت من ذاكرة GPU غير كافية. إذا كان لديك وحدة معالجة رسومات ذاكرة سعة 12 جيجابايت ، فيرجى مشاركة نتائج التدريب معنا.)
حاليًا ، يصل أفضل طراز إلى EM/F1 = 70.8/80.1 في 60 ألف خطوة (6 ~ 8 ساعات). النتائج التفصيلية مدرجة أدناه.

مجموعة البيانات المستخدمة في هذه المهمة هي مجموعة بيانات الإجابة على أسئلة Stanford. تضمينات القفازات المسبقة التي تم الحصول عليها من الزحف المشترك مع رموز 840B المستخدمة للكلمات.
لتنزيل البيانات والمعالجة المسبقة ، قم بتشغيلها
# download SQuAD and Glove
sh download.sh
# preprocess the data
python config.py --mode preproتمامًا مثل R-Net بواسطة HKust-knowcomp ، يتم تخزين المعلمات المفرطة في config.py. لتصحيح/قطار/اختبار/تجريبي ، تشغيل
python config.py --mode debug/train/test/demoلتقييم النموذج مع الكود الرسمي ، قم بتشغيل
python evaluate-v1.1.py ~ /data/squad/dev-v1.1.json train/{model_name}/answer/answer.json الدليل الافتراضي لملف سجل Tensorboard هو train/{model_name}/event
لبناء صورة Docker (يتطلب nvidia-docker) ، قم بتشغيل
nvidia-docker build -t tensorflow/qanet .
اضبط مسارات التثبيت على مستوى الصوت وأرجل المنافذ (لوضع العرض التوضيحي)
export QANETPATH={/path/to/cloned/QANet}
export CONTAINERWORKDIR=/home/QANet
export HOSTPORT=8080
export CONTAINERPORT=8080
ضرب في الحاوية
nvidia-docker run -v $QANETPATH:$CONTAINERWORKDIR -p $HOSTPORT:$CONTAINERPORT -it --rm tensorflow/qanet bash
بمجرد الدخول إلى الحاوية ، اتبع الأوامر المقدمة أعلاه بدءًا من تنزيل مجموعات بيانات الفريق والقفازات.
الأوزان النموذجية المسبق غير متوفرة مؤقتًا.
فيما يلي النتائج التي تم جمعها من هذا المستودع والورقة الأصلية.
| نموذج | خطوات التدريب | مقاس | رؤساء الانتباه | حجم البيانات (أغسطس) | م | F1 |
|---|---|---|---|---|---|---|
| نموذجي | 35000 | 96 | 1 | 87k (لا أغسطس) | 69.0 | 78.6 |
| نموذجي | 60،000 | 96 | 1 | 87k (لا أغسطس) | 70.4 | 79.6 |
| نموذجتي (التي أبلغ عنها @jasonbw) | 60،000 | 128 | 1 | 87k (لا أغسطس) | 70.7 | 79.8 |
| النموذج الخاص بي (الذي أبلغ عنه chesterkuo) | 60،000 | 128 | 8 | 87k (لا أغسطس) | 70.8 | 80.1 |
| ورقة أصلية | 35000 | 128 | 8 | 87k (لا أغسطس) | نا | 77.0 |
| ورقة أصلية | 150،000 | 128 | 8 | 87k (لا أغسطس) | 73.6 | 82.7 |
| ورقة أصلية | 340،000 | 128 | 8 | 240k (أغسطس) | 75.1 | 83.8 |
تشغيل Tensorboard للتصور.
$ tensorboard --logdir=./