GLM نموذج اللغة القائم على GPU هو تنفيذ نموذج لغة NGRAM يأخذ في ملف ARPA كمدخل ، ويثبيته ويستفسر من الدفعة. يمكن العثور على مزيد من التفاصيل حول التصميم والتنفيذ في هذه الورقة ، التي تم نشرها في ACL 2016.
git clone https://github.com/XapaJIaMnu/gLM.git
cd gLM
mkdir release_build
cd release_build
cmake ..
make -j4
make test # Requires CUDA for GPU testing-DBUILDTYPE=debug يبني مع -o0 و -g-DCOMPUTE_VER قم بتعيين إصدار حساب الجهاز. الافتراضي هو 52. لن ينتج عن درجات صحيحة إذا تم تجميعها بإصدار حساب خاطئ !!! تحقق من إصدار حساب GPU الخاص بك هنا . إذا لم يفشل make test في أي من اختبارات وحدة معالجة الرسومات ، فهذا يعني أن إصدار حسابك صحيح.-DBAD_HOST يجب أن يساعد هذا في البناء على أنظمة Ubuntu الأقدم مثل 12.04 و 14.04. لا تستخدمه إلا إذا كنت تواجه مشكلة في البناء.-DPYTHON_INCLUDE_DIR يحدد المسار إلى مكتبة Python مثل /usr/include/python2.7/pyconfig.h أو /usr/include/python3.6m/pyconfig وتمكين بناء مكونات python.-DPYTHON_VER على افتراضي إلى 2.7 إذا كنت ترغب في إنشاء مكونات Python مع إصدار مختلف ، فقم بتعيينه على الإصدار المطلوب. لن يكون له أي تأثير ما لم يتم تعيين -DPYTHON_INCLUDE_DIR .--DYAMLCPP_DIR SE إذا كان YAML-CPP في موقع غير قياسي (قياسي هو /usr/incude ). cd path_to_glm/release_build/bin
./binarize_v2 path_to_arpa_file output_path [btree_node_size]يجب أن يكون btree_node_size رقمًا غريبًا. أنا شخصياً وجدت أن 31 يعمل بشكل أفضل ، ولكن يجب عليك التجربة. يمكن أن يختلف الرقم مع ملفات ARPA مختلفة الحجم ووحدة معالجة الرسومات المختلفة
لقياس GLM في إعداد الدُفعات تفعل:
cd path_to_glm/release_build/bin
./batch_query_v2 path_to_binary_lm path_to_text_file [gpuDeviceID] [add_begin_end_markers] هذا سيحسب حيرة ملف نصي. إذا تم تعيين Gpudeviceid ، فسوف يخبر الجزء GPU من الكود الذي سيتم تنفيذه على وحدة معالجة الرسومات معينة. يمكنك التحقق من وحدات معالجة الرسومات المتوفرة على نظام باستخدام أمر nvidia_smi . 0 هو افتراضي آمن إذا كنت ترغب في تعيينه. إذا تم ضبط Add_begin_end_markers على 0 ، فإن بداية الجملة ونهاية الرموز المميزة (<s> و </s>) لن تحيط بكل جملة.
لذلك ... بدأ كل شيء يعمل بشكل صحيح. معيار (تمهيدي) ضد التحقيق المفرد Kenlm (Titan X vs Core I7 4720HQ)
| LM | استفسارات NGRAM في الثانية | معلومات النموذج |
|---|---|---|
| كينلم | 10 274 237 | 3.3g ، 88720517 Ngrams |
| GLM | 65 459 102 | 3.3g ، 88720517 Ngrams |
معيار متعدد مؤشرات الترابط ، نفس وحدة معالجة الرسومات مقابل 2x Intel (R) Xeon (R) CPU E5-2680 0 @ 2.70GHz
| LM | استفسارات NGRAM في الثانية | معلومات النموذج |
|---|---|---|
| Kenlm 1 موضوع | 8 310 761 | 3.3g ، 88720517 Ngrams |
| Kenlm 2 الموضوع | 15 823 376 | 3.3g ، 88720517 Ngrams |
| Kenlm 4 موضوع | 27 201 337 | 3.3g ، 88720517 Ngrams |
| Kenlm 8 موضوع | 43 336 444 | 3.3g ، 88720517 Ngrams |
| Kenlm 16 موضوع | 49 218 076 | 3.3g ، 88720517 Ngrams |
| Kenlm 32 Thread | 119 539 677 | 3.3g ، 88720517 Ngrams |
| GLM | 65 459 102 | 3.3g ، 88720517 Ngrams |
من المحتمل أن تؤدي مشكلة الجدولة إلى انخفاض الأداء في حالة سلسلة 16. يحقق GLM أداءً أفضل مرتين بالنسبة لتكلفة الأجهزة. (1000 دولار ل GPU مقابل 3500 دولار لوحدة المعالجة المركزية)