GLM โมเดลภาษาที่ใช้ GPU คือการใช้แบบจำลองภาษา NGRAM ที่ใช้ในไฟล์ ARPA เป็นอินพุต, binarizes และสอบถามในชุด รายละเอียดเพิ่มเติมเกี่ยวกับการออกแบบและการใช้งานสามารถพบได้ในบทความนี้เผยแพร่ที่ 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 ไม่ล้มเหลวในการทดสอบ GPU หมายความว่าเวอร์ชันการคำนวณของคุณถูกต้อง-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 ขนาดที่แตกต่างกันและ GPU ที่แตกต่างกัน
เพื่อมาตรฐาน 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 ของรหัสที่จะดำเนินการใน GPU เฉพาะ คุณสามารถตรวจสอบ 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 |
เกณฑ์มาตรฐานแบบมัลติเธรด, GPU เดียวกันกับ 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 เธรด | 119 539 677 | 3.3G, 88720517 NGRAMS |
| GLM | 65 459 102 | 3.3G, 88720517 NGRAMS |
ปัญหาการกำหนดเวลาน่าจะทำให้ประสิทธิภาพต่ำในกรณีเธรด 16 ตัว GLM บรรลุประสิทธิภาพที่ดีขึ้น 2 เท่าเมื่อเทียบกับค่าใช้จ่ายของฮาร์ดแวร์ ($ 1,000 สำหรับ GPU เทียบกับ $ 3500 สำหรับ CPU)